From b4c8c2bd749910dae6d6d535fba97342b6ab2002 Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Sat, 17 Oct 2026 06:27:26 +0000 Subject: [PATCH 01/14] Add documented APRS JSONL corpus and strict expected-failure runner --- .github/workflows/aprs-vectors.yml | 25 + packages/aprs/pyproject.toml | 11 + packages/aprs/tests/generate_vectors.py | 655 +++++++++ packages/aprs/tests/packets/test_corpus.py | 140 ++ .../aprs/tests/test_vector_corpus_contract.py | 140 ++ packages/aprs/tests/vector_gaps.json | 1205 +++++++++++++++++ packages/aprs/tests/vectors/README.md | 109 ++ packages/aprs/tests/vectors/bad.jsonl | 125 ++ packages/aprs/tests/vectors/cmp.jsonl | 122 ++ packages/aprs/tests/vectors/ext.jsonl | 50 + packages/aprs/tests/vectors/fap.jsonl | 517 +++++++ packages/aprs/tests/vectors/hdr.jsonl | 51 + packages/aprs/tests/vectors/mic.jsonl | 265 ++++ packages/aprs/tests/vectors/msg.jsonl | 45 + packages/aprs/tests/vectors/net.jsonl | 15 + packages/aprs/tests/vectors/nme.jsonl | 36 + packages/aprs/tests/vectors/obj.jsonl | 53 + packages/aprs/tests/vectors/oth.jsonl | 38 + packages/aprs/tests/vectors/pos.jsonl | 68 + packages/aprs/tests/vectors/qry.jsonl | 20 + packages/aprs/tests/vectors/seq.jsonl | 23 + packages/aprs/tests/vectors/sta.jsonl | 29 + packages/aprs/tests/vectors/tim.jsonl | 20 + packages/aprs/tests/vectors/tlm.jsonl | 18 + packages/aprs/tests/vectors/wx.jsonl | 66 + 25 files changed, 3846 insertions(+) create mode 100644 .github/workflows/aprs-vectors.yml create mode 100644 packages/aprs/tests/generate_vectors.py create mode 100644 packages/aprs/tests/packets/test_corpus.py create mode 100644 packages/aprs/tests/test_vector_corpus_contract.py create mode 100644 packages/aprs/tests/vector_gaps.json create mode 100644 packages/aprs/tests/vectors/README.md create mode 100644 packages/aprs/tests/vectors/bad.jsonl create mode 100644 packages/aprs/tests/vectors/cmp.jsonl create mode 100644 packages/aprs/tests/vectors/ext.jsonl create mode 100644 packages/aprs/tests/vectors/fap.jsonl create mode 100644 packages/aprs/tests/vectors/hdr.jsonl create mode 100644 packages/aprs/tests/vectors/mic.jsonl create mode 100644 packages/aprs/tests/vectors/msg.jsonl create mode 100644 packages/aprs/tests/vectors/net.jsonl create mode 100644 packages/aprs/tests/vectors/nme.jsonl create mode 100644 packages/aprs/tests/vectors/obj.jsonl create mode 100644 packages/aprs/tests/vectors/oth.jsonl create mode 100644 packages/aprs/tests/vectors/pos.jsonl create mode 100644 packages/aprs/tests/vectors/qry.jsonl create mode 100644 packages/aprs/tests/vectors/seq.jsonl create mode 100644 packages/aprs/tests/vectors/sta.jsonl create mode 100644 packages/aprs/tests/vectors/tim.jsonl create mode 100644 packages/aprs/tests/vectors/tlm.jsonl create mode 100644 packages/aprs/tests/vectors/wx.jsonl diff --git a/.github/workflows/aprs-vectors.yml b/.github/workflows/aprs-vectors.yml new file mode 100644 index 0000000..c9833b0 --- /dev/null +++ b/.github/workflows/aprs-vectors.yml @@ -0,0 +1,25 @@ +name: APRS vector corpus +on: + push: + branches: [scaffold/aprs-vectors] + pull_request: + paths: + - "packages/aprs/**" + - ".github/workflows/aprs-vectors.yml" +jobs: + source-and-wheel: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + - run: python -m pip install 'pytest>=8,<10' build + - name: Test source including every JSONL vector + run: PYTHONPATH=packages/aprs/src python -m pytest packages/aprs/tests -q + - name: Build and install wheel + run: | + python -m build --wheel packages/aprs + python -m pip install --no-deps packages/aprs/dist/*.whl + - name: Test installed wheel including every JSONL vector + run: python -m pytest packages/aprs/tests -q diff --git a/packages/aprs/pyproject.toml b/packages/aprs/pyproject.toml index 2642337..bf74e83 100644 --- a/packages/aprs/pyproject.toml +++ b/packages/aprs/pyproject.toml @@ -79,3 +79,14 @@ explicit_package_bases = true # hamkit, as first-party keeps import order the same whichever directory ruff # runs from; otherwise package-dir and repository-root runs disagree. known-first-party = ["hamkit", "generate_json_reference", "model_examples", "vector_adapter"] + +[tool.hatch.envs.default] +extra-dependencies = ["pytest>=8,<10"] + +[tool.hatch.envs.default.scripts] +test = "pytest {args:tests}" + +[tool.pytest.ini_options] +testpaths = ["tests"] +pythonpath = ["tests"] +xfail_strict = true diff --git a/packages/aprs/tests/generate_vectors.py b/packages/aprs/tests/generate_vectors.py new file mode 100644 index 0000000..2263d77 --- /dev/null +++ b/packages/aprs/tests/generate_vectors.py @@ -0,0 +1,655 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Translate documented assertions, never parser output, into JSON projections. + +Run from any directory. Unmapped assertions remain verbatim beside the projection; +they are deliberately not claimed as tested public-model fields. +""" +from __future__ import annotations + +import copy +import json +import re +from collections import Counter +from pathlib import Path +from typing import Any + +ROOT = Path(__file__).parents[1] +SOURCE = ROOT / "docs/APRS_COMPLIANCE_VECTORS.md" +DEST = ROOT / "tests/vectors" +JSON = dict[str, Any] + + +def leaf_paths(value: Any, path: str = "$") -> set[str]: + if isinstance(value, dict) and value: + return { + leaf + for key, child in value.items() + for leaf in leaf_paths(child, f"{path}.{key}") + } + return {path} + + +class Tracked(dict[str, Any]): + """Record source fields consulted by the explicit projection mapping.""" + + def __init__(self, value: JSON, used: set[str], path: str = "$"): + super().__init__(value) + self.used, self.path = used, path + + def __getitem__(self, key: str) -> Any: + value = super().__getitem__(key) + path = f"{self.path}.{key}" + if isinstance(value, dict): + return Tracked(value, self.used, path) + self.used.add(path) + return value + + def get(self, key: str, default: Any = None) -> Any: + try: + return self[key] + except KeyError: + return default + + +def select(data: JSON, names: str) -> JSON: + return {k: data[k] for k in names.split() if k in data} + + +def header(data: JSON) -> JSON: + return { + "source": data["source"], + "destination": data["destination"], + "path": [ + {"address": h["address"], "repeated": h["repeated_marker"]} + for h in data["path"] + ], + } + + +def stamp(data: JSON) -> JSON: + kind = { + "DHM": "dhm_local" + if str(data.get("zone")).lower() in ("local", "sender-local") + else "dhm_utc", + "HMS": "hms_utc", + "MDHM": "mdhm_utc", + }[data["format"]] + return {"kind": kind, **select(data, "day month hour minute second")} + + +def symbol(data: JSON) -> JSON: + return {"table_id": data["table_id_raw"], "code": data["code"]} + + +def telemetry(data: JSON) -> JSON: + result = select(data, "sequence sequence_raw") + if "analog_raw" in data: + result["analog"] = data["analog_raw"] + if "digital_bits" in data: + result["digital"] = [c == "1" for c in data["digital_bits"]] + result["encoding"] = data.get("encoding", "classic").replace("-", "_") + return result + + +def weather(data: JSON) -> JSON: + result = select(data, "software_code device_code") + units = { + "wind_direction_deg": ("wind_direction", "degrees"), + "wind_speed_mph": ("wind_speed", "mph"), + "wind_speed_knots": ("wind_speed", "knots"), + "gust_mph": ("gust", "mph"), + "temperature_f": ("temperature", "fahrenheit"), + "humidity_percent": ("humidity", "percent"), + "pressure_hpa": ("pressure", "hPa"), + "rain_1h_mm": ("rain_1h", "mm"), + "rain_24h_mm": ("rain_24h", "mm"), + "rain_since_midnight_mm": ("rain_since_midnight", "mm"), + "snow_24h_inches": ("snow_24h", "inches"), + "luminosity_w_m2": ("luminosity", "W/m2"), + "rain_counter_raw": ("rain_counter", "count"), + } + for key, (name, unit) in units.items(): + if key in data: + result[name] = {"value": data[key], "unit": unit} + if "wind_speed_raw" in data: + result["wind_speed"] = { + "value": data["wind_speed_raw"], + "unit": "disputed_knots_or_mph", + } + return result + + +def translate(e: JSON) -> JSON: + """A subset in to_json_dict(include_defaults=True) shape; no model/parser calls.""" + result: JSON = {"type": "packet"} + if "header" in e: + result["header"] = header(e["header"]) + kind = e.get("kind") + aliases = { + "third-party": "third_party", + "telemetry-definition": "telemetry_definition", + "user-defined": "user_defined", + "invalid-or-test": "invalid", + "raw-weather": "raw_weather", + "legacy-grid-beacon": "maidenhead", + "non-aprs-beacon": "beacon", + "unsupported-or-reserved": "opaque", + "announcement": "bulletin", + "group-bulletin": "bulletin", + "nws-bulletin": "nws_bulletin", + } + if kind is None: + return result + p: JSON = {"type": aliases.get(kind, kind)} + if kind == "weather" and "position" in e: + p["type"] = "position" + if e.get("format") == "mic-e": + p["type"] = "mic_e" + for name in ("comment", "messaging", "name", "alive"): + if name in e: + p[name] = e[name] + if "position" in e and kind != "nmea": + pos = e["position"] + p.update(select(pos, "latitude_deg longitude_deg")) + if "ambiguity_digits" in pos: + p["ambiguity"] = pos["ambiguity_digits"] + if "symbol" in e: + p["symbol"] = symbol(e["symbol"]) + if "timestamp" in e: + p["timestamp"] = stamp(e["timestamp"]) + if "compression" in e: + c = e["compression"] + p["compression"] = select(c, "fix nmea_source origin_code") + if "csT_raw" in c: + p["compression"]["raw"] = c["csT_raw"] + if "mic_e" in e: + m = e["mic_e"] + names = { + "Off Duty": "off_duty", + "En Route": "en_route", + "In Service": "in_service", + "Returning": "returning", + "Committed": "committed", + "Special": "special", + "Priority": "priority", + "Emergency": "emergency", + } + if m.get("position_comment") in names: + p["message"] = names[m["position_comment"]] + if m.get("dti_fix") in ("current", "old"): + p["fix"] = m["dti_fix"] + ext: JSON = {} + for old, new, fields in ( + ("motion", "motion", "course_deg speed_knots course_code speed_code zero_pair"), + ( + "phg", + "phg", + "power_w height_haat_ft gain_dbi directivity_deg raw rate_per_hour", + ), + ("radio_range", "range", "miles"), + ("df_signal", "signal", "s_units height_haat_ft gain_db directivity_deg"), + ( + "df_bearing", + "bearing", + "bearing_deg hits_code range_code quality_code usable accuracy_less_than_deg", + ), + ( + "area", + "area", + "shape_code color_code latitude_offset_code longitude_offset_code", + ), + ("signpost", "signpost", "label"), + ): + if old in e: + ext[new] = select(e[old], fields) + if "altitude" in e and kind != "nmea": + alt = e["altitude"] + unit = "feet" if "feet" in alt else "meters" + enc = {"comment": "feet_extension", "mic-e": "mic_e"}.get( + alt.get("encoding"), alt.get("encoding", "feet_extension") + ) + ext["altitude"] = { + "measurement": {"value": alt[unit], "unit": unit}, + "encoding": enc, + } + if "weather" in e: + if kind == "weather" and "position" not in e: + p.update(weather(e["weather"])) + else: + if kind == "weather": + p["type"] = "position" + ext["weather"] = weather(e["weather"]) + if "telemetry" in e: + if kind == "telemetry": + p.update(telemetry(e["telemetry"])) + else: + ext["telemetry"] = telemetry(e["telemetry"]) + if ext: + p["extensions"] = ext + if kind == "status": + p["text"] = e["status_text"] + if "grid" in e: + p["grid"] = {"locator": e["grid"]["locator"]} + if "beam_heading_deg" in e: + p["beam"] = {"heading_deg": e["beam_heading_deg"], "erp_w": e["erp_w"]} + if "message" in e and kind not in ("query", "telemetry-definition"): + m = e["message"] + p.update(select(m, "addressee text message_id")) + if m.get("subtype") in ("ack", "rej"): + p = { + "type": "acknowledgment", + "addressee": m["addressee"], + "message_id": m.get("ack_id", m.get("reject_id")), + "rejected": m["subtype"] == "rej", + } + if m.get("reply_ack_capable"): + p["reply_ack"] = m.get("reply_ack_id") or "" + if m.get("auto_answer"): + p = { + "type": "auto_answer", + "addressee": m["addressee"], + "text": m["text"][3:], + "previous_ack": m.get("reply_ack_id"), + } + if p["type"] == "nws_bulletin": + p["reference_id"] = p.pop("message_id", None) + if p["type"] == "bulletin": + p = { + "type": "bulletin", + "identifier": m["bulletin_id"], + "text": m["text"], + "group": m.get("group"), + } + if kind == "query": + q = e["query"] + p["name"] = q["type"] + if "message" in e: + p["addressee"] = e["message"]["addressee"] + if "radius_miles" in q: + p["footprint"] = { + "center": select(q, "latitude_deg longitude_deg"), + "radius_miles": q["radius_miles"], + } + if kind == "capabilities": + p["tokens"] = e["capabilities"] + if kind == "telemetry-definition": + d = e["telemetry_definition"] + p["addressee"] = d["target"] + tags = { + "PARM": "telemetry_parameters", + "UNIT": "telemetry_units", + "EQNS": "telemetry_equations", + "BITS": "telemetry_bits", + } + definition: JSON = {"type": tags[d["type"]]} + if "channels" in d: + definition["channels"] = d["channels"] + if "coefficients_abc" in d: + definition["coefficients"] = [ + dict(zip(("a", "b", "c"), x)) for x in d["coefficients_abc"] + ] + if "sense_bits" in d: + definition.update( + sense=[x == "1" for x in d["sense_bits"]], + project_title=d["project_title"], + ) + p["definition"] = definition + if kind == "third-party": + p["packet"] = translate(e["inner"]) + p["packet"].pop("type", None) + if kind in ("user-defined", "invalid-or-test"): + p.update(select(e, "user_id user_type data")) + if kind == "unsupported-or-reserved": + p["information"] = e.get("dti", "") + e.get("raw_data", "") + if "storm" in e: + storm = e["storm"] + p.setdefault("extensions", {})["storm"] = { + "kind": storm["type"], + **select( + storm, + "predicted sustained_wind_knots peak_gust_knots central_pressure_hpa hurricane_radius_nm tropical_storm_radius_nm whole_gale_radius_nm", + ), + } + if kind == "nmea" and "nmea" in e: + n = e["nmea"] + sentence: JSON = {"type": n["sentence"][2:].lower()} + renames = { + "time_utc_raw": "time_utc", + "date_ddmmyy_raw": "date_ddmmyy", + "dgps_age_raw": "dgps_age", + "dgps_station_raw": "dgps_station", + } + sentence.update({v: n[k] for k, v in renames.items() if k in n}) + sentence.update( + select( + n, + "fix_quality fix_status satellites hdop geoid_separation_m magnetic_variation_direction", + ) + ) + if n.get("magnetic_variation_raw"): + sentence["magnetic_variation"] = float(n["magnetic_variation_raw"]) + if "position" in e: + sentence["coordinates"] = select( + e["position"], "latitude_deg longitude_deg" + ) + if "waypoint" in e: + sentence.update( + name=e["waypoint"]["name"], + coordinates=select(e["waypoint"], "latitude_deg longitude_deg"), + ) + if "altitude" in e: + sentence["altitude_msl_m"] = e["altitude"]["meters"] + if "motion" in e: + sentence.update(select(e["motion"], "speed_knots course_deg")) + p.pop("extensions", None) + p.update( + sentence=sentence, + metadata={ + "talker": n["sentence"][:2], + **select(n, "checksum_supplied checksum_valid fields_raw"), + }, + ) + if "position_usable" in e: + p["position_usable"] = e["position_usable"] + if kind == "raw-weather": + formats = {"Ultimeter 2000": "ultimeter_2000", "Ultimeter II": "ultimeter_ii"} + p.update(information=e["raw_payload"]) + if e["vendor"] in formats: + p["format"] = formats[e["vendor"]] + if kind == "legacy-grid-beacon": + p["grid"] = {"locator": e["grid"]["locator"]} + if kind == "non-aprs-beacon" and "raw_text" in e: + p["text"] = e["raw_text"] + if "nts" in e: + # The source explicitly identifies the NTS record and its positional fields. + n = e["nts"] + fields = n["fields"] + schemas = { + "N#": ( + "nts_header", + "number precedence handling originator check place time date", + ), + "NA": ("nts_address", ""), + "NP": ("nts_phone", "number"), + "NT": ("nts_text", "text"), + "NS": ("nts_signature", "text"), + "NR": ("nts_routing", "received_from received_at sent_to sent_at"), + } + if n["record_type"] in {"N1", "N2", "N3", "N4", "N5", "N6"}: + schemas[n["record_type"]] = ("nts_text", "text") + if n["record_type"] in schemas: + tag, field_names = schemas[n["record_type"]] + record = {"type": tag, **dict(zip(field_names.split(), fields))} + if tag == "nts_address": + record["lines"] = fields + if tag == "nts_text": + record["line"] = int(n["record_type"][1]) + p = { + "type": "radiogram", + "addressee": e["message"]["addressee"], + "record": record, + "message_id": e["message"].get("message_id"), + } + result["payload"] = p + return result + + +def fap_projection(e: JSON, packet: str) -> JSON: + """Map only explicit captured FAP values; no implicit defaults or guessed units.""" + f, h = e["fap_fields"], e["fap_header"] + normal: JSON = { + "header": { + "source": h["source"], + "destination": h["destination"], + "path": [ + {"address": x["Call"], "repeated_marker": x["WasDigied"]} + for x in (h.get("digipeaters") or []) + ], + } + } + normal["kind"] = { + "location": "position", + "wx": "weather", + "beacon": "non-aprs-beacon", + "telemetry-message": "telemetry-definition", + }.get(f.get("Type"), f.get("Type")) + + renames = { + "Format": "format", + "Comment": "comment", + "Messaging": "messaging", + "Alive": "alive", + "Status": "status_text", + } + normal.update({v: f[k] for k, v in renames.items() if f.get(k) is not None}) + name_key = "ObjectName" if normal["kind"] == "object" else "ItemName" + if f.get(name_key): + normal["name"] = f[name_key] + if f.get("Latitude") is not None or f.get("Longitude") is not None: + normal["position"] = { + v: f[k] + for k, v in { + "Latitude": "latitude_deg", + "Longitude": "longitude_deg", + "PosAmbiguity": "ambiguity_digits", + }.items() + if f.get(k) is not None + } + if f.get("SymbolTable") is not None and f.get("SymbolCode") is not None: + normal["symbol"] = {"table_id_raw": f["SymbolTable"], "code": f["SymbolCode"]} + if f.get("Message") is not None: + m = f["Message"] + normal["message"] = { + "addressee": m["Destination"], + "text": m["Text"], + "message_id": m.get("ID") or None, + } + if (m.get("AckID") or m.get("RejID")) and not m.get("Text"): + normal["message"].update( + subtype="rej" if m.get("RejID") else "ack", + ack_id=m.get("AckID") or m.get("RejID"), + ) + elif m.get("AckID"): + normal["message"].update(reply_ack_capable=True, reply_ack_id=m["AckID"]) + # FAP has distinct units/options; unsupported fields stay in source_expected. + if normal.get("kind") == "query": + normal.pop("kind") + if normal.get("kind") == "status" and "status_text" not in normal: + normal.pop("kind") + if normal.get("kind") == "capabilities": + # The source packet supplies token order; the captured map supplies values. + capabilities = f["Capabilities"] + names = [ + token.split("=", 1)[0] for token in packet.partition(":")[2][1:].split(",") + ] + normal["capabilities"] = [ + {"name": name, "value": capabilities[name] or None} for name in names + ] + if normal.get("kind") == "telemetry-definition": + text = normal["message"]["text"] + name, _, rest = text.partition(".") + name = name.upper() + values = rest.split(",") + definition: JSON = {"target": normal["message"]["addressee"], "type": name} + if name in ("PARM", "UNIT"): + definition["channels"] = [v or None for v in values] + elif name == "EQNS" and len(values) % 3 == 0: + definition["coefficients_abc"] = [ + [float(x) for x in values[i : i + 3]] for i in range(0, len(values), 3) + ] + elif name == "BITS": + definition.update(sense_bits=values[0], project_title=",".join(values[1:])) + normal["telemetry_definition"] = definition + result = translate(normal) + payload = result.get("payload", {}) + if payload.get("type") not in ( + "position", + "mic_e", + "object", + "item", + "weather", + "telemetry", + "nmea", + ): + payload.pop("comment", None) + payload.pop("messaging", None) + payload.pop("alive", None) + for source, target, factor in ( + ("Speed", "speed_knots", 1 / 1.852), + ("Course", "course_deg", 1), + ): + if f.get(source) is not None: + payload.setdefault("extensions", {}).setdefault("motion", {})[target] = ( + f[source] * factor + ) + if f.get("RadioRange") is not None: + payload.setdefault("extensions", {})["range"] = { + "miles": f["RadioRange"] / 1.609344 + } + if f.get("TelemetryData") is not None: + t = f["TelemetryData"] + mapped = {"sequence": t["Seq"], "analog": t["Vals"]} + if t["Bits"]: + mapped["digital"] = [x == "1" for x in t["Bits"]] + if payload.get("type") == "telemetry": + payload.update(mapped) + else: + payload.setdefault("extensions", {})["telemetry"] = mapped + if f.get("PHG") and re.fullmatch(r"[0-9][0-9:;][0-9][0-8][0-9]?", f["PHG"]): + code = f["PHG"] + phg: JSON = { + "power_w": int(code[0]) ** 2, + "height_haat_ft": 10 * 2 ** (ord(code[1]) - 48), + "gain_dbi": int(code[2]), + "directivity_deg": int(code[3]) * 45 if code[3] != "0" else None, + } + if len(code) == 5: + phg["rate_per_hour"] = int(code[4]) + payload.setdefault("extensions", {})["phg"] = phg + if f.get("Altitude") is not None and f.get("Format") in ( + "uncompressed", + "compressed", + "mic-e", + ): + encoding = { + "uncompressed": "feet_extension", + "compressed": "compressed", + "mic-e": "mic_e", + }[f["Format"]] + unit = "meters" if encoding == "mic_e" else "feet" + altitude = f["Altitude"] if unit == "meters" else f["Altitude"] / 0.3048 + payload.setdefault("extensions", {})["altitude"] = { + "encoding": encoding, + "measurement": {"unit": unit, "value": altitude}, + } + if f.get("Wx") is not None: + wx = f["Wx"] + mapped_wx = {} + for key, target, unit in ( + ("WindDirection", "wind_direction", "degrees"), + ("WindSpeed", "wind_speed", "m/s"), + ("WindGust", "gust", "m/s"), + ("Temp", "temperature", "celsius"), + ("Humidity", "humidity", "percent"), + ("Pressure", "pressure", "hPa"), + ("Rain1h", "rain_1h", "mm"), + ("Rain24h", "rain_24h", "mm"), + ("RainMidnight", "rain_since_midnight", "mm"), + ("Snow24h", "snow_24h", "mm"), + ("Luminosity", "luminosity", "W/m2"), + ): + if wx.get(key) is not None: + mapped_wx[target] = {"value": wx[key], "unit": unit} + if payload.get("type") == "weather": + payload.update(mapped_wx) + else: + payload.setdefault("extensions", {})["weather"] = mapped_wx + if f.get("Format") == "nmea": + # The snapshot does not capture individual NMEA sentence fields; do not + # invent them from FAP's flattened station fix. Assert the public family. + result["payload"] = {"type": "nmea"} + return result + + +def records() -> list[JSON]: + result = [] + defaults: JSON = {} + for block in re.findall(r"```json\n(.*?)\n```", SOURCE.read_text(), re.DOTALL): + case = json.loads(block) + if "fap_field_defaults" in case: + defaults = case["fap_field_defaults"] + if "id" not in case: + continue + if case["profile"] == "compatibility-fap": + case["expected"]["fap_fields"] = { + **defaults, + **case["expected"]["fap_fields"], + } + steps = case.get("steps", [case]) + for step in steps: + row = {k: case[k] for k in ("id", "title", "profile", "source")} + if "steps" in case: + row["id"] += f".{step['step']}" + row["sequence"] = case["id"] + row["packet"] = step["packet"] + raw = row["packet"].encode("latin-1") + assert len(raw) == step["packet_length_bytes"], row["id"] + if "packet_hex" in step: + assert raw == bytes.fromhex(step["packet_hex"]) + row["outcome"] = case.get("outcome", "stateful") + row["source_expected"] = copy.deepcopy(step["expected"]) + if "options" in case: + row["options"] = case["options"] + if case.get("note"): + row["note"] = case["note"] + if "steps" in case: + row["expected"] = None + row[ + "unresolved" + ] = "State assertions are not decoded packet outputs; a packet-model expectation needs separate review." + elif row["outcome"].startswith("reject"): + row["expected"] = {"original_wire": row["packet"]} + row[ + "rejection" + ] = "Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source." + else: + used: set[str] = set() + tracked = Tracked(step["expected"], used) + row["expected"] = ( + fap_projection(tracked, row["packet"]) + if row["profile"] == "compatibility-fap" + else translate(tracked) + ) + row["unmapped"] = sorted(leaf_paths(step["expected"]) - used) + if "payload" not in row["expected"]: + row[ + "unresolved" + ] = "Source has no mapped payload expectation; retain the original assertions for adapter completion." + result.append(row) + gaps = json.loads((ROOT / "tests/vector_gaps.json").read_text()) + by_id = {r["id"]: r for r in result} + for group in gaps: + for identity, allowed in group["cases"].items(): + assert "gap" not in by_id[identity], identity + by_id[identity]["gap"] = {"kind": group["kind"], "reason": group["reason"]} + if allowed: + by_id[identity]["gap"]["allowed_actual"] = allowed + return result + + +def main() -> None: + rows = records() + for family in sorted({r["id"].split("-")[0] for r in rows}): + selected = [r for r in rows if r["id"].startswith(family + "-")] + (DEST / (family.lower() + ".jsonl")).write_text( + "".join( + json.dumps(r, ensure_ascii=True, separators=(",", ":")) + "\n" + for r in selected + ) + ) + print(dict(Counter(r["id"].split("-")[0] for r in rows))) + + +if __name__ == "__main__": + main() diff --git a/packages/aprs/tests/packets/test_corpus.py b/packages/aprs/tests/packets/test_corpus.py new file mode 100644 index 0000000..9c109ac --- /dev/null +++ b/packages/aprs/tests/packets/test_corpus.py @@ -0,0 +1,140 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Every JSONL row is independently collected; only reviewed gaps may xfail.""" +from __future__ import annotations + +import json +import math +from pathlib import Path +from typing import Any + +import pytest + +from hamkit import aprs + +DIRECTORY = Path(__file__).parents[1] / "vectors" + + +class KnownGap(AssertionError): + """A specifically enumerated missing capability, never a generic mismatch.""" + + +def differences(actual: Any, expected: Any, path: str = "$") -> list[str]: + if isinstance(expected, dict): + if not isinstance(actual, dict): + return [f"{path}: expected object, got {actual!r}"] + return [ + error + for key, value in expected.items() + for error in ( + [f"{path}.{key}: missing"] + if key not in actual + else differences(actual[key], value, f"{path}.{key}") + ) + ] + if isinstance(expected, list): + if not isinstance(actual, list) or len(actual) != len(expected): + return [f"{path}: expected {expected!r}, got {actual!r}"] + return [ + error + for i, value in enumerate(expected) + for error in differences(actual[i], value, f"{path}[{i}]") + ] + if isinstance(expected, float) and isinstance(actual, (float, int)): + tolerance = 1e-8 if path.endswith(("latitude_deg", "longitude_deg")) else 1e-6 + if math.isclose(actual, expected, rel_tol=1e-9, abs_tol=tolerance): + return [] + if type(actual) is not type(expected) and isinstance(actual, bool) != isinstance( + expected, bool + ): + return [f"{path}: expected {expected!r}, got {actual!r}"] + return ( + [] if actual == expected else [f"{path}: expected {expected!r}, got {actual!r}"] + ) + + +def load() -> list[Any]: + params = [] + for file in sorted(DIRECTORY.glob("*.jsonl")): + for line, text in enumerate(file.read_text().splitlines(), 1): + row = json.loads(text) + label = f"{file.name}:{line}:{row['id']}" + marks = [] + if row.get("gap"): + marks = [ + pytest.mark.xfail( + strict=True, raises=KnownGap, reason=row["gap"]["reason"] + ) + ] + params.append(pytest.param(row, id=label, marks=marks)) + assert params, "no vectors found" + return params + + +def check(row: dict[str, Any]) -> None: + raw = row["packet"].encode("latin-1") + packet = aprs.parse_packet( + raw, + profile="rf" + if row["profile"] == "strict-envelope" or row.get("options", {}).get("ax25") + else "monitor", + ) + actual = aprs.to_json_dict(packet, include_defaults=True) + assert actual["original_wire"] == row["packet"], "original bytes changed" + if row.get("unresolved"): + raise KnownGap(row["unresolved"]) + expected = row["expected"] + errors = differences(actual, expected) + if row.get("rejection"): + rejected = isinstance(packet, aprs.Malformed) or any( + d.code == "nonconforming" for d in packet.diagnostics + ) + if not rejected: + errors.append("$: expected malformed/nonconforming input") + if not errors: + return + gap = row.get("gap", {}) + if ( + gap.get("kind") == "opaque" + and isinstance(packet, aprs.Packet) + and isinstance(packet.payload, aprs.Opaque) + ): + if "header" in expected: + assert not differences( + actual["header"], expected["header"] + ), "opaque header changed" + assert ( + packet.payload.information == raw.partition(b":")[2] + ), "opaque bytes changed" + assert packet.payload.diagnostic is not None + assert ( + gap["reason"] + == "Unimplemented decoding: " + packet.payload.diagnostic.message + ), "different unsupported capability" + raise KnownGap(gap["reason"] + "\n" + "\n".join(errors)) + if gap.get("kind") == "fields": + allowed = gap["allowed_actual"] + paths = {error.split(": ", 1)[0] for error in errors} + if paths <= allowed.keys(): + for path in paths: + if path == "$": + assert allowed[path] == "rejection" and isinstance( + packet, aprs.Packet + ) + continue + current: Any = actual + for key in path[2:].split("."): + if not isinstance(current, dict) or key not in current: + current = {"missing": True} + break + current = current[key] + assert ( + current == allowed[path] + ), f"{path}: changed beyond the documented gap" + raise KnownGap(gap["reason"] + "\n" + "\n".join(errors)) + raise AssertionError("\n".join(errors)) + + +@pytest.mark.parametrize("row", load()) +def test_documented_vector(row: dict[str, Any]) -> None: + check(row) diff --git a/packages/aprs/tests/test_vector_corpus_contract.py b/packages/aprs/tests/test_vector_corpus_contract.py new file mode 100644 index 0000000..eb87912 --- /dev/null +++ b/packages/aprs/tests/test_vector_corpus_contract.py @@ -0,0 +1,140 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Fixture provenance and regression guards, independent of codec progress.""" +from __future__ import annotations + +import json +from dataclasses import replace +from pathlib import Path +from typing import Any + +import pytest +from generate_vectors import records +from packets.test_corpus import KnownGap, check, differences + +from hamkit import aprs as a + +VECTORS = Path(__file__).parent / "vectors" + + +def all_rows() -> list[dict[str, Any]]: + return [ + json.loads(line) + for file in sorted(VECTORS.glob("*.jsonl")) + for line in file.read_text().splitlines() + ] + + +def test_complete_source_extraction() -> None: + rows = all_rows() + assert len(list(VECTORS.glob("*.jsonl"))) == 18 + assert len(rows) == 1561 # 1,538 individual packets + 23 sequence occurrences. + assert len({row["id"] for row in rows}) == len(rows) + assert sorted(rows, key=lambda r: r["id"]) == sorted( + records(), key=lambda r: r["id"] + ) + assert len({row.get("sequence", row["id"]) for row in rows}) == 1545 + + +def test_comparator_checks_missing_null_lists_and_tolerances() -> None: + assert differences({}, {"x": None}) + assert differences([1], [1, 2]) + assert differences(True, 1) + assert differences(1.0, 1.001, "$.latitude_deg") + assert not differences(1.0, 1.0000000001, "$.latitude_deg") + + +def test_known_gap_does_not_hide_an_unrelated_regression( + monkeypatch: pytest.MonkeyPatch, +) -> None: + row = next(r for r in all_rows() if r["id"] == "EXT-039") + packet = a.parse_packet(row["packet"].encode("latin-1")) + assert isinstance(packet, a.Packet) and isinstance(packet.payload, a.Position) + with pytest.raises(KnownGap): + check(row) + bad = replace(packet, payload=replace(packet.payload, latitude_deg=0)) + monkeypatch.setattr(a, "parse_packet", lambda *args, **kwargs: bad) + with pytest.raises(AssertionError) as error: + check(row) + assert not isinstance(error.value, KnownGap) + + +def test_completed_gap_returns_success_for_strict_xpass( + monkeypatch: pytest.MonkeyPatch, +) -> None: + row = next(r for r in all_rows() if r["id"] == "EXT-039") + packet = a.parse_packet(row["packet"].encode("latin-1")) + assert isinstance(packet, a.Packet) and isinstance(packet.payload, a.Position) + extensions = packet.payload.extensions + assert extensions.bearing is not None + bearing = replace(extensions.bearing, usable=True, accuracy_less_than_deg=240) + fixed = replace( + packet, + payload=replace( + packet.payload, extensions=replace(extensions, bearing=bearing) + ), + ) + monkeypatch.setattr(a, "parse_packet", lambda *args, **kwargs: fixed) + check(row) # The parametrized test's strict mark turns this into XPASS/failure. + + +def test_parser_exception_is_not_an_expected_failure( + monkeypatch: pytest.MonkeyPatch, +) -> None: + row = next(r for r in all_rows() if r["id"] == "MIC-001") + + def broken(*args: Any, **kwargs: Any) -> Any: + raise RuntimeError("unexpected parser crash") + + monkeypatch.setattr(a, "parse_packet", broken) + with pytest.raises(RuntimeError, match="unexpected parser crash"): + check(row) + + +def test_projection_keys_belong_to_public_json_models() -> None: + """Catch adapter typos even when an entire codec is currently unimplemented.""" + import dataclasses + import types + from typing import Union, get_args, get_origin, get_type_hints + + from hamkit.aprs._json import _SCHEMAS + + tags = {schema.tag: schema.model for schema in _SCHEMAS} + + def validate(value: Any, annotation: Any, path: str) -> None: + if value is None: + return + model: Any + origin, args = get_origin(annotation), get_args(annotation) + if isinstance(value, dict): + if "type" in value: + assert value["type"] in tags, (path, value["type"]) + model = tags[value["type"]] + elif origin in (Union, types.UnionType): + models = [ + t + for t in args + if isinstance(t, type) and dataclasses.is_dataclass(t) + ] + if len(models) != 1: + return + model = models[0] + else: + model = annotation + if not isinstance(model, type) or not dataclasses.is_dataclass(model): + return + hints = get_type_hints(model) + assert set(value) <= hints.keys() | {"type"}, ( + path, + set(value) - hints.keys(), + ) + for key, child in value.items(): + if key != "type": + validate(child, hints[key], f"{path}.{key}") + elif isinstance(value, list) and origin is tuple: + for child in value: + validate(child, args[0], path + "[]") + + for row in all_rows(): + if row["expected"] is not None: + validate(row["expected"], a.Packet, row["id"]) diff --git a/packages/aprs/tests/vector_gaps.json b/packages/aprs/tests/vector_gaps.json new file mode 100644 index 0000000..bc3d276 --- /dev/null +++ b/packages/aprs/tests/vector_gaps.json @@ -0,0 +1,1205 @@ +[ + { + "kind": "opaque", + "reason": "Unimplemented decoding: position ambiguity is not implemented", + "cases": { + "BAD-024": {}, + "BAD-025": {}, + "FAP-460": {}, + "FAP-461": {}, + "FAP-463": {}, + "FAP-507": {}, + "FAP-508": {}, + "FAP-509": {}, + "FAP-510": {}, + "POS-014": {}, + "POS-015": {}, + "POS-016": {}, + "POS-017": {}, + "POS-018": {}, + "POS-019": {}, + "POS-020": {}, + "POS-021": {}, + "POS-022": {}, + "POS-023": {}, + "POS-024": {}, + "POS-025": {} + } + }, + { + "kind": "opaque", + "reason": "Unimplemented decoding: compressed positions", + "cases": { + "BAD-042": {}, + "BAD-043": {}, + "BAD-044": {}, + "BAD-045": {}, + "BAD-046": {}, + "BAD-047": {}, + "BAD-048": {}, + "BAD-049": {}, + "BAD-050": {}, + "BAD-051": {}, + "BAD-052": {}, + "BAD-053": {}, + "BAD-054": {}, + "BAD-055": {}, + "BAD-056": {}, + "BAD-057": {}, + "BAD-058": {}, + "BAD-059": {}, + "BAD-065": {}, + "BAD-066": {}, + "BAD-118": {}, + "BAD-119": {}, + "BAD-120": {}, + "CMP-001": {}, + "CMP-002": {}, + "CMP-003": {}, + "CMP-004": {}, + "CMP-005": {}, + "CMP-006": {}, + "CMP-007": {}, + "CMP-008": {}, + "CMP-009": {}, + "CMP-010": {}, + "CMP-011": {}, + "CMP-012": {}, + "CMP-013": {}, + "CMP-014": {}, + "CMP-015": {}, + "CMP-016": {}, + "CMP-017": {}, + "CMP-018": {}, + "CMP-019": {}, + "CMP-020": {}, + "CMP-021": {}, + "CMP-022": {}, + "CMP-023": {}, + "CMP-024": {}, + "CMP-025": {}, + "CMP-026": {}, + "CMP-027": {}, + "CMP-028": {}, + "CMP-029": {}, + "CMP-030": {}, + "CMP-031": {}, + "CMP-032": {}, + "CMP-033": {}, + "CMP-034": {}, + "CMP-035": {}, + "CMP-036": {}, + "CMP-037": {}, + "CMP-038": {}, + "CMP-039": {}, + "CMP-040": {}, + "CMP-041": {}, + "CMP-042": {}, + "CMP-043": {}, + "CMP-044": {}, + "CMP-045": {}, + "CMP-046": {}, + "CMP-047": {}, + "CMP-048": {}, + "CMP-049": {}, + "CMP-050": {}, + "CMP-051": {}, + "CMP-052": {}, + "CMP-053": {}, + "CMP-054": {}, + "CMP-055": {}, + "CMP-056": {}, + "CMP-057": {}, + "CMP-058": {}, + "CMP-059": {}, + "CMP-060": {}, + "CMP-061": {}, + "CMP-062": {}, + "CMP-063": {}, + "CMP-064": {}, + "CMP-065": {}, + "CMP-066": {}, + "CMP-067": {}, + "CMP-068": {}, + "CMP-069": {}, + "CMP-070": {}, + "CMP-071": {}, + "CMP-072": {}, + "CMP-073": {}, + "CMP-074": {}, + "CMP-075": {}, + "CMP-076": {}, + "CMP-077": {}, + "CMP-078": {}, + "CMP-079": {}, + "CMP-080": {}, + "CMP-081": {}, + "CMP-082": {}, + "CMP-083": {}, + "CMP-084": {}, + "CMP-085": {}, + "CMP-086": {}, + "CMP-087": {}, + "CMP-088": {}, + "CMP-089": {}, + "CMP-090": {}, + "CMP-091": {}, + "CMP-092": {}, + "CMP-093": {}, + "CMP-094": {}, + "CMP-095": {}, + "CMP-096": {}, + "CMP-097": {}, + "CMP-098": {}, + "CMP-099": {}, + "CMP-100": {}, + "CMP-101": {}, + "CMP-102": {}, + "CMP-103": {}, + "CMP-104": {}, + "CMP-105": {}, + "CMP-106": {}, + "CMP-107": {}, + "CMP-108": {}, + "CMP-109": {}, + "CMP-110": {}, + "CMP-111": {}, + "CMP-112": {}, + "CMP-113": {}, + "CMP-114": {}, + "CMP-115": {}, + "CMP-116": {}, + "CMP-117": {}, + "CMP-118": {}, + "CMP-119": {}, + "CMP-120": {}, + "CMP-121": {}, + "CMP-122": {}, + "FAP-020": {}, + "FAP-029": {}, + "FAP-030": {}, + "FAP-031": {}, + "FAP-032": {}, + "FAP-033": {}, + "FAP-035": {}, + "FAP-416": {}, + "FAP-419": {}, + "WX-051": {} + } + }, + { + "kind": "opaque", + "reason": "Unimplemented decoding: compressed or unsupported position format", + "cases": { + "BAD-060": {}, + "BAD-061": {} + } + }, + { + "kind": "opaque", + "reason": "Unimplemented decoding: Mic-E destination and information decoding", + "cases": { + "BAD-067": {}, + "BAD-068": {}, + "BAD-069": {}, + "BAD-070": {}, + "BAD-071": {}, + "BAD-072": {}, + "BAD-074": {}, + "BAD-075": {}, + "BAD-076": {}, + "BAD-077": {}, + "BAD-078": {}, + "BAD-079": {}, + "BAD-080": {}, + "BAD-081": {}, + "FAP-005": {}, + "FAP-036": {}, + "FAP-345": {}, + "FAP-346": {}, + "FAP-347": {}, + "FAP-348": {}, + "FAP-349": {}, + "FAP-350": {}, + "FAP-351": {}, + "FAP-352": {}, + "FAP-353": {}, + "FAP-354": {}, + "FAP-355": {}, + "FAP-356": {}, + "FAP-428": {}, + "FAP-429": {}, + "FAP-430": {}, + "FAP-431": {}, + "MIC-001": {}, + "MIC-002": {}, + "MIC-003": {}, + "MIC-004": {}, + "MIC-005": {}, + "MIC-006": {}, + "MIC-007": {}, + "MIC-008": {}, + "MIC-009": {}, + "MIC-010": {}, + "MIC-011": {}, + "MIC-012": {}, + "MIC-013": {}, + "MIC-014": {}, + "MIC-015": {}, + "MIC-016": {}, + "MIC-017": {}, + "MIC-018": {}, + "MIC-019": {}, + "MIC-020": {}, + "MIC-021": {}, + "MIC-022": {}, + "MIC-023": {}, + "MIC-024": {}, + "MIC-025": {}, + "MIC-026": {}, + "MIC-027": {}, + "MIC-028": {}, + "MIC-029": {}, + "MIC-030": {}, + "MIC-031": {}, + "MIC-032": {}, + "MIC-033": {}, + "MIC-034": {}, + "MIC-035": {}, + "MIC-036": {}, + "MIC-037": {}, + "MIC-038": {}, + "MIC-039": {}, + "MIC-040": {}, + "MIC-041": {}, + "MIC-042": {}, + "MIC-043": {}, + "MIC-044": {}, + "MIC-045": {}, + "MIC-046": {}, + "MIC-047": {}, + "MIC-048": {}, + "MIC-049": {}, + "MIC-050": {}, + "MIC-051": {}, + "MIC-052": {}, + "MIC-053": {}, + "MIC-054": {}, + "MIC-055": {}, + "MIC-056": {}, + "MIC-057": {}, + "MIC-058": {}, + "MIC-059": {}, + "MIC-060": {}, + "MIC-061": {}, + "MIC-062": {}, + "MIC-063": {}, + "MIC-064": {}, + "MIC-065": {}, + "MIC-066": {}, + "MIC-067": {}, + "MIC-068": {}, + "MIC-069": {}, + "MIC-070": {}, + "MIC-071": {}, + "MIC-072": {}, + "MIC-073": {}, + "MIC-074": {}, + "MIC-075": {}, + "MIC-076": {}, + "MIC-077": {}, + "MIC-078": {}, + "MIC-079": {}, + "MIC-080": {}, + "MIC-081": {}, + "MIC-082": {}, + "MIC-083": {}, + "MIC-084": {}, + "MIC-085": {}, + "MIC-086": {}, + "MIC-087": {}, + "MIC-088": {}, + "MIC-089": {}, + "MIC-090": {}, + "MIC-091": {}, + "MIC-092": {}, + "MIC-093": {}, + "MIC-094": {}, + "MIC-095": {}, + "MIC-096": {}, + "MIC-097": {}, + "MIC-098": {}, + "MIC-099": {}, + "MIC-100": {}, + "MIC-101": {}, + "MIC-102": {}, + "MIC-103": {}, + "MIC-104": {}, + "MIC-105": {}, + "MIC-106": {}, + "MIC-107": {}, + "MIC-108": {}, + "MIC-109": {}, + "MIC-110": {}, + "MIC-111": {}, + "MIC-112": {}, + "MIC-113": {}, + "MIC-114": {}, + "MIC-115": {}, + "MIC-116": {}, + "MIC-117": {}, + "MIC-118": {}, + "MIC-119": {}, + "MIC-120": {}, + "MIC-121": {}, + "MIC-122": {}, + "MIC-123": {}, + "MIC-124": {}, + "MIC-125": {}, + "MIC-126": {}, + "MIC-127": {}, + "MIC-128": {}, + "MIC-129": {}, + "MIC-130": {}, + "MIC-131": {}, + "MIC-132": {}, + "MIC-133": {}, + "MIC-134": {}, + "MIC-135": {}, + "MIC-136": {}, + "MIC-137": {}, + "MIC-138": {}, + "MIC-139": {}, + "MIC-140": {}, + "MIC-141": {}, + "MIC-142": {}, + "MIC-143": {}, + "MIC-144": {}, + "MIC-145": {}, + "MIC-146": {}, + "MIC-147": {}, + "MIC-148": {}, + "MIC-149": {}, + "MIC-150": {}, + "MIC-151": {}, + "MIC-152": {}, + "MIC-153": {}, + "MIC-154": {}, + "MIC-155": {}, + "MIC-156": {}, + "MIC-157": {}, + "MIC-158": {}, + "MIC-159": {}, + "MIC-160": {}, + "MIC-161": {}, + "MIC-162": {}, + "MIC-163": {}, + "MIC-164": {}, + "MIC-165": {}, + "MIC-166": {}, + "MIC-167": {}, + "MIC-168": {}, + "MIC-169": {}, + "MIC-170": {}, + "MIC-171": {}, + "MIC-172": {}, + "MIC-173": {}, + "MIC-174": {}, + "MIC-175": {}, + "MIC-176": {}, + "MIC-177": {}, + "MIC-178": {}, + "MIC-179": {}, + "MIC-180": {}, + "MIC-181": {}, + "MIC-182": {}, + "MIC-183": {}, + "MIC-184": {}, + "MIC-185": {}, + "MIC-186": {}, + "MIC-187": {}, + "MIC-188": {}, + "MIC-189": {}, + "MIC-190": {}, + "MIC-191": {}, + "MIC-192": {}, + "MIC-193": {}, + "MIC-194": {}, + "MIC-195": {}, + "MIC-196": {}, + "MIC-197": {}, + "MIC-198": {}, + "MIC-199": {}, + "MIC-200": {}, + "MIC-201": {}, + "MIC-202": {}, + "MIC-203": {}, + "MIC-204": {}, + "MIC-205": {}, + "MIC-206": {}, + "MIC-207": {}, + "MIC-208": {}, + "MIC-209": {}, + "MIC-210": {}, + "MIC-211": {}, + "MIC-212": {}, + "MIC-213": {}, + "MIC-214": {}, + "MIC-215": {}, + "MIC-216": {}, + "MIC-217": {}, + "MIC-218": {}, + "MIC-219": {}, + "MIC-220": {}, + "MIC-221": {}, + "MIC-222": {}, + "MIC-223": {}, + "MIC-224": {}, + "MIC-225": {}, + "MIC-226": {}, + "MIC-227": {}, + "MIC-228": {}, + "MIC-229": {}, + "MIC-230": {}, + "MIC-231": {}, + "MIC-232": {}, + "MIC-233": {}, + "MIC-234": {}, + "MIC-235": {}, + "MIC-236": {}, + "MIC-237": {}, + "MIC-238": {}, + "MIC-239": {}, + "MIC-240": {}, + "MIC-241": {}, + "MIC-242": {}, + "MIC-243": {}, + "MIC-244": {}, + "MIC-245": {}, + "MIC-246": {}, + "MIC-247": {}, + "MIC-248": {}, + "MIC-249": {}, + "MIC-250": {}, + "MIC-251": {}, + "MIC-252": {}, + "MIC-253": {}, + "MIC-254": {}, + "MIC-255": {}, + "MIC-256": {}, + "MIC-257": {}, + "MIC-258": {}, + "MIC-259": {}, + "MIC-260": {}, + "MIC-261": {}, + "MIC-262": {}, + "MIC-263": {}, + "MIC-264": {}, + "MIC-265": {} + } + }, + { + "kind": "opaque", + "reason": "Unimplemented decoding: unsupported information field family", + "cases": { + "BAD-082": {}, + "BAD-083": {}, + "BAD-084": {}, + "BAD-085": {}, + "BAD-086": {}, + "BAD-087": {}, + "BAD-088": {}, + "BAD-098": {}, + "BAD-099": {}, + "BAD-100": {}, + "BAD-101": {}, + "BAD-102": {}, + "BAD-103": {}, + "BAD-104": {}, + "BAD-105": {}, + "BAD-106": {}, + "BAD-107": {}, + "BAD-108": {}, + "FAP-003": {}, + "FAP-004": {}, + "FAP-019": {}, + "FAP-023": {}, + "FAP-024": {}, + "FAP-025": {}, + "FAP-026": {}, + "FAP-027": {}, + "FAP-028": {}, + "FAP-044": {}, + "FAP-047": {}, + "FAP-051": {}, + "FAP-053": {}, + "FAP-054": {}, + "FAP-055": {}, + "FAP-056": {}, + "FAP-057": {}, + "FAP-058": {}, + "FAP-059": {}, + "FAP-060": {}, + "FAP-061": {}, + "FAP-357": {}, + "FAP-358": {}, + "FAP-359": {}, + "FAP-360": {}, + "FAP-361": {}, + "FAP-362": {}, + "FAP-363": {}, + "FAP-364": {}, + "FAP-365": {}, + "FAP-366": {}, + "FAP-367": {}, + "FAP-368": {}, + "FAP-369": {}, + "FAP-370": {}, + "FAP-371": {}, + "FAP-372": {}, + "FAP-373": {}, + "FAP-374": {}, + "FAP-375": {}, + "FAP-376": {}, + "FAP-377": {}, + "FAP-378": {}, + "FAP-379": {}, + "FAP-380": {}, + "FAP-381": {}, + "FAP-382": {}, + "FAP-383": {}, + "FAP-384": {}, + "FAP-385": {}, + "FAP-386": {}, + "FAP-387": {}, + "FAP-388": {}, + "FAP-389": {}, + "FAP-390": {}, + "FAP-391": {}, + "FAP-392": {}, + "FAP-393": {}, + "FAP-394": {}, + "FAP-395": {}, + "FAP-396": {}, + "FAP-397": {}, + "FAP-398": {}, + "FAP-399": {}, + "FAP-400": {}, + "FAP-401": {}, + "FAP-402": {}, + "FAP-403": {}, + "FAP-404": {}, + "FAP-405": {}, + "FAP-406": {}, + "FAP-407": {}, + "FAP-408": {}, + "FAP-409": {}, + "FAP-410": {}, + "FAP-411": {}, + "FAP-412": {}, + "FAP-432": {}, + "FAP-433": {}, + "FAP-434": {}, + "FAP-435": {}, + "FAP-436": {}, + "FAP-437": {}, + "FAP-438": {}, + "FAP-455": {}, + "FAP-462": {}, + "FAP-464": {}, + "FAP-480": {}, + "FAP-481": {}, + "FAP-482": {}, + "FAP-483": {}, + "FAP-484": {}, + "FAP-485": {}, + "FAP-486": {}, + "FAP-487": {}, + "FAP-488": {}, + "FAP-489": {}, + "FAP-490": {}, + "FAP-495": {}, + "FAP-496": {}, + "FAP-500": {}, + "NME-001": {}, + "NME-002": {}, + "NME-003": {}, + "NME-004": {}, + "NME-005": {}, + "NME-006": {}, + "NME-007": {}, + "NME-008": {}, + "NME-009": {}, + "NME-010": {}, + "NME-011": {}, + "NME-012": {}, + "NME-013": {}, + "NME-014": {}, + "NME-015": {}, + "NME-016": {}, + "NME-017": {}, + "NME-018": {}, + "NME-019": {}, + "NME-020": {}, + "NME-022": {}, + "NME-023": {}, + "NME-024": {}, + "NME-025": {}, + "NME-026": {}, + "NME-027": {}, + "NME-028": {}, + "NME-029": {}, + "NME-030": {}, + "NME-031": {}, + "NME-032": {}, + "NME-033": {}, + "NME-034": {}, + "NME-035": {}, + "NME-036": {}, + "OBJ-001": {}, + "OBJ-002": {}, + "OBJ-003": {}, + "OBJ-004": {}, + "OBJ-005": {}, + "OBJ-006": {}, + "OBJ-007": {}, + "OBJ-008": {}, + "OBJ-009": {}, + "OBJ-010": {}, + "OBJ-011": {}, + "OBJ-012": {}, + "OBJ-013": {}, + "OBJ-014": {}, + "OBJ-015": {}, + "OBJ-016": {}, + "OBJ-017": {}, + "OBJ-018": {}, + "OBJ-019": {}, + "OBJ-020": {}, + "OBJ-021": {}, + "OBJ-022": {}, + "OBJ-023": {}, + "OBJ-024": {}, + "OBJ-025": {}, + "OBJ-026": {}, + "OBJ-027": {}, + "OBJ-028": {}, + "OBJ-029": {}, + "OBJ-030": {}, + "OBJ-031": {}, + "OBJ-032": {}, + "OBJ-033": {}, + "OBJ-034": {}, + "OBJ-035": {}, + "OBJ-036": {}, + "OBJ-037": {}, + "OBJ-038": {}, + "OBJ-039": {}, + "OBJ-040": {}, + "OBJ-041": {}, + "OBJ-042": {}, + "OBJ-043": {}, + "OBJ-044": {}, + "OBJ-045": {}, + "OBJ-046": {}, + "OBJ-047": {}, + "OBJ-048": {}, + "OBJ-049": {}, + "OBJ-050": {}, + "OBJ-051": {}, + "OBJ-052": {}, + "OBJ-053": {}, + "OTH-009": {}, + "OTH-010": {}, + "OTH-011": {}, + "OTH-012": {}, + "OTH-013": {}, + "OTH-033": {}, + "OTH-034": {}, + "OTH-035": {}, + "OTH-036": {}, + "OTH-037": {}, + "QRY-001": {}, + "QRY-002": {}, + "QRY-003": {}, + "QRY-004": {}, + "QRY-005": {}, + "QRY-006": {}, + "QRY-018": {}, + "QRY-019": {}, + "QRY-020": {}, + "TIM-008": {}, + "TIM-009": {}, + "TIM-010": {}, + "TLM-001": {}, + "TLM-002": {}, + "TLM-003": {}, + "TLM-004": {}, + "TLM-005": {}, + "TLM-006": {}, + "TLM-007": {}, + "TLM-008": {}, + "TLM-009": {}, + "WX-001": {}, + "WX-006": {}, + "WX-007": {}, + "WX-008": {}, + "WX-009": {}, + "WX-010": {}, + "WX-011": {}, + "WX-012": {}, + "WX-013": {}, + "WX-014": {}, + "WX-015": {}, + "WX-016": {}, + "WX-017": {}, + "WX-018": {}, + "WX-019": {}, + "WX-020": {}, + "WX-021": {}, + "WX-022": {}, + "WX-023": {}, + "WX-024": {}, + "WX-025": {}, + "WX-026": {}, + "WX-027": {}, + "WX-028": {}, + "WX-029": {}, + "WX-030": {}, + "WX-031": {}, + "WX-032": {}, + "WX-033": {}, + "WX-034": {}, + "WX-035": {}, + "WX-036": {}, + "WX-037": {}, + "WX-038": {}, + "WX-039": {}, + "WX-040": {}, + "WX-044": {}, + "WX-045": {}, + "WX-046": {}, + "WX-052": {}, + "WX-053": {}, + "WX-054": {}, + "WX-055": {}, + "WX-056": {}, + "WX-057": {}, + "WX-058": {}, + "WX-059": {}, + "WX-063": {}, + "WX-064": {}, + "WX-065": {}, + "WX-066": {}, + "FAP-413": {} + } + }, + { + "kind": "fields", + "reason": "DF usability/accuracy annotations are not decoded from quality codes.", + "cases": { + "EXT-038": { + "$.payload.extensions.bearing.usable": null + }, + "EXT-039": { + "$.payload.extensions.bearing.usable": null, + "$.payload.extensions.bearing.accuracy_less_than_deg": null + }, + "EXT-040": { + "$.payload.extensions.bearing.usable": null, + "$.payload.extensions.bearing.accuracy_less_than_deg": null + }, + "EXT-041": { + "$.payload.extensions.bearing.usable": null, + "$.payload.extensions.bearing.accuracy_less_than_deg": null + }, + "EXT-042": { + "$.payload.extensions.bearing.usable": null, + "$.payload.extensions.bearing.accuracy_less_than_deg": null + }, + "EXT-043": { + "$.payload.extensions.bearing.usable": null, + "$.payload.extensions.bearing.accuracy_less_than_deg": null + }, + "EXT-044": { + "$.payload.extensions.bearing.usable": null, + "$.payload.extensions.bearing.accuracy_less_than_deg": null + }, + "EXT-045": { + "$.payload.extensions.bearing.usable": null, + "$.payload.extensions.bearing.accuracy_less_than_deg": null + }, + "EXT-046": { + "$.payload.extensions.bearing.usable": null, + "$.payload.extensions.bearing.accuracy_less_than_deg": null + }, + "EXT-047": { + "$.payload.extensions.bearing.usable": null, + "$.payload.extensions.bearing.accuracy_less_than_deg": null + }, + "EXT-049": { + "$.payload.extensions.bearing.accuracy_less_than_deg": null + } + } + }, + { + "kind": "fields", + "reason": "Explicit FAP compatibility difference; source defaults/options or text normalization differ.", + "cases": { + "FAP-001": { + "$.payload.comment": "6/- Lnx APRS Srv - sez. ARI VR EST", + "$.payload.extensions.phg.rate_per_hour": null + }, + "FAP-002": { + "$": "rejection" + }, + "FAP-006": { + "$.payload.comment": "/RELAY,WIDE, OH7LZB testing" + }, + "FAP-013": { + "$.header.source": "oh7lzb" + }, + "FAP-016": { + "$.header.destination": "aprs" + }, + "FAP-017": { + "$": "rejection" + }, + "FAP-022": { + "$": "rejection" + }, + "FAP-446": { + "$.payload.comment": " {UIV32N}" + }, + "FAP-447": { + "$.payload.comment": " {UIV32N}" + }, + "FAP-452": { + "$.payload.comment": " {UIV32N}" + }, + "FAP-454": { + "$.type": "malformed", + "$.header": { + "missing": true + }, + "$.payload": { + "missing": true + } + }, + "FAP-456": { + "$.type": "malformed", + "$.header": { + "missing": true + }, + "$.payload": { + "missing": true + } + }, + "FAP-458": { + "$.payload.comment": "/RELAY,WIDE, OH2AP Jarvenpaa" + }, + "FAP-465": { + "$.payload.comment": "Home of KA0RID", + "$.payload.extensions.weather": null + }, + "FAP-466": { + "$.payload.comment": " RELAY,WIDE, OH2AP Jarvenpaa \t " + }, + "FAP-467": { + "$.payload.comment": "5/RELAY,WIDE, OH2AP Jarvenpaa", + "$.payload.extensions.phg.rate_per_hour": null + }, + "FAP-468": { + "$.payload.comment": "Z/some comment" + }, + "FAP-471": { + "$.payload.comment": " 13.8V 15CYB1RUS-9 Mobile Tracker" + }, + "FAP-472": { + "$.payload.comment": " 13.8V 15CYB1RUS-9 Mobile Tracker" + }, + "FAP-499": { + "$.payload.comment": "/RELAY,WIDE, OH2AP Jarvenpaa" + }, + "FAP-501": { + "$.payload.comment": "/Testing" + }, + "FAP-444": { + "$.payload.type": "message", + "$.payload.definition": { + "missing": true + } + } + } + }, + { + "kind": "opaque", + "reason": "Unimplemented decoding: !DAO! precision and datum extension", + "cases": { + "FAP-034": {}, + "FAP-422": {}, + "FAP-448": {}, + "FAP-449": {}, + "FAP-450": {}, + "FAP-451": {}, + "FAP-453": {}, + "FAP-511": {}, + "FAP-512": {}, + "FAP-513": {} + } + }, + { + "kind": "opaque", + "reason": "Unimplemented decoding: base91 comment telemetry", + "cases": { + "FAP-415": {}, + "FAP-417": {}, + "FAP-418": {}, + "FAP-420": {}, + "FAP-421": {}, + "FAP-457": {} + } + }, + { + "kind": "opaque", + "reason": "Unimplemented decoding: positioned weather report", + "cases": { + "FAP-474": {}, + "FAP-475": {}, + "FAP-476": {}, + "FAP-477": {}, + "FAP-478": {}, + "FAP-479": {}, + "FAP-497": {}, + "WX-002": {}, + "WX-003": {}, + "WX-004": {}, + "WX-005": {}, + "WX-041": {}, + "WX-042": {}, + "WX-043": {}, + "WX-047": {}, + "WX-048": {}, + "WX-060": {}, + "WX-061": {}, + "WX-062": {} + } + }, + { + "kind": "opaque", + "reason": "Unimplemented decoding: vendor raw-weather interpretation", + "cases": { + "FAP-491": {}, + "FAP-492": {}, + "FAP-493": {}, + "FAP-494": {}, + "OTH-001": {}, + "OTH-002": {}, + "OTH-003": {}, + "OTH-004": {} + } + }, + { + "kind": "opaque", + "reason": "Unimplemented decoding: specialized message semantics", + "cases": { + "MSG-026": {}, + "MSG-027": {}, + "MSG-028": {}, + "MSG-029": {}, + "MSG-030": {}, + "MSG-031": {}, + "MSG-032": {}, + "MSG-033": {}, + "MSG-034": {}, + "MSG-035": {}, + "MSG-036": {}, + "MSG-037": {}, + "MSG-038": {}, + "MSG-039": {}, + "MSG-040": {}, + "MSG-041": {}, + "MSG-042": {}, + "MSG-043": {}, + "MSG-044": {}, + "MSG-045": {}, + "QRY-007": {}, + "QRY-008": {}, + "QRY-009": {}, + "QRY-010": {}, + "QRY-011": {}, + "QRY-012": {}, + "QRY-013": {}, + "QRY-014": {}, + "TLM-010": {}, + "TLM-011": {}, + "TLM-012": {}, + "TLM-013": {}, + "TLM-014": {}, + "TLM-015": {}, + "TLM-016": {}, + "TLM-017": {}, + "TLM-018": {}, + "FAP-439": {}, + "FAP-440": {}, + "FAP-441": {}, + "FAP-442": {}, + "FAP-443": {} + } + }, + { + "kind": "fields", + "reason": "AEA framing adapter is not implemented.", + "cases": { + "NET-014": { + "$.type": "malformed", + "$.header": { + "missing": true + }, + "$.payload": { + "missing": true + } + } + } + }, + { + "kind": "unresolved", + "reason": "State assertions are not decoded packet outputs; a packet-model expectation needs separate review.", + "cases": { + "SEQ-001.1": {}, + "SEQ-001.2": {}, + "SEQ-001.3": {}, + "SEQ-001.4": {}, + "SEQ-002.1": {}, + "SEQ-002.2": {}, + "SEQ-002.3": {}, + "SEQ-003.1": {}, + "SEQ-003.2": {}, + "SEQ-003.3": {}, + "SEQ-004.1": {}, + "SEQ-004.2": {}, + "SEQ-004.3": {}, + "SEQ-004.4": {}, + "SEQ-004.5": {}, + "SEQ-005.1": {}, + "SEQ-005.2": {}, + "SEQ-005.3": {}, + "SEQ-006.1": {}, + "SEQ-006.2": {}, + "SEQ-006.3": {}, + "SEQ-007.1": {}, + "SEQ-007.2": {} + } + }, + { + "kind": "fields", + "reason": "Status grid/beam suffix decoding is not implemented; suffix remains text.", + "cases": { + "STA-008": { + "$.payload.symbol": null, + "$.payload.text": "IO91/- Home", + "$.payload.grid": null + }, + "STA-009": { + "$.payload.symbol": null, + "$.payload.text": "IO91SX/- Home", + "$.payload.grid": null + }, + "STA-010": { + "$.payload.symbol": null, + "$.payload.text": "io91sx/- Home", + "$.payload.grid": null + }, + "STA-011": { + "$.payload.symbol": null, + "$.payload.text": "AA00AA/- Home", + "$.payload.grid": null + }, + "STA-012": { + "$.payload.symbol": null, + "$.payload.text": "RR99XX/- Home", + "$.payload.grid": null + }, + "STA-013": { + "$.payload.text": "Ready^01", + "$.payload.beam": null + }, + "STA-014": { + "$.payload.text": "Ready^0:", + "$.payload.beam": null + }, + "STA-015": { + "$.payload.text": "Ready^0K", + "$.payload.beam": null + }, + "STA-016": { + "$.payload.text": "Ready^91", + "$.payload.beam": null + }, + "STA-017": { + "$.payload.text": "Ready^9:", + "$.payload.beam": null + }, + "STA-018": { + "$.payload.text": "Ready^9K", + "$.payload.beam": null + }, + "STA-019": { + "$.payload.text": "Ready^A1", + "$.payload.beam": null + }, + "STA-020": { + "$.payload.text": "Ready^A:", + "$.payload.beam": null + }, + "STA-021": { + "$.payload.text": "Ready^AK", + "$.payload.beam": null + }, + "STA-022": { + "$.payload.text": "Ready^B1", + "$.payload.beam": null + }, + "STA-023": { + "$.payload.text": "Ready^B:", + "$.payload.beam": null + }, + "STA-024": { + "$.payload.text": "Ready^BK", + "$.payload.beam": null + }, + "STA-025": { + "$.payload.text": "Ready^Z1", + "$.payload.beam": null + }, + "STA-026": { + "$.payload.text": "Ready^Z:", + "$.payload.beam": null + }, + "STA-027": { + "$.payload.text": "Ready^ZK", + "$.payload.beam": null + }, + "STA-028": { + "$.payload.symbol": null, + "$.payload.text": "IO91SX/- ^B7", + "$.payload.grid": null, + "$.payload.beam": null + } + } + }, + { + "kind": "fields", + "reason": "Alternate W weather symbol is not decoded as weather.", + "cases": { + "WX-049": { + "$.payload.comment": "g005t077", + "$.payload.extensions.weather": null + }, + "WX-050": { + "$.payload.comment": "g005t077", + "$.payload.extensions.weather": null + } + } + } +] diff --git a/packages/aprs/tests/vectors/README.md b/packages/aprs/tests/vectors/README.md new file mode 100644 index 0000000..c0b1881 --- /dev/null +++ b/packages/aprs/tests/vectors/README.md @@ -0,0 +1,109 @@ +# Documented APRS vectors + +These 18 JSONL files contain every numbered case from +[`APRS_COMPLIANCE_VECTORS.md`](../../docs/APRS_COMPLIANCE_VECTORS.md), edition 1: +**1,538 individual packets plus 23 packet occurrences from seven sequences**. +Sequence IDs have a `.step` suffix; all 1,545 original case IDs are represented. +No packet bytes were dropped, trimmed or replaced. Malformed envelopes (including +empty input) and the explicitly labeled AEA example remain malformed/AEA; adding +an envelope would destroy the test. All ordinary inputs already have full TNC2 +envelopes. Existing synthetic envelopes in the source supplements are retained; +this conversion adds none. + +## Run and regenerate + +From the repository root, after installing the package and `pytest>=8,<10`: + +```sh +PYTHONPATH=packages/aprs/src python -m pytest packages/aprs/tests -q +python packages/aprs/tests/generate_vectors.py +``` + +`hatch run test` also works from `packages/aprs`. The existing unittest suite +still works, but **pytest is required to collect the JSONL corpus**. The APRS +vector workflow runs the entire suite against source and a freshly installed +wheel. Tests and vectors are repository resources, not runtime package data. + +## Row contract + +- `id`, `title`, `profile`, `source`, and optional `note` preserve provenance. +- `packet` is a **Latin-1 byte carrier**, not text to UTF-8 encode. Use + `packet.encode("latin-1")`. JSON escapes preserve every control/high-bit byte. + The generator checks source byte lengths and any supplied hex before writing. +- `source_expected` retains the complete original semantic assertions. FAP's + documented top-level defaults are expanded before overlaying each snapshot. + FAP options remain separate; only `ax25` maps to the existing RF profile. +- `expected` is an independently translated **subset of the public + `to_json_dict(..., include_defaults=True)` representation**. An absent key + makes no assertion; an explicit null does. This matches the source contract, + which permits additional correctly decoded fields. These are not snapshots of + current parser output. The generator imports no APRS parser or models. +- `unmapped` lists source paths not consumed by the public-JSON projection. + Their values remain in `source_expected`; passing the projection does **not** + claim those assertions pass. Examples include derived grid/range views, + routing/state policies, source-only encoding evidence, FAP recovery flags, + and flattened FAP NMEA properties without sentence-level counterparts. +- For rejection cases, `expected` asserts lossless original bytes and `rejection` + requires either `Malformed` or a `Packet` with nonconforming diagnostics. + Source error classes and partial results remain intact. We do not invent + exception wording or equate an unsupported opaque packet with rejection. +- `gap` identifies an explicitly reviewed expected failure. Its allowed-current + values are failure guards, **not desired decoded outputs**. + +No decoder implementation is used to generate desired expectations. Field and +unit renames, conversions, and FAP compatibility mappings are explicit in +`generate_vectors.py`. The integrity tests verify exact regeneration, unique IDs, +section/row counts, and that projected keys belong to public JSON models, even +for codecs that cannot yet decode their packets. Coordinate tolerance is 1e-8 +degrees; other floating measurements use 1e-6 absolute / 1e-9 relative tolerance. + +## Expected failures and unresolved assertions + +`vector_gaps.json` is a reviewed manifest tied to individual IDs. It is **not +automatically refreshed from test failures**. Every JSONL file and every line +gets a separate pytest case labeled `filename:line:vector-id`. + +Only `KnownGap` can xfail. A missing codec must still return the specific recorded +unsupported diagnostic, preserve opaque bytes, and preserve the expected header. +A field gap must match the listed field paths and current values; a different +field mismatch or a parser exception fails normally. Passing a marked case is a +strict XPASS failure, prompting removal/review of that annotation. Harness tests +exercise both regression detection and completed-gap behavior. + +The 23 sequence occurrences are explicitly unresolved (`expected: null`): their +source expectations are station state transitions, not packet model outputs. +They are collected and byte-preservation checked, then reported as expected +failures with the state-model reason. They need an independently reviewed packet +expectation/state adapter before they can become semantic passes; they are not +invented passing placeholders. No other packet entries are omitted from the +behavioral projections. Existing planned codec gaps, source compatibility +choices, and adapter/state work are distinct from parser regressions. + +At creation on base `16b711c`, the 1,561 corpus cases yield **631 passes and 930 +expected failures**, including the 23 unresolved state occurrences. These are +projection results, not a claim of complete compliance with every source field. +The complete suite includes the pre-existing tests and harness checks. + +| File | Rows | Pass | Expected failure | +| --------- | ---: | ---: | ---------------: | +| hdr.jsonl | 51 | 51 | 0 | +| pos.jsonl | 68 | 56 | 12 | +| tim.jsonl | 20 | 17 | 3 | +| ext.jsonl | 50 | 39 | 11 | +| cmp.jsonl | 122 | 0 | 122 | +| mic.jsonl | 265 | 0 | 265 | +| obj.jsonl | 53 | 0 | 53 | +| wx.jsonl | 66 | 0 | 66 | +| tlm.jsonl | 18 | 0 | 18 | +| msg.jsonl | 45 | 25 | 20 | +| qry.jsonl | 20 | 3 | 17 | +| sta.jsonl | 29 | 8 | 21 | +| nme.jsonl | 36 | 1 | 35 | +| net.jsonl | 15 | 14 | 1 | +| oth.jsonl | 38 | 24 | 14 | +| bad.jsonl | 125 | 66 | 59 | +| seq.jsonl | 23 | 0 | 23 | +| fap.jsonl | 517 | 327 | 190 | + +FAP fixtures preserve the pinned upstream provenance and licensing attribution +in the source document's final section. No FAP implementation is imported. diff --git a/packages/aprs/tests/vectors/bad.jsonl b/packages/aprs/tests/vectors/bad.jsonl new file mode 100644 index 0000000..56b422f --- /dev/null +++ b/packages/aprs/tests/vectors/bad.jsonl @@ -0,0 +1,125 @@ +{"id":"BAD-001","title":"empty-input","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":"","outcome":"reject-envelope","source_expected":{"error_class":"empty-input"},"expected":{"original_wire":""},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-002","title":"missing-payload-separator","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":"N0CALL>APRS","outcome":"reject-envelope","source_expected":{"error_class":"missing-payload-separator"},"expected":{"original_wire":"N0CALL>APRS"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-003","title":"missing-address-separator","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":"N0CALL:>Ready","outcome":"reject-envelope","source_expected":{"error_class":"missing-address-separator"},"expected":{"original_wire":"N0CALL:>Ready"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-004","title":"empty-source","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":">APRS:>Ready","outcome":"reject-envelope","source_expected":{"error_class":"empty-source"},"expected":{"original_wire":">APRS:>Ready"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-005","title":"empty-destination","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":"N0CALL>:>Ready","outcome":"reject-envelope","source_expected":{"error_class":"empty-destination"},"expected":{"original_wire":"N0CALL>:>Ready"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-006","title":"empty-information","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":"N0CALL>APRS:","outcome":"reject-envelope","source_expected":{"error_class":"empty-information"},"expected":{"original_wire":"N0CALL>APRS:"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-007","title":"empty-path-component","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":"N0CALL>APRS,,WIDE2-1:>Ready","outcome":"reject-envelope","source_expected":{"error_class":"empty-path-component"},"expected":{"original_wire":"N0CALL>APRS,,WIDE2-1:>Ready"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-008","title":"empty-path-address","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":"N0CALL>APRS,*:>Ready","outcome":"reject-envelope","source_expected":{"error_class":"empty-path-address"},"expected":{"original_wire":"N0CALL>APRS,*:>Ready"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-009","title":"rf-path-too-long","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":"N0CALL>APRS,D1,D2,D3,D4,D5,D6,D7,D8,D9:>Ready","outcome":"reject-envelope","source_expected":{"error_class":"rf-path-too-long"},"expected":{"original_wire":"N0CALL>APRS,D1,D2,D3,D4,D5,D6,D7,D8,D9:>Ready"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-010","title":"rf-ssid-out-of-range","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":"N0CALL-16>APRS:>Ready","outcome":"reject-envelope","source_expected":{"error_class":"rf-ssid-out-of-range"},"expected":{"original_wire":"N0CALL-16>APRS:>Ready"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-011","title":"rf-ssid-out-of-range","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":"N0CALL>APRS-16:>Ready","outcome":"reject-envelope","source_expected":{"error_class":"rf-ssid-out-of-range"},"expected":{"original_wire":"N0CALL>APRS-16:>Ready"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-012","title":"rf-callsign-too-long","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":"TOOLONG>APRS:>Ready","outcome":"reject-envelope","source_expected":{"error_class":"rf-callsign-too-long"},"expected":{"original_wire":"TOOLONG>APRS:>Ready"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-013","title":"rf-callsign-character","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":"N0_CALL>APRS:>Ready","outcome":"reject-envelope","source_expected":{"error_class":"rf-callsign-character"},"expected":{"original_wire":"N0_CALL>APRS:>Ready"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-014","title":"extra-address-separator","profile":"strict-envelope","source":"APRS101 pp. 12,84; FAP header tests","packet":"N0CALL>>APRS:>Ready","outcome":"reject-envelope","source_expected":{"error_class":"extra-address-separator"},"expected":{"original_wire":"N0CALL>>APRS:>Ready"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-015","title":"latitude-out-of-range","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!9100.00N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"latitude-out-of-range","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!9100.00N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-016","title":"beyond-north-pole","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!9000.01N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"beyond-north-pole","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!9000.01N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-017","title":"latitude-minutes-60","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!4960.00N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"latitude-minutes-60","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4960.00N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-018","title":"longitude-out-of-range","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!4903.50N/18100.00W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"longitude-out-of-range","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/18100.00W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-019","title":"beyond-antimeridian","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!4903.50N/18000.01W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"beyond-antimeridian","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/18000.01W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-020","title":"longitude-minutes-60","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!4903.50N/07260.00W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"longitude-minutes-60","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/07260.00W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-021","title":"bad-latitude-hemisphere","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!4903.50X/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"bad-latitude-hemisphere","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50X/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-022","title":"bad-longitude-hemisphere","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!4903.50N/07201.75X-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"bad-longitude-hemisphere","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/07201.75X-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-023","title":"bad-decimal-separator","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!4903,50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"bad-decimal-separator","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903,50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-024","title":"interior-ambiguity-hole","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!490 .50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"interior-ambiguity-hole","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!490 .50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"BAD-025","title":"longitude-more-ambiguous-than-latitude","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!4903.50N/07201. W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"longitude-more-ambiguous-than-latitude","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/07201. W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"BAD-026","title":"Truncated uncompressed position 0","profile":"strict-validation","source":"APRS101 pp. 24,32","packet":"N0CALL>APRS:!","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-027","title":"Truncated uncompressed position 1","profile":"strict-validation","source":"APRS101 pp. 24,32","packet":"N0CALL>APRS:!4","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-028","title":"Truncated uncompressed position 7","profile":"strict-validation","source":"APRS101 pp. 24,32","packet":"N0CALL>APRS:!4903.50","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-029","title":"Truncated uncompressed position 8","profile":"strict-validation","source":"APRS101 pp. 24,32","packet":"N0CALL>APRS:!4903.50N","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-030","title":"Truncated uncompressed position 9","profile":"strict-validation","source":"APRS101 pp. 24,32","packet":"N0CALL>APRS:!4903.50N/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-031","title":"Truncated uncompressed position 17","profile":"strict-validation","source":"APRS101 pp. 24,32","packet":"N0CALL>APRS:!4903.50N/07201.75","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/07201.75"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-032","title":"Truncated uncompressed position 18","profile":"strict-validation","source":"APRS101 pp. 24,32","packet":"N0CALL>APRS:!4903.50N/07201.75W","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/07201.75W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-033","title":"Invalid extension-looking comment 361/010","profile":"strict-validation","source":"APRS101 pp. 20,26-30","packet":"N0CALL>APRS:!4903.50N/07201.75W>361/010","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"361/010"},"note":"The underlying position remains valid. The extension syntax/range is invalid or undefined. This corpus preserves those bytes as comment and exposes no fabricated movement/altitude/range; a receiver may additionally report an invalid-extension warning.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"361/010","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"BAD-034","title":"Invalid extension-looking comment 088/-01","profile":"strict-validation","source":"APRS101 pp. 20,26-30","packet":"N0CALL>APRS:!4903.50N/07201.75W>088/-01","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"088/-01"},"note":"The underlying position remains valid. The extension syntax/range is invalid or undefined. This corpus preserves those bytes as comment and exposes no fabricated movement/altitude/range; a receiver may additionally report an invalid-extension warning.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"088/-01","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"BAD-035","title":"Invalid extension-looking comment 088/ABC","profile":"strict-validation","source":"APRS101 pp. 20,26-30","packet":"N0CALL>APRS:!4903.50N/07201.75W>088/ABC","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"088/ABC"},"note":"The underlying position remains valid. The extension syntax/range is invalid or undefined. This corpus preserves those bytes as comment and exposes no fabricated movement/altitude/range; a receiver may additionally report an invalid-extension warning.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"088/ABC","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"BAD-036","title":"Invalid extension-looking comment PHG7/20","profile":"strict-validation","source":"APRS101 pp. 20,26-30","packet":"N0CALL>APRS:!4903.50N/07201.75W>PHG7/20","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"PHG7/20"},"note":"The underlying position remains valid. The extension syntax/range is invalid or undefined. This corpus preserves those bytes as comment and exposes no fabricated movement/altitude/range; a receiver may additionally report an invalid-extension warning.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"PHG7/20","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"BAD-037","title":"Invalid extension-looking comment PHG5139","profile":"strict-validation","source":"APRS101 pp. 20,26-30","packet":"N0CALL>APRS:!4903.50N/07201.75W>PHG5139","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"PHG5139"},"note":"The underlying position remains valid. The extension syntax/range is invalid or undefined. This corpus preserves those bytes as comment and exposes no fabricated movement/altitude/range; a receiver may additionally report an invalid-extension warning.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"PHG5139","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"BAD-038","title":"Invalid extension-looking comment RNG00A0","profile":"strict-validation","source":"APRS101 pp. 20,26-30","packet":"N0CALL>APRS:!4903.50N/07201.75W>RNG00A0","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"RNG00A0"},"note":"The underlying position remains valid. The extension syntax/range is invalid or undefined. This corpus preserves those bytes as comment and exposes no fabricated movement/altitude/range; a receiver may additionally report an invalid-extension warning.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"RNG00A0","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"BAD-039","title":"Invalid extension-looking comment /A=12345","profile":"strict-validation","source":"APRS101 pp. 20,26-30","packet":"N0CALL>APRS:!4903.50N/07201.75W>/A=12345","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"/A=12345"},"note":"The underlying position remains valid. The extension syntax/range is invalid or undefined. This corpus preserves those bytes as comment and exposes no fabricated movement/altitude/range; a receiver may additionally report an invalid-extension warning.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"/A=12345","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"BAD-040","title":"Invalid extension-looking comment /A=12A456","profile":"strict-validation","source":"APRS101 pp. 20,26-30","packet":"N0CALL>APRS:!4903.50N/07201.75W>/A=12A456","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"/A=12A456"},"note":"The underlying position remains valid. The extension syntax/range is invalid or undefined. This corpus preserves those bytes as comment and exposes no fabricated movement/altitude/range; a receiver may additionally report an invalid-extension warning.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"/A=12A456","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"BAD-041","title":"Truncated compressed position 0","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-042","title":"Truncated compressed position 1","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-043","title":"Truncated compressed position 2","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-044","title":"Truncated compressed position 3","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-045","title":"Truncated compressed position 4","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-046","title":"Truncated compressed position 5","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-047","title":"Truncated compressed position 6","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-048","title":"Truncated compressed position 7","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-049","title":"Truncated compressed position 8","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-050","title":"Truncated compressed position 9","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e7","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-051","title":"Truncated compressed position 10","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e7>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-052","title":"Truncated compressed position 11","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e7>7","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-053","title":"Truncated compressed position 12","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e7>7P","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7P"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-054","title":"Compressed invalid byte 1 20","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/ L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/ L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-055","title":"Compressed invalid byte 2 7c","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5|!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5|!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-056","title":"Compressed invalid byte 3 7d","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5L}!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5L}!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-057","title":"Compressed invalid byte 5 00","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5L!!\u0000*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5L!!\u0000*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-058","title":"Compressed invalid byte 11 7c","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5L!!<*e7>7|[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7|["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-059","title":"Compressed invalid byte 12 7f","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P\u007f","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7P\u007f"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-060","title":"Invalid compressed table 0","profile":"strict-validation","source":"APRS101 pp. 37,91","packet":"N0CALL>APRS:!05L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-position-layout","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!05L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed or unsupported position format"}} +{"id":"BAD-061","title":"Invalid compressed table 9","profile":"strict-validation","source":"APRS101 pp. 37,91","packet":"N0CALL>APRS:!95L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-position-layout","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!95L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed or unsupported position format"}} +{"id":"BAD-062","title":"Invalid compressed table k","profile":"strict-validation","source":"APRS101 pp. 37,91","packet":"N0CALL>APRS:!k5L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-position-layout","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!k5L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-063","title":"Invalid compressed table z","profile":"strict-validation","source":"APRS101 pp. 37,91","packet":"N0CALL>APRS:!z5L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-position-layout","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!z5L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-064","title":"Invalid compressed table ,","profile":"strict-validation","source":"APRS101 pp. 37,91","packet":"N0CALL>APRS:!,5L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-position-layout","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!,5L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-065","title":"Compressed coordinate outside Earth","profile":"strict-validation","source":"APRS101 pp. 23-24,38","packet":"N0CALL>APRS:!/!!!!{{{{>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"coordinate-out-of-range","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/!!!!{{{{>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-066","title":"Compressed coordinate outside Earth","profile":"strict-validation","source":"APRS101 pp. 23-24,38","packet":"N0CALL>APRS:!/{{{{!!!!>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"coordinate-out-of-range","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/{{{{!!!!>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-067","title":"Invalid Mic-E destination AB","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>AB:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"AB","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>AB:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-068","title":"Invalid Mic-E destination S32U6","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32U6:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32U6","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32U6:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-069","title":"Invalid Mic-E destination S32U6TX","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32U6TX:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32U6TX","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32U6TX:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-070","title":"Invalid Mic-E destination S32M6T","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32M6T:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32M6T","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32M6T:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-071","title":"Invalid Mic-E destination S32A6T","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32A6T:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32A6T","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32A6T:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-072","title":"Invalid Mic-E destination S32U6M","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32U6M:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32U6M","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32U6M:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-073","title":"Truncated Mic-E information 0","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-074","title":"Truncated Mic-E information 1","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-075","title":"Truncated Mic-E information 2","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`("},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-076","title":"Truncated Mic-E information 3","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-077","title":"Truncated Mic-E information 4","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_f","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_f"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-078","title":"Truncated Mic-E information 5","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_fn","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_fn"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-079","title":"Truncated Mic-E information 6","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_fn\"","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_fn\""},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-080","title":"Truncated Mic-E information 7","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_fn\"O","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_fn\"O"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-081","title":"Truncated Mic-E information 8","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_fn\"Oj","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_fn\"Oj"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-082","title":"short-object-name-field","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"short-object-name-field","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-083","title":"long-object-name-field","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"long-object-name-field","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-084","title":"bad-object-alive-marker","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;LEADER !092345z4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"bad-object-alive-marker","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:;LEADER !092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-085","title":"missing-object-timestamp","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;LEADER *4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"missing-object-timestamp","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:;LEADER *4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-086","title":"item-name-too-short","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)AB!4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"item-name-too-short","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:)AB!4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-087","title":"item-name-too-long","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)ABCDEFGHIJ!4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"item-name-too-long","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:)ABCDEFGHIJ!4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-088","title":"missing-item-terminator","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)ABC4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"missing-item-terminator","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:)ABC4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-089","title":"message-text-too-long","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"message-text-too-long","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-090","title":"short-addressee-field","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Hello","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"short-addressee-field","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :Hello"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-091","title":"long-addressee-field","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Hello","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"long-addressee-field","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :Hello"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-092","title":"empty-message-id","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Hello{","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"empty-message-id","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :Hello{"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-093","title":"message-id-too-long","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Hello{123456","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"message-id-too-long","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :Hello{123456"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-094","title":"message-id-space","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Hello{A B","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"message-id-space","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :Hello{A B"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-095","title":"message-id-punctuation","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Hello{A!","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"message-id-punctuation","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :Hello{A!"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-096","title":"reserved-message-byte","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Has | pipe","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"reserved-message-byte","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :Has | pipe"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-097","title":"reserved-message-byte","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Has ~ tilde","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"reserved-message-byte","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :Has ~ tilde"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-098","title":"telemetry-sequence-width","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#1000,001,002,003,004,005,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-sequence-width","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#1000,001,002,003,004,005,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-099","title":"telemetry-analog-range","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,256,000,000,000,000,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-analog-range","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,256,000,000,000,000,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-100","title":"telemetry-negative-analog","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,-01,000,000,000,000,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-negative-analog","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,-01,000,000,000,000,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-101","title":"telemetry-decimal-analog","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,1.5,000,000,000,000,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-decimal-analog","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,1.5,000,000,000,000,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-102","title":"telemetry-missing-channel","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,001,002,003,004,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-missing-channel","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,001,002,003,004,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-103","title":"telemetry-short-bits","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,001,002,003,004,005,0000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-short-bits","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,001,002,003,004,005,0000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-104","title":"telemetry-invalid-bit","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,001,002,003,004,005,00000002","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-invalid-bit","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,001,002,003,004,005,00000002"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-105","title":"weather-missing-temperature","profile":"strict-validation","source":"APRS101 pp. 22,64","packet":"N0CALL>APRS:_10090556c220s004g005","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"weather-missing-temperature","weather_valid":false},"expected":{"original_wire":"N0CALL>APRS:_10090556c220s004g005"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-106","title":"weather-month-out-of-range","profile":"strict-validation","source":"APRS101 pp. 22,64","packet":"N0CALL>APRS:_13090556c220s004g005t077","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"weather-month-out-of-range","weather_valid":false},"expected":{"original_wire":"N0CALL>APRS:_13090556c220s004g005t077"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-107","title":"weather-direction-out-of-range","profile":"strict-validation","source":"APRS101 pp. 22,64","packet":"N0CALL>APRS:_10090556c361s004g005t077","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"weather-direction-out-of-range","weather_valid":false},"expected":{"original_wire":"N0CALL>APRS:_10090556c361s004g005t077"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-108","title":"weather-pressure-width","profile":"strict-validation","source":"APRS101 pp. 22,64","packet":"N0CALL>APRS:_10090556c220s004g005t077b1234","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"weather-pressure-width","weather_valid":false},"expected":{"original_wire":"N0CALL>APRS:_10090556c220s004g005t077b1234"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-109","title":"Malformed third-party '}'","profile":"strict-validation","source":"APRS101 pp. 83-86","packet":"N0CALL>APRS:}","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"malformed-third-party","inner_packet_valid":false},"expected":{"original_wire":"N0CALL>APRS:}"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-110","title":"Malformed third-party '}N0CALL>APRS'","profile":"strict-validation","source":"APRS101 pp. 83-86","packet":"N0CALL>APRS:}N0CALL>APRS","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"malformed-third-party","inner_packet_valid":false},"expected":{"original_wire":"N0CALL>APRS:}N0CALL>APRS"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-111","title":"Malformed third-party '}N0CALL>APRS:'","profile":"strict-validation","source":"APRS101 pp. 83-86","packet":"N0CALL>APRS:}N0CALL>APRS:","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"malformed-third-party","inner_packet_valid":false},"expected":{"original_wire":"N0CALL>APRS:}N0CALL>APRS:"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-112","title":"Malformed third-party '}BAD'","profile":"strict-validation","source":"APRS101 pp. 83-86","packet":"N0CALL>APRS:}BAD","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"malformed-third-party","inner_packet_valid":false},"expected":{"original_wire":"N0CALL>APRS:}BAD"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-113","title":"Truncated user-defined header '{'","profile":"strict-validation","source":"APRS101 p. 87","packet":"N0CALL>APRS:{","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-user-defined-header"},"expected":{"original_wire":"N0CALL>APRS:{"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-114","title":"Truncated user-defined header '{{'","profile":"strict-validation","source":"APRS101 p. 87","packet":"N0CALL>APRS:{{","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-user-defined-header"},"expected":{"original_wire":"N0CALL>APRS:{{"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-115","title":"Declared text limit exceeded 64","profile":"strict-validation","source":"APRS101 pp. 32,80","packet":"N0CALL>APRS:>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"declared-text-limit-exceeded"},"expected":{"original_wire":"N0CALL>APRS:>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-116","title":"Declared text limit exceeded 64","profile":"strict-validation","source":"APRS101 pp. 32,80","packet":"N0CALL>APRS:>092345zxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"declared-text-limit-exceeded"},"expected":{"original_wire":"N0CALL>APRS:>092345zxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-117","title":"Declared text limit exceeded 64","profile":"strict-validation","source":"APRS101 pp. 32,80","packet":"N0CALL>APRS:!4903.50N/07201.75W-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"declared-text-limit-exceeded"},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/07201.75W-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-118","title":"Reserved compression high bit 64","profile":"strict-validation","source":"APRS101 p.39","packet":"N0CALL>APRS:!/5L!!<*e7>7Pa","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"reserved-compression-type-bit","compression_type_value":64},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7Pa"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-119","title":"Reserved compression high bit 89","profile":"strict-validation","source":"APRS101 p.39","packet":"N0CALL>APRS:!/5L!!<*e7>7Pz","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"reserved-compression-type-bit","compression_type_value":89},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7Pz"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-120","title":"Reserved compression high bit 90","profile":"strict-validation","source":"APRS101 p.39","packet":"N0CALL>APRS:!/5L!!<*e7>7P{","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"reserved-compression-type-bit","compression_type_value":90},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7P{"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-121","title":"Invalid uncompressed symbol table ,","profile":"strict-validation","source":"APRS101 p.91","packet":"N0CALL>APRS:!4903.50N,07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-symbol-table","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N,07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-122","title":"Invalid uncompressed symbol table a","profile":"strict-validation","source":"APRS101 p.91","packet":"N0CALL>APRS:!4903.50Na07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-symbol-table","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50Na07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-123","title":"Invalid uncompressed symbol table z","profile":"strict-validation","source":"APRS101 p.91","packet":"N0CALL>APRS:!4903.50Nz07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-symbol-table","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50Nz07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-124","title":"Nonprintable symbol code 31","profile":"strict-validation","source":"APRS101 p.90, Appendix 2","packet":"N0CALL>APRS:!4903.50N/07201.75W\u001f","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-symbol-code"},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/07201.75W\u001f"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-125","title":"Nonprintable symbol code 127","profile":"strict-validation","source":"APRS101 p.90, Appendix 2","packet":"N0CALL>APRS:!4903.50N/07201.75W\u007f","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-symbol-code"},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/07201.75W\u007f"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} diff --git a/packages/aprs/tests/vectors/cmp.jsonl b/packages/aprs/tests/vectors/cmp.jsonl new file mode 100644 index 0000000..765a3d8 --- /dev/null +++ b/packages/aprs/tests/vectors/cmp.jsonl @@ -0,0 +1,122 @@ +{"id":"CMP-001","title":"Compressed DTI !","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:!/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-002","title":"Compressed DTI =","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:=/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-003","title":"Compressed DTI /","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:/092345z/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-004","title":"Compressed DTI @","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:@234517h/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"timestamp":{"raw":"234517h","format":"HMS","zone":"UTC","hour":23,"minute":45,"second":17},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"hms_utc","hour":23,"minute":45,"second":17},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-005","title":"Compressed coordinate 90, -180","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/!!!!!!!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":90.0,"longitude_deg":-180.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":90.0,"longitude_deg":-180.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT"}}},"unmapped":["$.compression.ignored","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-006","title":"Compressed coordinate -90, 180","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/{{!!{{!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":-90.0,"longitude_deg":180.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-90.0,"longitude_deg":180.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT"}}},"unmapped":["$.compression.ignored","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-007","title":"Compressed coordinate 0, 0","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/NN!!NN!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":0.0,"longitude_deg":0.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":0.0,"longitude_deg":0.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT"}}},"unmapped":["$.compression.ignored","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-008","title":"Compressed coordinate 49.5, -72.75","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/5L!!<*e8> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.749998687409},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.749998687409,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT"}}},"unmapped":["$.compression.ignored","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-009","title":"Compressed coordinate -49.5, 72.75","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/gP!!`q7e> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":-49.5,"longitude_deg":72.749998687409},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.5,"longitude_deg":72.749998687409,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT"}}},"unmapped":["$.compression.ignored","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-010","title":"Compressed coordinate 89.99999, 179.99999","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/!!!%{z{z> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":89.999989499273,"longitude_deg":179.999989499273},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":89.999989499273,"longitude_deg":179.999989499273,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT"}}},"unmapped":["$.compression.ignored","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-011","title":"Compressed table / overlay \\","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=\\5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"\\","table":"alternate","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"\\","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-012","title":"Compressed table / overlay a","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=a5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"a","table":"alternate","code":">","overlay":"0"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"a","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-013","title":"Compressed table / overlay b","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=b5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"b","table":"alternate","code":">","overlay":"1"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"b","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-014","title":"Compressed table / overlay c","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=c5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"c","table":"alternate","code":">","overlay":"2"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"c","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-015","title":"Compressed table / overlay d","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=d5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"d","table":"alternate","code":">","overlay":"3"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"d","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-016","title":"Compressed table / overlay e","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=e5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"e","table":"alternate","code":">","overlay":"4"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"e","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-017","title":"Compressed table / overlay f","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=f5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"f","table":"alternate","code":">","overlay":"5"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"f","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-018","title":"Compressed table / overlay g","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=g5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"g","table":"alternate","code":">","overlay":"6"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"g","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-019","title":"Compressed table / overlay h","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=h5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"h","table":"alternate","code":">","overlay":"7"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"h","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-020","title":"Compressed table / overlay i","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=i5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"i","table":"alternate","code":">","overlay":"8"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"i","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-021","title":"Compressed table / overlay j","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=j5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"j","table":"alternate","code":">","overlay":"9"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"j","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-022","title":"Compressed table / overlay A","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=A5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"A","table":"alternate","code":">","overlay":"A"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"A","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-023","title":"Compressed table / overlay B","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=B5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"B","table":"alternate","code":">","overlay":"B"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"B","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-024","title":"Compressed table / overlay C","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=C5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"C","table":"alternate","code":">","overlay":"C"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"C","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-025","title":"Compressed table / overlay D","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=D5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"D","table":"alternate","code":">","overlay":"D"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"D","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-026","title":"Compressed table / overlay E","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=E5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"E","table":"alternate","code":">","overlay":"E"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"E","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-027","title":"Compressed table / overlay F","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=F5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"F","table":"alternate","code":">","overlay":"F"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"F","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-028","title":"Compressed table / overlay G","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=G5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"G","table":"alternate","code":">","overlay":"G"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"G","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-029","title":"Compressed table / overlay H","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=H5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"H","table":"alternate","code":">","overlay":"H"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"H","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-030","title":"Compressed table / overlay I","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=I5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"I","table":"alternate","code":">","overlay":"I"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"I","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-031","title":"Compressed table / overlay J","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=J5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"J","table":"alternate","code":">","overlay":"J"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"J","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-032","title":"Compressed table / overlay K","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=K5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"K","table":"alternate","code":">","overlay":"K"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"K","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-033","title":"Compressed table / overlay L","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=L5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"L","table":"alternate","code":">","overlay":"L"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"L","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-034","title":"Compressed table / overlay M","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=M5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"M","table":"alternate","code":">","overlay":"M"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"M","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-035","title":"Compressed table / overlay N","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=N5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"N","table":"alternate","code":">","overlay":"N"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"N","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-036","title":"Compressed table / overlay O","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=O5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"O","table":"alternate","code":">","overlay":"O"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"O","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-037","title":"Compressed table / overlay P","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=P5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"P","table":"alternate","code":">","overlay":"P"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"P","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-038","title":"Compressed table / overlay Q","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=Q5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"Q","table":"alternate","code":">","overlay":"Q"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"Q","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-039","title":"Compressed table / overlay R","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=R5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"R","table":"alternate","code":">","overlay":"R"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"R","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-040","title":"Compressed table / overlay S","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=S5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"S","table":"alternate","code":">","overlay":"S"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"S","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-041","title":"Compressed table / overlay T","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=T5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"T","table":"alternate","code":">","overlay":"T"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"T","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-042","title":"Compressed table / overlay U","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=U5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"U","table":"alternate","code":">","overlay":"U"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"U","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-043","title":"Compressed table / overlay V","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=V5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"V","table":"alternate","code":">","overlay":"V"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"V","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-044","title":"Compressed table / overlay W","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=W5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"W","table":"alternate","code":">","overlay":"W"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"W","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-045","title":"Compressed table / overlay X","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=X5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"X","table":"alternate","code":">","overlay":"X"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"X","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-046","title":"Compressed table / overlay Y","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=Y5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"Y","table":"alternate","code":">","overlay":"Y"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"Y","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-047","title":"Compressed table / overlay Z","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=Z5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"Z","table":"alternate","code":">","overlay":"Z"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"Z","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-048","title":"cs numeric values 0,0","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>!!!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"!!!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":0,"speed_knots":0.0,"speed_kmh":0.0},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"!!!"},"extensions":{"motion":{"course_deg":0,"speed_knots":0.0}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-049","title":"cs numeric values 89,0","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>z!!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"z!!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":356,"speed_knots":0.0,"speed_kmh":0.0},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"z!!"},"extensions":{"motion":{"course_deg":356,"speed_knots":0.0}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-050","title":"cs numeric values 22,47","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"7P!"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-051","title":"cs numeric values 0,90","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>!{!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"!{!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":0,"speed_knots":1017.915089278274,"speed_kmh":1885.178745343363},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"!{!"},"extensions":{"motion":{"course_deg":0,"speed_knots":1017.915089278274}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-052","title":"cs numeric values 89,90","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>z{!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"z{!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":356,"speed_knots":1017.915089278274,"speed_kmh":1885.178745343363},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"z{!"},"extensions":{"motion":{"course_deg":356,"speed_knots":1017.915089278274}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-053","title":"cs numeric values 90,0","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>{!!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"{!!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"radio_range":{"miles":2.0,"km":3.218688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"{!!"},"extensions":{"range":{"miles":2.0}}}},"unmapped":["$.compression.type_value","$.radio_range.km","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-054","title":"cs numeric values 90,30","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>{?!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"{?!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"radio_range":{"miles":20.125313778147,"km":32.388552976978},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"{?!"},"extensions":{"range":{"miles":20.125313778147}}}},"unmapped":["$.compression.type_value","$.radio_range.km","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-055","title":"cs numeric values 90,90","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>{{!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"{{!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"radio_range":{"miles":2037.830178556547,"km":3279.569770878908},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"{{!"},"extensions":{"range":{"miles":2037.830178556547}}}},"unmapped":["$.compression.type_value","$.radio_range.km","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-056","title":"GGA altitude '!!'","profile":"core-1.1","source":"APRS101 p. 40","packet":"N0CALL>APRS:=/5L!!<*e7O!!S","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":"O","overlay":null},"compression":{"csT_raw":"!!S","type_value":50,"fix":"current","nmea_source":"GGA","origin_code":2},"altitude":{"feet":1.0,"meters":0.3048,"encoding":"compressed"},"comment":""},"note":"GGA mode takes precedence over the course/range interpretation of c, including c={.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":"O"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":2,"raw":"!!S"},"extensions":{"altitude":{"measurement":{"value":1.0,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-057","title":"GGA altitude 'S]'","profile":"core-1.1","source":"APRS101 p. 40","packet":"N0CALL>APRS:=/5L!!<*e7OS]S","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":"O","overlay":null},"compression":{"csT_raw":"S]S","type_value":50,"fix":"current","nmea_source":"GGA","origin_code":2},"altitude":{"feet":10004.52005070133,"meters":3049.377711453766,"encoding":"compressed"},"comment":""},"note":"GGA mode takes precedence over the course/range interpretation of c, including c={.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":"O"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":2,"raw":"S]S"},"extensions":{"altitude":{"measurement":{"value":10004.52005070133,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-058","title":"GGA altitude '{{'","profile":"core-1.1","source":"APRS101 p. 40","packet":"N0CALL>APRS:=/5L!!<*e7O{{S","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":"O","overlay":null},"compression":{"csT_raw":"{{S","type_value":50,"fix":"current","nmea_source":"GGA","origin_code":2},"altitude":{"feet":15301509.581191743,"meters":4663900.120347244,"encoding":"compressed"},"comment":""},"note":"GGA mode takes precedence over the course/range interpretation of c, including c={.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":"O"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":2,"raw":"{{S"},"extensions":{"altitude":{"measurement":{"value":15301509.581191743,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-059","title":"Compression type bitfield 000000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"7P!"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-060","title":"Compression type bitfield 000001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P\"","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P\"","type_value":1,"fix":"old","nmea_source":"other","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":1,"raw":"7P\""},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-061","title":"Compression type bitfield 000010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P#","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P#","type_value":2,"fix":"old","nmea_source":"other","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":2,"raw":"7P#"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-062","title":"Compression type bitfield 000011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P$","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P$","type_value":3,"fix":"old","nmea_source":"other","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":3,"raw":"7P$"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-063","title":"Compression type bitfield 000100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P%","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P%","type_value":4,"fix":"old","nmea_source":"other","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":4,"raw":"7P%"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-064","title":"Compression type bitfield 000101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P&","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P&","type_value":5,"fix":"old","nmea_source":"other","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":5,"raw":"7P&"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-065","title":"Compression type bitfield 000110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P'","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P'","type_value":6,"fix":"old","nmea_source":"other","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":6,"raw":"7P'"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-066","title":"Compression type bitfield 000111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P(","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P(","type_value":7,"fix":"old","nmea_source":"other","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":7,"raw":"7P("},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-067","title":"Compression type bitfield 001000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P)","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P)","type_value":8,"fix":"old","nmea_source":"GLL","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":0,"raw":"7P)"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-068","title":"Compression type bitfield 001001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P*","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P*","type_value":9,"fix":"old","nmea_source":"GLL","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":1,"raw":"7P*"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-069","title":"Compression type bitfield 001010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P+","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P+","type_value":10,"fix":"old","nmea_source":"GLL","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":2,"raw":"7P+"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-070","title":"Compression type bitfield 001011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P,","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P,","type_value":11,"fix":"old","nmea_source":"GLL","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":3,"raw":"7P,"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-071","title":"Compression type bitfield 001100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P-","type_value":12,"fix":"old","nmea_source":"GLL","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":4,"raw":"7P-"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-072","title":"Compression type bitfield 001101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P.","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P.","type_value":13,"fix":"old","nmea_source":"GLL","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":5,"raw":"7P."},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-073","title":"Compression type bitfield 001110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P/","type_value":14,"fix":"old","nmea_source":"GLL","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":6,"raw":"7P/"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-074","title":"Compression type bitfield 001111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P0","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P0","type_value":15,"fix":"old","nmea_source":"GLL","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":7,"raw":"7P0"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-075","title":"Compression type bitfield 010000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P1","type_value":16,"fix":"old","nmea_source":"GGA","origin_code":0},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":0,"raw":"7P1"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-076","title":"Compression type bitfield 010001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P2","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P2","type_value":17,"fix":"old","nmea_source":"GGA","origin_code":1},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":1,"raw":"7P2"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-077","title":"Compression type bitfield 010010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P3","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P3","type_value":18,"fix":"old","nmea_source":"GGA","origin_code":2},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":2,"raw":"7P3"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-078","title":"Compression type bitfield 010011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P4","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P4","type_value":19,"fix":"old","nmea_source":"GGA","origin_code":3},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":3,"raw":"7P4"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-079","title":"Compression type bitfield 010100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P5","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P5","type_value":20,"fix":"old","nmea_source":"GGA","origin_code":4},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":4,"raw":"7P5"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-080","title":"Compression type bitfield 010101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P6","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P6","type_value":21,"fix":"old","nmea_source":"GGA","origin_code":5},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":5,"raw":"7P6"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-081","title":"Compression type bitfield 010110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P7","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P7","type_value":22,"fix":"old","nmea_source":"GGA","origin_code":6},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":6,"raw":"7P7"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-082","title":"Compression type bitfield 010111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P8","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P8","type_value":23,"fix":"old","nmea_source":"GGA","origin_code":7},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":7,"raw":"7P8"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-083","title":"Compression type bitfield 011000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P9","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P9","type_value":24,"fix":"old","nmea_source":"RMC","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":0,"raw":"7P9"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-084","title":"Compression type bitfield 011001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P:","type_value":25,"fix":"old","nmea_source":"RMC","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":1,"raw":"7P:"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-085","title":"Compression type bitfield 011010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P;","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P;","type_value":26,"fix":"old","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":2,"raw":"7P;"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-086","title":"Compression type bitfield 011011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P<","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P<","type_value":27,"fix":"old","nmea_source":"RMC","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":3,"raw":"7P<"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-087","title":"Compression type bitfield 011100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P=","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P=","type_value":28,"fix":"old","nmea_source":"RMC","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":4,"raw":"7P="},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-088","title":"Compression type bitfield 011101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P>","type_value":29,"fix":"old","nmea_source":"RMC","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":5,"raw":"7P>"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-089","title":"Compression type bitfield 011110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P?","type_value":30,"fix":"old","nmea_source":"RMC","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":6,"raw":"7P?"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-090","title":"Compression type bitfield 011111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P@","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P@","type_value":31,"fix":"old","nmea_source":"RMC","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":7,"raw":"7P@"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-091","title":"Compression type bitfield 100000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PA","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PA","type_value":32,"fix":"current","nmea_source":"other","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":0,"raw":"7PA"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-092","title":"Compression type bitfield 100001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PB","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PB","type_value":33,"fix":"current","nmea_source":"other","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":1,"raw":"7PB"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-093","title":"Compression type bitfield 100010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PC","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PC","type_value":34,"fix":"current","nmea_source":"other","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":2,"raw":"7PC"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-094","title":"Compression type bitfield 100011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PD","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PD","type_value":35,"fix":"current","nmea_source":"other","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":3,"raw":"7PD"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-095","title":"Compression type bitfield 100100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PE","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PE","type_value":36,"fix":"current","nmea_source":"other","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":4,"raw":"7PE"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-096","title":"Compression type bitfield 100101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PF","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PF","type_value":37,"fix":"current","nmea_source":"other","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":5,"raw":"7PF"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-097","title":"Compression type bitfield 100110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PG","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PG","type_value":38,"fix":"current","nmea_source":"other","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":6,"raw":"7PG"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-098","title":"Compression type bitfield 100111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PH","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PH","type_value":39,"fix":"current","nmea_source":"other","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":7,"raw":"7PH"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-099","title":"Compression type bitfield 101000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PI","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PI","type_value":40,"fix":"current","nmea_source":"GLL","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":0,"raw":"7PI"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-100","title":"Compression type bitfield 101001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PJ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PJ","type_value":41,"fix":"current","nmea_source":"GLL","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":1,"raw":"7PJ"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-101","title":"Compression type bitfield 101010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PK","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PK","type_value":42,"fix":"current","nmea_source":"GLL","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":2,"raw":"7PK"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-102","title":"Compression type bitfield 101011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PL","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PL","type_value":43,"fix":"current","nmea_source":"GLL","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":3,"raw":"7PL"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-103","title":"Compression type bitfield 101100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PM","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PM","type_value":44,"fix":"current","nmea_source":"GLL","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":4,"raw":"7PM"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-104","title":"Compression type bitfield 101101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PN","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PN","type_value":45,"fix":"current","nmea_source":"GLL","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":5,"raw":"7PN"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-105","title":"Compression type bitfield 101110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PO","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PO","type_value":46,"fix":"current","nmea_source":"GLL","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":6,"raw":"7PO"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-106","title":"Compression type bitfield 101111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PP","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PP","type_value":47,"fix":"current","nmea_source":"GLL","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":7,"raw":"7PP"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-107","title":"Compression type bitfield 110000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PQ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PQ","type_value":48,"fix":"current","nmea_source":"GGA","origin_code":0},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":0,"raw":"7PQ"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-108","title":"Compression type bitfield 110001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PR","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PR","type_value":49,"fix":"current","nmea_source":"GGA","origin_code":1},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":1,"raw":"7PR"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-109","title":"Compression type bitfield 110010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PS","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PS","type_value":50,"fix":"current","nmea_source":"GGA","origin_code":2},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":2,"raw":"7PS"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-110","title":"Compression type bitfield 110011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PT","type_value":51,"fix":"current","nmea_source":"GGA","origin_code":3},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":3,"raw":"7PT"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-111","title":"Compression type bitfield 110100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PU","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PU","type_value":52,"fix":"current","nmea_source":"GGA","origin_code":4},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":4,"raw":"7PU"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-112","title":"Compression type bitfield 110101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PV","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PV","type_value":53,"fix":"current","nmea_source":"GGA","origin_code":5},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":5,"raw":"7PV"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-113","title":"Compression type bitfield 110110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PW","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PW","type_value":54,"fix":"current","nmea_source":"GGA","origin_code":6},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":6,"raw":"7PW"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-114","title":"Compression type bitfield 110111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PX","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PX","type_value":55,"fix":"current","nmea_source":"GGA","origin_code":7},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":7,"raw":"7PX"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-115","title":"Compression type bitfield 111000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PY","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PY","type_value":56,"fix":"current","nmea_source":"RMC","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":0,"raw":"7PY"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-116","title":"Compression type bitfield 111001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PZ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PZ","type_value":57,"fix":"current","nmea_source":"RMC","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":1,"raw":"7PZ"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-117","title":"Compression type bitfield 111010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-118","title":"Compression type bitfield 111011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P\\","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P\\","type_value":59,"fix":"current","nmea_source":"RMC","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":3,"raw":"7P\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-119","title":"Compression type bitfield 111100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P]","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P]","type_value":60,"fix":"current","nmea_source":"RMC","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":4,"raw":"7P]"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-120","title":"Compression type bitfield 111101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P^","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P^","type_value":61,"fix":"current","nmea_source":"RMC","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":5,"raw":"7P^"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-121","title":"Compression type bitfield 111110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P_","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P_","type_value":62,"fix":"current","nmea_source":"RMC","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":6,"raw":"7P_"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-122","title":"Compression type bitfield 111111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P`","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P`","type_value":63,"fix":"current","nmea_source":"RMC","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":7,"raw":"7P`"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} diff --git a/packages/aprs/tests/vectors/ext.jsonl b/packages/aprs/tests/vectors/ext.jsonl new file mode 100644 index 0000000..def7c98 --- /dev/null +++ b/packages/aprs/tests/vectors/ext.jsonl @@ -0,0 +1,50 @@ +{"id":"EXT-001","title":"Course 1, speed 1","profile":"core-1.1","source":"APRS101 p. 27","packet":"N0CALL>APRS:!4903.50N/07201.75W>001/001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","motion":{"course_code":1,"course_deg":1,"speed_knots":1,"speed_kmh":1.852}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"course_deg":1,"speed_knots":1,"course_code":1}}}},"unmapped":["$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-002","title":"Course 88, speed 36","profile":"core-1.1","source":"APRS101 p. 27","packet":"N0CALL>APRS:!4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","motion":{"course_code":88,"course_deg":88,"speed_knots":36,"speed_kmh":66.672}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"course_deg":88,"speed_knots":36,"course_code":88}}}},"unmapped":["$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-003","title":"Course 359, speed 999","profile":"core-1.1","source":"APRS101 p. 27","packet":"N0CALL>APRS:!4903.50N/07201.75W>359/999","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","motion":{"course_code":359,"course_deg":359,"speed_knots":999,"speed_kmh":1850.148}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"course_deg":359,"speed_knots":999,"course_code":359}}}},"unmapped":["$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-004","title":"Course 360, speed 0","profile":"core-1.1","source":"APRS101 p. 27","packet":"N0CALL>APRS:!4903.50N/07201.75W>360/000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","motion":{"course_code":360,"course_deg":360,"speed_knots":0,"speed_kmh":0.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"course_deg":360,"speed_knots":0,"course_code":360}}}},"unmapped":["$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-005","title":"Course 0, speed 0","profile":"core-1.1","source":"APRS101 p. 27","packet":"N0CALL>APRS:!4903.50N/07201.75W>000/000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","motion":{"course_code":0,"course_deg":null,"speed_knots":null,"speed_kmh":null,"zero_pair_meaning":"unknown-or-not-relevant","speed_code":0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"course_deg":null,"speed_knots":null,"course_code":0,"speed_code":0}}}},"unmapped":["$.motion.speed_kmh","$.motion.zero_pair_meaning","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-006","title":"Unknown movement '.../...'","profile":"core-1.1","source":"APRS101 p. 27","packet":"N0CALL>APRS:!4903.50N/07201.75W>.../...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","motion":{"raw":".../...","course_deg":null,"speed_knots":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"course_deg":null,"speed_knots":null}}}},"unmapped":["$.motion.raw","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-007","title":"Unknown movement ' / '","profile":"core-1.1","source":"APRS101 p. 27","packet":"N0CALL>APRS:!4903.50N/07201.75W> / ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","motion":{"raw":" / ","course_deg":null,"speed_knots":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"course_deg":null,"speed_knots":null}}}},"unmapped":["$.motion.raw","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-008","title":"Altitude 0 ft first","profile":"core-1.1","source":"APRS101 p. 26","packet":"N0CALL>APRS:!4903.50N/07201.75W-/A=000000 tail","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":" tail","altitude":{"feet":0,"meters":0.0,"encoding":"comment"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":" tail","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"extensions":{"altitude":{"measurement":{"value":0,"unit":"feet"},"encoding":"feet_extension"}}}},"unmapped":["$.altitude.meters","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-009","title":"Altitude 0 ft middle","profile":"core-1.1","source":"APRS101 p. 26","packet":"N0CALL>APRS:!4903.50N/07201.75W-before /A=000000 after","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"before after","altitude":{"feet":0,"meters":0.0,"encoding":"comment"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"before after","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"extensions":{"altitude":{"measurement":{"value":0,"unit":"feet"},"encoding":"feet_extension"}}}},"unmapped":["$.altitude.meters","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-010","title":"Altitude 0 ft last","profile":"core-1.1","source":"APRS101 p. 26","packet":"N0CALL>APRS:!4903.50N/07201.75W-before /A=000000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"before ","altitude":{"feet":0,"meters":0.0,"encoding":"comment"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"before ","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"extensions":{"altitude":{"measurement":{"value":0,"unit":"feet"},"encoding":"feet_extension"}}}},"unmapped":["$.altitude.meters","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-011","title":"Altitude 1234 ft first","profile":"core-1.1","source":"APRS101 p. 26","packet":"N0CALL>APRS:!4903.50N/07201.75W-/A=001234 tail","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":" tail","altitude":{"feet":1234,"meters":376.1232,"encoding":"comment"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":" tail","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"extensions":{"altitude":{"measurement":{"value":1234,"unit":"feet"},"encoding":"feet_extension"}}}},"unmapped":["$.altitude.meters","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-012","title":"Altitude 1234 ft middle","profile":"core-1.1","source":"APRS101 p. 26","packet":"N0CALL>APRS:!4903.50N/07201.75W-before /A=001234 after","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"before after","altitude":{"feet":1234,"meters":376.1232,"encoding":"comment"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"before after","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"extensions":{"altitude":{"measurement":{"value":1234,"unit":"feet"},"encoding":"feet_extension"}}}},"unmapped":["$.altitude.meters","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-013","title":"Altitude 1234 ft last","profile":"core-1.1","source":"APRS101 p. 26","packet":"N0CALL>APRS:!4903.50N/07201.75W-before /A=001234","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"before ","altitude":{"feet":1234,"meters":376.1232,"encoding":"comment"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"before ","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"extensions":{"altitude":{"measurement":{"value":1234,"unit":"feet"},"encoding":"feet_extension"}}}},"unmapped":["$.altitude.meters","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-014","title":"Altitude 999999 ft first","profile":"core-1.1","source":"APRS101 p. 26","packet":"N0CALL>APRS:!4903.50N/07201.75W-/A=999999 tail","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":" tail","altitude":{"feet":999999,"meters":304799.6952,"encoding":"comment"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":" tail","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"extensions":{"altitude":{"measurement":{"value":999999,"unit":"feet"},"encoding":"feet_extension"}}}},"unmapped":["$.altitude.meters","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-015","title":"Altitude 999999 ft middle","profile":"core-1.1","source":"APRS101 p. 26","packet":"N0CALL>APRS:!4903.50N/07201.75W-before /A=999999 after","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"before after","altitude":{"feet":999999,"meters":304799.6952,"encoding":"comment"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"before after","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"extensions":{"altitude":{"measurement":{"value":999999,"unit":"feet"},"encoding":"feet_extension"}}}},"unmapped":["$.altitude.meters","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-016","title":"Altitude 999999 ft last","profile":"core-1.1","source":"APRS101 p. 26","packet":"N0CALL>APRS:!4903.50N/07201.75W-before /A=999999","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"before ","altitude":{"feet":999999,"meters":304799.6952,"encoding":"comment"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"before ","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"extensions":{"altitude":{"measurement":{"value":999999,"unit":"feet"},"encoding":"feet_extension"}}}},"unmapped":["$.altitude.meters","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-017","title":"PHG 0000","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG0000Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"0000","power_w":0,"height_haat_ft":10,"gain_dbi":0,"directivity_deg":null,"omnidirectional":true,"range_miles_1_0":0.0,"display_radius_miles_1_1":0.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":0,"height_haat_ft":10,"gain_dbi":0,"directivity_deg":null,"raw":"0000"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-018","title":"PHG 5132","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG5132Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"5132","power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":90,"omnidirectional":false,"range_miles_1_0":7.947993420414,"display_radius_miles_1_1":3.973996710207}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":90,"raw":"5132"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-019","title":"PHG 9998","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG9998Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"9998","power_w":81,"height_haat_ft":5120,"gain_dbi":9,"directivity_deg":360,"omnidirectional":false,"range_miles_1_0":240.99816407125,"display_radius_miles_1_1":120.499082035625}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":81,"height_haat_ft":5120,"gain_dbi":9,"directivity_deg":360,"raw":"9998"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-020","title":"PHG 5:32","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG5:32Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"5:32","power_w":25,"height_haat_ft":10240,"gain_dbi":3,"directivity_deg":90,"omnidirectional":false,"range_miles_1_0":179.842561420823,"display_radius_miles_1_1":89.921280710412}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":25,"height_haat_ft":10240,"gain_dbi":3,"directivity_deg":90,"raw":"5:32"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-021","title":"PHG 5;32","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG5;32Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"5;32","power_w":25,"height_haat_ft":20480,"gain_dbi":3,"directivity_deg":90,"omnidirectional":false,"range_miles_1_0":254.335789453244,"display_radius_miles_1_1":127.167894726622}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":25,"height_haat_ft":20480,"gain_dbi":3,"directivity_deg":90,"raw":"5;32"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-022","title":"PHG 5130","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG5130Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"5130","power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":null,"omnidirectional":true,"range_miles_1_0":7.947993420414,"display_radius_miles_1_1":3.973996710207}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":null,"raw":"5130"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-023","title":"PHG 5131","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG5131Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"5131","power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":45,"omnidirectional":false,"range_miles_1_0":7.947993420414,"display_radius_miles_1_1":3.973996710207}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":45,"raw":"5131"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-024","title":"PHG 5132","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG5132Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"5132","power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":90,"omnidirectional":false,"range_miles_1_0":7.947993420414,"display_radius_miles_1_1":3.973996710207}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":90,"raw":"5132"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-025","title":"PHG 5133","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG5133Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"5133","power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":135,"omnidirectional":false,"range_miles_1_0":7.947993420414,"display_radius_miles_1_1":3.973996710207}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":135,"raw":"5133"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-026","title":"PHG 5134","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG5134Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"5134","power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":180,"omnidirectional":false,"range_miles_1_0":7.947993420414,"display_radius_miles_1_1":3.973996710207}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":180,"raw":"5134"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-027","title":"PHG 5135","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG5135Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"5135","power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":225,"omnidirectional":false,"range_miles_1_0":7.947993420414,"display_radius_miles_1_1":3.973996710207}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":225,"raw":"5135"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-028","title":"PHG 5136","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG5136Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"5136","power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":270,"omnidirectional":false,"range_miles_1_0":7.947993420414,"display_radius_miles_1_1":3.973996710207}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":270,"raw":"5136"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-029","title":"PHG 5137","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG5137Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"5137","power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":315,"omnidirectional":false,"range_miles_1_0":7.947993420414,"display_radius_miles_1_1":3.973996710207}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":315,"raw":"5137"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-030","title":"PHG 5138","profile":"core-1.1","source":"APRS101 pp. 28-29; A11: PHG gain and range corrections","packet":"N0CALL>APRS:!4903.50N/07201.75W#PHG5138Radio","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Radio","phg":{"raw":"5138","power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":360,"omnidirectional":false,"range_miles_1_0":7.947993420414,"display_radius_miles_1_1":3.973996710207}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Radio","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":25,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":360,"raw":"5138"}}}},"unmapped":["$.phg.display_radius_miles_1_1","$.phg.omnidirectional","$.phg.range_miles_1_0","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-031","title":"RNG 0","profile":"core-1.1","source":"APRS101 p. 29","packet":"N0CALL>APRS:!4903.50N/07201.75W#RNG0000Range","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Range","radio_range":{"miles":0,"km":0.0}},"note":"The PHG halving correction does not halve an explicitly transmitted RNG value.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Range","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"range":{"miles":0}}}},"unmapped":["$.radio_range.km","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-032","title":"RNG 1","profile":"core-1.1","source":"APRS101 p. 29","packet":"N0CALL>APRS:!4903.50N/07201.75W#RNG0001Range","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Range","radio_range":{"miles":1,"km":1.609344}},"note":"The PHG halving correction does not halve an explicitly transmitted RNG value.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Range","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"range":{"miles":1}}}},"unmapped":["$.radio_range.km","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-033","title":"RNG 50","profile":"core-1.1","source":"APRS101 p. 29","packet":"N0CALL>APRS:!4903.50N/07201.75W#RNG0050Range","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Range","radio_range":{"miles":50,"km":80.4672}},"note":"The PHG halving correction does not halve an explicitly transmitted RNG value.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Range","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"range":{"miles":50}}}},"unmapped":["$.radio_range.km","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-034","title":"RNG 9999","profile":"core-1.1","source":"APRS101 p. 29","packet":"N0CALL>APRS:!4903.50N/07201.75W#RNG9999Range","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"#","overlay":null},"comment":"Range","radio_range":{"miles":9999,"km":16091.830656000002}},"note":"The PHG halving correction does not halve an explicitly transmitted RNG value.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Range","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"range":{"miles":9999}}}},"unmapped":["$.radio_range.km","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-035","title":"DFS 2360","profile":"core-1.1","source":"APRS101 pp. 29-30","packet":"N0CALL>APRS:!4903.50N/07201.75W\\DFS2360","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","df_signal":{"s_units":2,"height_haat_ft":80,"gain_db":6,"directivity_deg":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"signal":{"s_units":2,"height_haat_ft":80,"gain_db":6,"directivity_deg":null}}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-036","title":"DFS 0360","profile":"core-1.1","source":"APRS101 pp. 29-30","packet":"N0CALL>APRS:!4903.50N/07201.75W\\DFS0360","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","df_signal":{"s_units":0,"height_haat_ft":80,"gain_db":6,"directivity_deg":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"signal":{"s_units":0,"height_haat_ft":80,"gain_db":6,"directivity_deg":null}}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-037","title":"DFS 9998","profile":"core-1.1","source":"APRS101 pp. 29-30","packet":"N0CALL>APRS:!4903.50N/07201.75W\\DFS9998","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","df_signal":{"s_units":9,"height_haat_ft":5120,"gain_db":9,"directivity_deg":360}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"signal":{"s_units":9,"height_haat_ft":5120,"gain_db":9,"directivity_deg":360}}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-038","title":"DF quality 0","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/720","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":0,"accuracy_less_than_deg":null,"usable":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":0,"usable":false,"accuracy_less_than_deg":null}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null}}} +{"id":"EXT-039","title":"DF quality 1","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/721","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":1,"accuracy_less_than_deg":240,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":1,"usable":true,"accuracy_less_than_deg":240}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} +{"id":"EXT-040","title":"DF quality 2","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/722","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":2,"accuracy_less_than_deg":120,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":2,"usable":true,"accuracy_less_than_deg":120}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} +{"id":"EXT-041","title":"DF quality 3","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/723","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":3,"accuracy_less_than_deg":64,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":3,"usable":true,"accuracy_less_than_deg":64}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} +{"id":"EXT-042","title":"DF quality 4","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/724","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":4,"accuracy_less_than_deg":32,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":4,"usable":true,"accuracy_less_than_deg":32}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} +{"id":"EXT-043","title":"DF quality 5","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/725","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":5,"accuracy_less_than_deg":16,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":5,"usable":true,"accuracy_less_than_deg":16}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} +{"id":"EXT-044","title":"DF quality 6","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/726","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":6,"accuracy_less_than_deg":8,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":6,"usable":true,"accuracy_less_than_deg":8}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} +{"id":"EXT-045","title":"DF quality 7","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/727","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":7,"accuracy_less_than_deg":4,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":7,"usable":true,"accuracy_less_than_deg":4}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} +{"id":"EXT-046","title":"DF quality 8","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/728","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":8,"accuracy_less_than_deg":2,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":8,"usable":true,"accuracy_less_than_deg":2}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} +{"id":"EXT-047","title":"DF quality 9","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/729","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":9,"accuracy_less_than_deg":1,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":9,"usable":true,"accuracy_less_than_deg":1}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} +{"id":"EXT-048","title":"DF special NRQ 000","profile":"core-1.1","source":"APRS101 pp. 30, 34","packet":"N0CALL>APRS:!4903.50N/07201.75W\\000/000/270/000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"station_fixed":true,"speed_knots":0},"df_bearing":{"bearing_deg":270,"nrq_raw":"000","nrq_meaningful":false,"manual":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"speed_knots":0},"bearing":{"bearing_deg":270}}}},"unmapped":["$.df_bearing.manual","$.df_bearing.nrq_meaningful","$.df_bearing.nrq_raw","$.motion.station_fixed","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-049","title":"DF special NRQ 949","profile":"core-1.1","source":"APRS101 pp. 30, 34","packet":"N0CALL>APRS:!4903.50N/07201.75W\\000/000/270/949","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"station_fixed":true,"speed_knots":0},"df_bearing":{"bearing_deg":270,"nrq_raw":"949","nrq_meaningful":true,"manual":true,"range_miles":16,"accuracy_less_than_deg":1}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"speed_knots":0},"bearing":{"bearing_deg":270,"accuracy_less_than_deg":1}}}},"unmapped":["$.df_bearing.manual","$.df_bearing.nrq_meaningful","$.df_bearing.nrq_raw","$.df_bearing.range_miles","$.motion.station_fixed","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} +{"id":"EXT-050","title":"DF suffix without DF symbol","profile":"core-1.1","source":"APRS101 p. 34","packet":"N0CALL>APRS:!4903.50N/07201.75W>088/036/270/729","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"/270/729","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672}},"note":"Do not promote the comment suffix to a DF bearing without /\\.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"/270/729","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"course_deg":88,"speed_knots":36}}}},"unmapped":["$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} diff --git a/packages/aprs/tests/vectors/fap.jsonl b/packages/aprs/tests/vectors/fap.jsonl new file mode 100644 index 0000000..32015cd --- /dev/null +++ b/packages/aprs/tests/vectors/fap.jsonl @@ -0,0 +1,517 @@ +{"id":"FAP-001","title":"TestAPRSISPathIPv6AfterQConstruct","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_paths_test.go#L9","packet":"IQ3VQ>APD225,TCPIP*,qAI,IQ3VQ,THIRD,92E5A2B6,T2HUB1,200106F8020204020000000000000002,T2FINLAND:!4526.66NI01104.68E#PHG21306/- Lnx APRS Srv - sez. ARI VR EST","outcome":"accept","source_expected":{"fap_header":{"source":"IQ3VQ","destination":"APD225","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAI","WasDigied":false},{"Call":"IQ3VQ","WasDigied":false},{"Call":"THIRD","WasDigied":false},{"Call":"92E5A2B6","WasDigied":false},{"Call":"T2HUB1","WasDigied":false},{"Call":"200106F8020204020000000000000002","WasDigied":false},{"Call":"T2FINLAND","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":45.44433333333333,"Longitude":11.078,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"I","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"21306","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"- Lnx APRS Srv - sez. ARI VR EST","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"IQ3VQ","destination":"APD225","path":[{"address":"TCPIP","repeated":true},{"address":"qAI","repeated":false},{"address":"IQ3VQ","repeated":false},{"address":"THIRD","repeated":false},{"address":"92E5A2B6","repeated":false},{"address":"T2HUB1","repeated":false},{"address":"200106F8020204020000000000000002","repeated":false},{"address":"T2FINLAND","repeated":false}]},"payload":{"type":"position","comment":"- Lnx APRS Srv - sez. ARI VR EST","messaging":false,"latitude_deg":45.44433333333333,"longitude_deg":11.078,"ambiguity":0,"symbol":{"table_id":"I","code":"#"},"extensions":{"phg":{"power_w":4,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":null,"rate_per_hour":6}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"6/- Lnx APRS Srv - sez. ARI VR EST","$.payload.extensions.phg.rate_per_hour":null}}} +{"id":"FAP-002","title":"TestAPRSISPathIPv6BeforeQConstruct","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_paths_test.go#L23","packet":"IQ3VQ>APD225,200106F8020204020000000000000002,TCPIP*,qAI,IQ3VQ,THIRD,92E5A2B6,T2HUB1,200106F8020204020000000000000002,T2FINLAND:!4526.66NI01104.68E#PHG21306/- Lnx APRS Srv - sez. ARI VR EST","outcome":"reject","source_expected":{"fap_header":{"source":"IQ3VQ","destination":"APD225","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_badchars: digipeater callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"IQ3VQ>APD225,200106F8020204020000000000000002,TCPIP*,qAI,IQ3VQ,THIRD,92E5A2B6,T2HUB1,200106F8020204020000000000000002,T2FINLAND:!4526.66NI01104.68E#PHG21306/- Lnx APRS Srv - sez. ARI VR EST"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$":"rejection"}}} +{"id":"FAP-003","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-1>APRS:;LEADER *092345z4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER ","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-004","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-1>APRS:)AID #2!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-005","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-2>TQ4W2V,WIDE2-1,qAo,IGATE:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"]=","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-006","title":"TestWithAX25/valid_AX.25_packet","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB-9>APX200,OH7AA-1*,WIDE2-1:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH7LZB testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APX200","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH7LZB testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APX200","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH7LZB testing","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"/RELAY,WIDE, OH7LZB testing"}}} +{"id":"FAP-007","title":"TestWithAX25/valid_AX.25_no_digipeaters","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-008","title":"TestWithAX25/invalid_AX.25_source_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"TOOLONGCALLSIGN>APRS:>status","outcome":"reject","source_expected":{"fap_header":{"source":"TOOLONGCALLSIGN","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_noax25: source callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"TOOLONGCALLSIGN>APRS:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-009","title":"TestWithAX25/source_SSID_too_large_for_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB-16>APRS:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB-16","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_noax25: source callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB-16>APRS:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-010","title":"TestWithAX25/invalid_AX.25_digipeater_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS,TOOLONGCALLSIGN:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_noax25: digipeater callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,TOOLONGCALLSIGN:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-011","title":"TestWithAX25/too_many_path_components_for_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS,D1,D2,D3,D4,D5,D6,D7,D8,D9:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstpath_toomany: too many path components for AX.25"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,D1,D2,D3,D4,D5,D6,D7,D8,D9:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-012","title":"TestWithAX25/max_8_digipeaters_is_valid","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS,D1,D2,D3,D4,D5,D6,D7,D8:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":[{"Call":"D1","WasDigied":false},{"Call":"D2","WasDigied":false},{"Call":"D3","WasDigied":false},{"Call":"D4","WasDigied":false},{"Call":"D5","WasDigied":false},{"Call":"D6","WasDigied":false},{"Call":"D7","WasDigied":false},{"Call":"D8","WasDigied":false}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[{"address":"D1","repeated":false},{"address":"D2","repeated":false},{"address":"D3","repeated":false},{"address":"D4","repeated":false},{"address":"D5","repeated":false},{"address":"D6","repeated":false},{"address":"D7","repeated":false},{"address":"D8","repeated":false}]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-013","title":"TestWithAX25/source_callsign_normalized_to_uppercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"oh7lzb>APRS:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.header.source":"oh7lzb"}}} +{"id":"FAP-014","title":"TestWithAX25/invalid_AX.25_destination_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>TOOLONGDST:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_noax25: destination callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>TOOLONGDST:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-015","title":"TestWithAX25/destination_SSID_too_large_for_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS-16:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_noax25: destination callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS-16:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-016","title":"TestWithAX25/destination_callsign_normalized_to_uppercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>aprs:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.header.destination":"aprs"}}} +{"id":"FAP-017","title":"TestDstCallNoAX25WithoutOption","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L132","packet":"OH7LZB>TOOLONGDST:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_noax25: destination callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>TOOLONGDST:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$":"rejection"}}} +{"id":"FAP-018","title":"TestBadPacketCorruptedPosition","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L14","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!60ff.51N/0250akh3r99hfae","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: loc_inv: invalid latitude: invalid minutes: invalid character at position 2: f"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!60ff.51N/0250akh3r99hfae"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-019","title":"TestBadPacketBadSrcCall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L42","packet":"K6IFR_S>APJS10,TCPIP*,qAC,K6IFR-BS:;K6IFR B *250300z3351.79ND11626.40WaRNG0040 440 Voice 447.140 -5.00 Mhz","outcome":"reject","source_expected":{"fap_header":{"source":"K6IFR_S","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_badchars: source callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"K6IFR_S>APJS10,TCPIP*,qAC,K6IFR-BS:;K6IFR B *250300z3351.79ND11626.40WaRNG0040 440 Voice 447.140 -5.00 Mhz"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-020","title":"TestBadPacketBadDigiCall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L58","packet":"SV2BRF-6>APU25N,TCPXX*,qAX,SZ8L_GREE:=/:$U#T<:G- BVagelis, qrv:434.350, tsq:77 {UIV32N}","outcome":"reject","source_expected":{"fap_header":{"source":"SV2BRF-6","destination":"APU25N","digipeaters":[{"Call":"TCPXX","WasDigied":true},{"Call":"qAX","WasDigied":false}]},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_badchars: digipeater callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SV2BRF-6>APU25N,TCPXX*,qAX,SZ8L_GREE:=/:$U#T<:G- BVagelis, qrv:434.350, tsq:77 {UIV32N}"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-021","title":"TestBadPacketBadSymbolTable","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L74","packet":"ASDF>DSALK,OH2RDG*,WIDE:!6028.51N,02505.68E#","outcome":"reject","source_expected":{"fap_header":{"source":"ASDF","destination":"DSALK","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":null,"PosAmbiguity":0,"PosResolution":null,"SymbolTable":",","SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: sym_inv_table: invalid symbol table: ,"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"ASDF>DSALK,OH2RDG*,WIDE:!6028.51N,02505.68E#"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-022","title":"TestBadPacketExperimental","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L87","packet":"ASDF>DSALK,OH2RDG*,WIDE:{{ unsupported experimental format","outcome":"reject","source_expected":{"fap_header":{"source":"ASDF","destination":"DSALK","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: exp_unsupp: unsupported experimental packet"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"ASDF>DSALK,OH2RDG*,WIDE:{{ unsupported experimental format"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$":"rejection"}}} +{"id":"FAP-023","title":"TestBeacon/non-APRS","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L13","packet":"OH2RDU>UIDIGI: UIDIGI 1.9","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"UIDIGI","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"UIDIGI","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-024","title":"TestBeacon/all_beacon_destinations/ID","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>ID:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"ID","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"ID","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-025","title":"TestBeacon/all_beacon_destinations/BEACON","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>BEACON:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"BEACON","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"BEACON","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-026","title":"TestBeacon/all_beacon_destinations/UIDIGI","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>UIDIGI:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"UIDIGI","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"UIDIGI","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-027","title":"TestBeacon/all_beacon_destinations/CQ","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>CQ:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"CQ","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"CQ","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-028","title":"TestBeacon/beacon_with_position_fallback","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L48","packet":"OH2RDU>BEACON:testing!6028.51N/02505.68E#PHG2360","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"BEACON","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"2360","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":4,"height_haat_ft":80,"gain_dbi":6,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-029","title":"TestCompressedNonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L15","packet":"OH2KKU-15>APRS,TCPIP*,qAC,FOURTH:!I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU-15","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.052010101699544,"Longitude":24.504507437140035,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"I","SymbolCode":"&","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":8.10520393696385,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"igate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU-15","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"igate testing","messaging":false,"latitude_deg":60.052010101699544,"longitude_deg":24.504507437140035,"symbol":{"table_id":"I","code":"&"},"extensions":{"range":{"miles":5.036340233637961}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-030","title":"TestCompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L107","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-031","title":"TestCompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L196","packet":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol ","outcome":"reject","source_expected":{"fap_header":{"source":"KJ4ERJ-AL","destination":"APWW05","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: comp_short: compressed position too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"original_wire":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol "},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-032","title":"TestCompressedWeather","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L206","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg001t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":272},"weather":{"gust":{"value":0.44704,"unit":"m/s"},"temperature":{"value":12.222222222222221,"unit":"celsius"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":2.54,"unit":"mm"},"rain_since_midnight":{"value":2.54,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-033","title":"TestCompressedWeatherSpaceGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L255","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":272},"weather":{"temperature":{"value":12.222222222222221,"unit":"celsius"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":2.54,"unit":"mm"},"rain_since_midnight":{"value":2.54,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-034","title":"TestDAOUncompressedHumanReadable","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L13","packet":"K0ELR-15>APOT02,WIDE1-1,WIDE2-1,qAo,K0ELR:/102033h4133.03NX09029.49Wv204/000!W33! 12.3V 21C/A=000665","outcome":"accept","source_expected":{"fap_header":{"source":"K0ELR-15","destination":"APOT02","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"K0ELR","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":41.55055,"Longitude":-90.49155,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"X","SymbolCode":"v","Speed":0,"Course":204,"Altitude":202.692,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"12.3V 21C","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"K0ELR-15","destination":"APOT02","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"K0ELR","repeated":false}]},"payload":{"type":"position","comment":"12.3V 21C","messaging":false,"latitude_deg":41.55055,"longitude_deg":-90.49155,"ambiguity":0,"symbol":{"table_id":"X","code":"v"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":204},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":665.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-035","title":"TestDAOCompressedBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L53","packet":"OH7LZB-9>APZMDR,WIDE2-2,qAo,OH2RCH:!/0(yiTc5y>{2O http://aprs.fi/!w11!","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APZMDR","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2RCH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.15273087861335,"Longitude":24.662220910798077,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":11.909203712770884,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APZMDR","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2RCH","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.15273087861335,"longitude_deg":24.662220910798077,"symbol":{"table_id":"/","code":">"},"extensions":{"range":{"miles":7.400036109601728}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-036","title":"TestDAOMicEBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L87","packet":"OH2JCQ-9>VP1U88,TRACE2-2,qAR,OH2RDK-5:'5'9\"^Rj/]\"4-}Foo !w66!Bar","outcome":"accept","source_expected":{"fap_header":{"source":"OH2JCQ-9","destination":"VP1U88","digipeaters":[{"Call":"TRACE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH2RDK-5","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":60.26470512820512,"Longitude":25.18820512820513,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"j","Speed":122.232,"Course":254,"Altitude":22,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Foo Bar","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2JCQ-9","destination":"VP1U88","path":[{"address":"TRACE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"OH2RDK-5","repeated":false}]},"payload":{"type":"position","comment":"]Foo Bar","latitude_deg":60.26470512820512,"longitude_deg":25.18820512820513,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"extensions":{"motion":{"speed_knots":66.0,"course_deg":254}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-037","title":"TestParseStatus","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L12","packet":"OH7LZB>APRS:>Testing status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"Testing status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"Testing status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-038","title":"TestParseNoBody","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L27","packet":"OH7LZB>APRS","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: packet_no_body: no packet body after header"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-039","title":"TestParseNoGT","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L35","packet":"OH7LZB:body","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_nogt: no '>' in header"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-040","title":"TestParseErrors/no_colon","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: packet_no_body: no packet body after header"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-041","title":"TestParseErrors/empty_body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS:","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: packet_no_body: packet body is empty"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS:"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-042","title":"TestParseErrors/no_>_in_header","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB:body","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_nogt: no '>' in header"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-043","title":"TestParseErrors/empty_source_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":">APRS:body","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_empty: source callsign is empty"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":">APRS:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-044","title":"TestParseErrors/source_callsign_bad_chars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7_LZB>APRS:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7_LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_badchars: source callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7_LZB>APRS:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-045","title":"TestParseErrors/source_callsign_not_valid_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"TOOLONGCALL>APRS:body","outcome":"reject","source_expected":{"fap_header":{"source":"TOOLONGCALL","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_noax25: source callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"TOOLONGCALL>APRS:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-046","title":"TestParseErrors/empty_destination","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_empty: destination callsign is empty"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-047","title":"TestParseErrors/destination_not_valid_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>!!!:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_noax25: destination callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>!!!:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-048","title":"TestParseErrors/too_many_path_components_for_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS,A,B,C,D,E,F,G,H,I:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstpath_toomany: too many path components for AX.25"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,A,B,C,D,E,F,G,H,I:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-049","title":"TestParseErrors/empty_digipeater_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS,,WIDE:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digi_empty: empty digipeater callsign"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,,WIDE:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-050","title":"TestParseErrors/empty_digipeater_after_star","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS,*:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digi_empty: empty digipeater callsign"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,*:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-051","title":"TestParseErrors/digipeater_bad_chars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS,WI_DE:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_badchars: digipeater callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,WI_DE:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-052","title":"TestParseErrors/digipeater_not_valid_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS,TOOLONGCALL:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_noax25: digipeater callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,TOOLONGCALL:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-053","title":"TestItemAlive","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L18","packet":"N0CALL-1>APRS:)AID #2!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-054","title":"TestItemKilled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L57","packet":"N0CALL-1>APRS:)AID #2_4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":false,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":false,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-055","title":"TestItemShortName","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L76","packet":"N0CALL-1>APRS:)X1Y!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"X1Y","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"X1Y","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-056","title":"TestItemMaxLengthName","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L92","packet":"N0CALL-15>APRS,TCPIP*,qAC,T2TEST:)MyRadio99!4327.00N/00119.00WlMyRadio99","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-15","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TEST","WasDigied":false}]},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":43.45,"Longitude":-1.3166666666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"l","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"MyRadio99","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"MyRadio99","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-15","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TEST","repeated":false}]},"payload":{"type":"item","comment":"MyRadio99","name":"MyRadio99","alive":true,"latitude_deg":43.45,"longitude_deg":-1.3166666666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"l"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-057","title":"TestItemTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L114","packet":"N0CALL-1>APRS:)short","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: item_short: item packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:)short"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-058","title":"TestItemCompressedPosition","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L129","packet":"N0CALL-1>APRS:)TEST!/0%E/Th4_/ A","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"compressed","Latitude":60.23049358668088,"Longitude":24.878968618576835,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"/","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"TEST","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"TEST","alive":true,"latitude_deg":60.23049358668088,"longitude_deg":24.878968618576835,"symbol":{"table_id":"/","code":"/"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-059","title":"TestItemWithCourseSpeed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L168","packet":"N0CALL-1>APRS:)MOBILE!4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"MOBILE","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"MOBILE","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-060","title":"TestItemErrors/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L207","packet":"N0CALL-1>APRS:)SH!1234","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: item_short: item packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:)SH!1234"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-061","title":"TestItemErrors/no_name_terminator","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L207","packet":"N0CALL-1>APRS:)ABCDEFGHIJ4903.50N/07201.75W>","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: item_inv: item name terminator not found"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:)ABCDEFGHIJ4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-062","title":"TestBinaryCleanASCII","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB : !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz}{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz}","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz}","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-063","title":"TestBinaryCleanSet1","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB : !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ab{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ab","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ab","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-064","title":"TestBinaryCleanSet2","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :cdefghijklmnopqrstuvwxyz}\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"cdefghijklmnopqrstuvwxyz}\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"cdefghijklmnopqrstuvwxyz}\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-065","title":"TestBinaryCleanSet3","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-066","title":"TestBinaryCleanSet4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-067","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: {42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: ","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: ","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-068","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: !{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: !","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: !","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-069","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \"{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \"","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \"","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-070","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: #{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: #","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: #","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-071","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: ${42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: $","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: $","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-072","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: %{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: %","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: %","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-073","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: &{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: &","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: &","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-074","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: '{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: '","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: '","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-075","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: ({42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: (","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: (","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-076","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: ){42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: )","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: )","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-077","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: *{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: *","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: *","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-078","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: +{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: +","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: +","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-079","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: ,{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: ,","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: ,","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-080","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: -{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: -","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: -","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-081","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: .{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: .","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: .","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-082","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: /{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: /","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: /","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-083","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: 0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: 0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: 0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-084","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: 1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: 1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: 1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-085","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: 2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: 2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: 2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-086","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: 3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: 3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: 3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-087","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: 4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: 4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: 4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-088","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: 5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: 5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: 5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-089","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: 6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: 6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: 6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-090","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: 7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: 7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: 7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-091","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: 8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: 8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: 8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-092","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: 9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: 9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: 9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-093","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: :{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: :","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: :","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-094","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: ;{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: ;","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: ;","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-095","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: <{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: <","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: <","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-096","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: ={42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: =","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: =","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-097","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: >{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: >","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: >","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-098","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: ?{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: ?","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: ?","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-099","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: @{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: @","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: @","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-100","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: A{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: A","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: A","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-101","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: B{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: B","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: B","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-102","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: C{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: C","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: C","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-103","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: D{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: D","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: D","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-104","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: E{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: E","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: E","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-105","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: F{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: F","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: F","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-106","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: G{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: G","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: G","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-107","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: H{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: H","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: H","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-108","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: I{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: I","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: I","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-109","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: J{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: J","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: J","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-110","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: K{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: K","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: K","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-111","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: L{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: L","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: L","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-112","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: M{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: M","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: M","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-113","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: N{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: N","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: N","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-114","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: O{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: O","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: O","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-115","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: P{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: P","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: P","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-116","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: Q{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: Q","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: Q","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-117","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: R{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: R","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: R","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-118","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: S{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: S","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: S","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-119","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: T{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: T","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: T","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-120","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: U{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: U","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: U","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-121","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: V{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: V","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: V","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-122","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: W{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: W","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: W","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-123","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: X{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: X","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: X","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-124","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: Y{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: Y","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: Y","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-125","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: Z{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: Z","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: Z","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-126","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: [{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: [","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: [","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-127","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \\{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \\","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \\","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-128","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: ]{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: ]","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: ]","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-129","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: ^{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: ^","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: ^","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-130","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: _{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: _","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: _","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-131","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: `{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: `","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: `","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-132","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: a{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: a","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: a","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-133","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: b{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: b","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: b","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-134","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: c{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: c","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: c","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-135","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: d{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: d","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: d","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-136","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: e{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: e","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: e","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-137","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: f{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: f","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: f","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-138","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: g{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: g","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: g","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-139","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: h{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: h","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: h","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-140","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: i{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: i","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: i","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-141","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: j{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: j","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: j","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-142","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: k{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: k","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: k","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-143","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: l{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: l","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: l","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-144","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: m{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: m","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: m","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-145","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: n{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: n","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: n","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-146","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: o{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: o","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: o","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-147","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: p{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: p","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: p","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-148","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: q{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: q","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: q","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-149","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: r{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: r","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: r","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-150","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: s{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: s","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: s","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-151","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: t{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: t","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: t","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-152","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: u{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: u","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: u","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-153","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: v{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: v","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: v","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-154","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: w{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: w","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: w","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-155","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: x{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: x","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: x","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-156","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: y{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: y","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: y","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-157","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: z{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: z","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: z","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-158","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: {42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: ","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: ","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-159","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: {42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: ","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: ","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-160","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: }{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: }","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: }","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-161","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: {42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: ","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: ","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-162","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0080{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0080","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0080","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-163","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0081{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0081","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0081","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-164","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0082{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0082","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0082","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-165","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0083{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0083","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0083","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-166","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0084{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0084","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0084","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-167","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0085{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0085","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0085","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-168","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0086{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0086","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0086","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-169","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0087{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0087","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0087","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-170","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0088{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0088","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0088","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-171","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0089{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0089","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0089","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-172","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008a{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008a","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008a","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-173","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008b{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008b","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008b","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-174","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008c{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008c","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008c","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-175","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008d{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008d","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008d","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-176","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008e{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008e","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008e","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-177","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008f{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008f","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008f","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-178","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0090{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0090","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0090","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-179","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0091{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0091","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0091","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-180","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0092{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0092","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0092","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-181","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0093{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0093","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0093","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-182","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0094{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0094","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0094","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-183","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0095{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0095","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0095","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-184","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0096{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0096","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0096","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-185","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0097{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0097","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0097","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-186","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0098{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0098","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0098","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-187","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0099{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0099","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0099","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-188","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009a{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009a","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009a","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-189","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009b{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009b","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009b","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-190","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009c{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009c","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009c","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-191","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009d{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009d","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009d","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-192","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009e{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009e","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009e","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-193","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009f{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009f","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009f","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-194","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-195","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-196","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-197","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-198","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-199","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-200","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-201","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-202","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-203","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-204","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00aa{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00aa","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00aa","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-205","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ab{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ab","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ab","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-206","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ac{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ac","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ac","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-207","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ad{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ad","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ad","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-208","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ae{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ae","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ae","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-209","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00af{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00af","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00af","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-210","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-211","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-212","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-213","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-214","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-215","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-216","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-217","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-218","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-219","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-220","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ba{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ba","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ba","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-221","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00bb{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00bb","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00bb","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-222","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00bc{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00bc","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00bc","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-223","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00bd{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00bd","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00bd","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-224","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00be{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00be","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00be","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-225","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00bf{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00bf","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00bf","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-226","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-227","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-228","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-229","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-230","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-231","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-232","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-233","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-234","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-235","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-236","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ca{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ca","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ca","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-237","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00cb{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00cb","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00cb","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-238","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00cc{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00cc","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00cc","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-239","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00cd{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00cd","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00cd","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-240","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ce{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ce","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ce","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-241","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00cf{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00cf","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00cf","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-242","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-243","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-244","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-245","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-246","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-247","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-248","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-249","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-250","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-251","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-252","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00da{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00da","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00da","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-253","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00db{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00db","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00db","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-254","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00dc{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00dc","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00dc","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-255","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00dd{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00dd","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00dd","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-256","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00de{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00de","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00de","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-257","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00df{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00df","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00df","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-258","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-259","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-260","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-261","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-262","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-263","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-264","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-265","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-266","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-267","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-268","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ea{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ea","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ea","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-269","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00eb{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00eb","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00eb","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-270","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ec{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ec","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ec","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-271","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ed{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ed","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ed","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-272","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ee{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ee","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ee","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-273","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ef{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ef","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ef","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-274","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-275","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-276","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-277","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-278","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-279","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-280","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-281","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-282","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-283","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-284","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fa{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fa","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fa","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-285","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fb{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fb","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fb","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-286","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fc{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fc","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fc","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-287","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fd{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fd","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fd","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-288","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fe{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fe","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fe","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-289","title":"TestMessageNormal/id_1","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L17","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{1","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"1","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"1"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-290","title":"TestMessageNormal/id_42","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L17","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-291","title":"TestMessageNormal/id_10512","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L17","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{10512","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"10512","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"10512"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-292","title":"TestMessageNormal/id_a","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L17","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{a","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"a","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"a"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-293","title":"TestMessageNormal/id_1Ff84","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L17","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{1Ff84","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"1Ff84","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"1Ff84"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-294","title":"TestMessageNormal/id_F00b4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L17","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{F00b4","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"F00b4","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"F00b4"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-295","title":"TestMessageReplyAckEmpty/id_1","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L48","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{1}","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"1","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"1"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-296","title":"TestMessageReplyAckEmpty/id_42","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L48","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{42}","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-297","title":"TestMessageReplyAckEmpty/id_10512","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L48","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{10512}","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"10512","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"10512"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-298","title":"TestMessageReplyAckEmpty/id_a","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L48","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{a}","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"a","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"a"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-299","title":"TestMessageReplyAckEmpty/id_1Ff84","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L48","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{1Ff84}","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"1Ff84","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"1Ff84"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-300","title":"TestMessageReplyAckEmpty/id_F00b4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L48","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{F00b4}","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"F00b4","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"F00b4"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-301","title":"TestMessageReplyAck/id_1","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L76","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{1}f001","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"1","AckID":"f001","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"1","reply_ack":"f001"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.Message.RejID","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-302","title":"TestMessageReplyAck/id_42","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L76","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{42}f001","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"42","AckID":"f001","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"42","reply_ack":"f001"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.Message.RejID","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-303","title":"TestMessageReplyAck/id_10512","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L76","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{10512}f001","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"10512","AckID":"f001","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"10512","reply_ack":"f001"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.Message.RejID","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-304","title":"TestMessageReplyAck/id_a","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L76","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{a}f001","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"a","AckID":"f001","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"a","reply_ack":"f001"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.Message.RejID","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-305","title":"TestMessageReplyAck/id_1Ff84","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L76","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{1Ff84}f001","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"1Ff84","AckID":"f001","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"1Ff84","reply_ack":"f001"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.Message.RejID","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-306","title":"TestMessageReplyAck/id_F00b4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L76","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{F00b4}f001","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"F00b4","AckID":"f001","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"F00b4","reply_ack":"f001"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.Message.RejID","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-307","title":"TestMessageAck/id_1","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L103","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :ack1","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"1","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"1","rejected":false}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-308","title":"TestMessageAck/id_42","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L103","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :ack42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"42","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"42","rejected":false}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-309","title":"TestMessageAck/id_10512","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L103","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :ack10512","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"10512","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"10512","rejected":false}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-310","title":"TestMessageAck/id_a","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L103","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :acka","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"a","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"a","rejected":false}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-311","title":"TestMessageAck/id_1Ff84","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L103","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :ack1Ff84","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"1Ff84","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"1Ff84","rejected":false}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-312","title":"TestMessageAck/id_F00b4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L103","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :ackF00b4","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"F00b4","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"F00b4","rejected":false}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-313","title":"TestMessageReject/id_1","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L127","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :rej1","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"","RejID":"1"},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"1","rejected":true}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-314","title":"TestMessageReject/id_42","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L127","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :rej42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"","RejID":"42"},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"42","rejected":true}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-315","title":"TestMessageReject/id_10512","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L127","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :rej10512","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"","RejID":"10512"},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"10512","rejected":true}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-316","title":"TestMessageReject/id_a","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L127","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :reja","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"","RejID":"a"},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"a","rejected":true}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-317","title":"TestMessageReject/id_1Ff84","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L127","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :rej1Ff84","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"","RejID":"1Ff84"},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"1Ff84","rejected":true}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-318","title":"TestMessageReject/id_F00b4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L127","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :rejF00b4","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"","RejID":"F00b4"},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"F00b4","rejected":true}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-319","title":"TestMessageNoID","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L151","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Hello world","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Hello world","message_id":null}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-320","title":"TestEncodeMessageNormal/id_1","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L193","packet":"OH7AA-1>APRS::N0CALL :Testing, 1 2 3{1","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"1","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"1"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-321","title":"TestEncodeMessageNormal/id_42","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L193","packet":"OH7AA-1>APRS::N0CALL :Testing, 1 2 3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-322","title":"TestEncodeMessageNormal/id_10512","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L193","packet":"OH7AA-1>APRS::N0CALL :Testing, 1 2 3{10512","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"10512","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"10512"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-323","title":"TestEncodeMessageNormal/id_a","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L193","packet":"OH7AA-1>APRS::N0CALL :Testing, 1 2 3{a","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"a","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"a"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-324","title":"TestEncodeMessageNormal/id_1Ff84","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L193","packet":"OH7AA-1>APRS::N0CALL :Testing, 1 2 3{1Ff84","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"1Ff84","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"1Ff84"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-325","title":"TestEncodeMessageNormal/id_F00b4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L193","packet":"OH7AA-1>APRS::N0CALL :Testing, 1 2 3{F00b4","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"F00b4","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"F00b4"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-326","title":"TestEncodeMessageAck/id_1","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L226","packet":"OH7AA-1>APRS::N0CALL :ack1","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"1","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"1","rejected":false}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-327","title":"TestEncodeMessageAck/id_42","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L226","packet":"OH7AA-1>APRS::N0CALL :ack42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"42","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"42","rejected":false}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-328","title":"TestEncodeMessageAck/id_10512","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L226","packet":"OH7AA-1>APRS::N0CALL :ack10512","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"10512","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"10512","rejected":false}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-329","title":"TestEncodeMessageAck/id_a","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L226","packet":"OH7AA-1>APRS::N0CALL :acka","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"a","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"a","rejected":false}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-330","title":"TestEncodeMessageAck/id_1Ff84","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L226","packet":"OH7AA-1>APRS::N0CALL :ack1Ff84","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"1Ff84","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"1Ff84","rejected":false}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-331","title":"TestEncodeMessageAck/id_F00b4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L226","packet":"OH7AA-1>APRS::N0CALL :ackF00b4","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"F00b4","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"F00b4","rejected":false}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-332","title":"TestEncodeMessageReject/id_1","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L253","packet":"OH7AA-1>APRS::N0CALL :rej1","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"","RejID":"1"},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"1","rejected":true}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-333","title":"TestEncodeMessageReject/id_42","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L253","packet":"OH7AA-1>APRS::N0CALL :rej42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"","RejID":"42"},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"42","rejected":true}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-334","title":"TestEncodeMessageReject/id_10512","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L253","packet":"OH7AA-1>APRS::N0CALL :rej10512","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"","RejID":"10512"},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"10512","rejected":true}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-335","title":"TestEncodeMessageReject/id_a","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L253","packet":"OH7AA-1>APRS::N0CALL :reja","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"","RejID":"a"},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"a","rejected":true}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-336","title":"TestEncodeMessageReject/id_1Ff84","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L253","packet":"OH7AA-1>APRS::N0CALL :rej1Ff84","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"","RejID":"1Ff84"},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"1Ff84","rejected":true}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-337","title":"TestEncodeMessageReject/id_F00b4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L253","packet":"OH7AA-1>APRS::N0CALL :rejF00b4","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"","ID":"","AckID":"","RejID":"F00b4"},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"N0CALL","message_id":"F00b4","rejected":true}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-338","title":"TestEncodeMessageReplyAck/id_1_ack_abc","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L292","packet":"OH7AA-1>APRS::N0CALL :Testing, 1 2 3{1}abc","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"1","AckID":"abc","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"1","reply_ack":"abc"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.Message.RejID","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-339","title":"TestEncodeMessageReplyAck/id_42_ack_ab","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L292","packet":"OH7AA-1>APRS::N0CALL :Testing, 1 2 3{42}ab","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"42","AckID":"ab","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"42","reply_ack":"ab"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.Message.RejID","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-340","title":"TestEncodeMessageReplyAck/id_ab_ack_cd","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L292","packet":"OH7AA-1>APRS::N0CALL :Testing, 1 2 3{ab}cd","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"ab","AckID":"cd","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"ab","reply_ack":"cd"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.Message.RejID","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-341","title":"TestEncodeMessageReplyAck/id_abc_ack_d","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L292","packet":"OH7AA-1>APRS::N0CALL :Testing, 1 2 3{abc}d","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"abc","AckID":"d","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"abc","reply_ack":"d"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.Message.RejID","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-342","title":"TestEncodeMessageNoID","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L323","packet":"OH7AA-1>APRS::N0CALL :Hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Hello world","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Hello world","message_id":null}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-343","title":"TestMessageErrors/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L444","packet":"OH7AA-1>APRS::N0CALL ","outcome":"reject","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: msg_short: message packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7AA-1>APRS::N0CALL "},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-344","title":"TestMessageErrors/missing_colon_after_addressee","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L444","packet":"OH7AA-1>APRS::N0CALL XHello world","outcome":"reject","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: msg_inv: message addressee field malformed"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7AA-1>APRS::N0CALL XHello world"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-345","title":"TestMicENonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/]","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"]","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-346","title":"TestMicEMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L108","packet":"OH7LZB-2>TQ4W2V,WIDE2-1,qAo,OH7LZB:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"position","comment":"]=","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-347","title":"TestMicEHexTelemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L208","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'102030FFff commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,32,48,255,255],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"position","comment":"commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"telemetry":{"sequence":0,"analog":[16,32,48,255,255]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-348","title":"TestMicEHexTelemetry2Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L237","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'1020 commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,0,32],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"position","comment":"commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"telemetry":{"sequence":0,"analog":[16,0,32]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-349","title":"TestMicEMangled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L267","packet":"KD0KZE>TUPX9R,RS0ISS*,qAR,K0GDI-6:'yaIl -/]Greetings via ISS=","outcome":"accept","source_expected":{"fap_header":{"source":"KD0KZE","destination":"TUPX9R","digipeaters":[{"Call":"RS0ISS","WasDigied":true},{"Call":"qAR","WasDigied":false},{"Call":"K0GDI-6","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":45.148666666666664,"Longitude":-93.1575,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"111","MiceMangled":true,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Greetings via ISS=","Warnings":null}},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"KD0KZE","destination":"TUPX9R","path":[{"address":"RS0ISS","repeated":true},{"address":"qAR","repeated":false},{"address":"K0GDI-6","repeated":false}]},"payload":{"type":"position","comment":"]Greetings via ISS=","latitude_deg":45.148666666666664,"longitude_deg":-93.1575,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-350","title":"TestMicEErrors/destination_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"N0CALL>AB:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"AB","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: Mic-E destination callsign too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>AB:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-351","title":"TestMicEErrors/info_field_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"N0CALL>SX15S6:`short","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX15S6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_short: Mic-E information field too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX15S6:`short"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-352","title":"TestMicEErrors/invalid_destination_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"N0CALL>SX1MS6:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX1MS6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: invalid Mic-E destination character: M"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX1MS6:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-353","title":"TestMicEErrors/invalid_symbol_table","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"OZ2BRN-4>5U2V08,OZ3RIN-3,OZ4DIA-2*,WIDE2-1,qAR,DB0KUE:`'O5U2V08,OZ3RIN-3,OZ4DIA-2*,WIDE2-1,qAR,DB0KUE:`'OAB:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"AB","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_short: mangled Mic-E packet too short"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>AB:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-355","title":"TestMicEMangledErrors/invalid_info_field","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L370","packet":"N0CALL>SX15S6:`c51!f?>\u0001","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX15S6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":171.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"\u0001","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_infofield: invalid Mic-E information field"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX15S6:`c51!f?>\u0001"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-356","title":"TestMicEMangledErrors/invalid_destination_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L370","packet":"N0CALL>SX1MS6:`@@@@ >/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX1MS6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":true,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: invalid Mic-E destination character"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX1MS6:`@@@@ >/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-357","title":"TestGPRMC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L17","packet":"N0CALL-11>APRS,DIGI*,WIDE2-1,qAR,IGATE:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*7A","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"DIGI","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":33.817296666666664,"Longitude":-84.10436166666666,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":null,"SymbolCode":null,"Speed":43.940552000000004,"Course":28,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"DIGI","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Timestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-358","title":"TestGPRMCNoFix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L99","packet":"SRC>APRS,WIDE1-1,GATE,qAR,GATE-1:$GPRMC,041518,V,,,,,,,230309,,*33","outcome":"reject","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"GATE","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"GATE-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null},"fap_error":"fap: gprmc_nofix: GPRMC: no valid fix"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRC>APRS,WIDE1-1,GATE,qAR,GATE-1:$GPRMC,041518,V,,,,,,,230309,,*33"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-359","title":"TestGPGGA","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L111","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,*4F","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":11.516666666666667,"PosAmbiguity":null,"PosResolution":1.852,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":545.4,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-360","title":"TestGPGGANoFix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L171","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*48","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA checksum mismatch"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*48"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-361","title":"TestGPGLL","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L183","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-362","title":"TestGPGLLMinimal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L239","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-363","title":"TestParseNMEAErrors/not_starting_with_$GP","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA sentence must start with $GP"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-364","title":"TestParseNMEAErrors/checksum_mismatch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*FF","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA checksum mismatch"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*FF"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-365","title":"TestParseNMEAErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPXXX","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: NMEA sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPXXX"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-366","title":"TestParseNMEAErrors/unsupported_sentence","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPVTG,0,T,0,M,0,N,0,K","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: unsupported NMEA sentence: $GPVTG"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPVTG,0,T,0,M,0,N,0,K"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-367","title":"TestParseGPRMCErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: GPRMC sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-368","title":"TestParseGPRMCErrors/no_fix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,V,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: gprmc_nofix: GPRMC: no valid fix"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,V,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-369","title":"TestParseGPRMCErrors/invalid_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,XXXX.XXXX,N,08406.2617,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"},"fap_error":"fap: pos_lat_inv: GPRMC: invalid degrees: strconv.ParseFloat: parsing \"XX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,XXXX.XXXX,N,08406.2617,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-370","title":"TestParseGPRMCErrors/empty_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,,N,08406.2617,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"},"fap_error":"fap: pos_lat_inv: GPRMC: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,,N,08406.2617,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-371","title":"TestParseGPRMCErrors/invalid_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,XXXXX.XXXX,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":33.817296666666664,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"},"fap_error":"fap: pos_lon_inv: GPRMC: invalid degrees: strconv.ParseFloat: parsing \"XXX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,XXXXX.XXXX,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-372","title":"TestParseGPRMCErrors/empty_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":33.817296666666664,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"},"fap_error":"fap: pos_lon_inv: GPRMC: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-373","title":"TestParseGPGGAErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: GPGGA sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-374","title":"TestParseGPGGAErrors/no_fix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPGGA: no valid fix"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-375","title":"TestParseGPGGAErrors/invalid_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,XXXX.XXX,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lat_inv: GPGGA: invalid degrees: strconv.ParseFloat: parsing \"XX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,XXXX.XXX,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-376","title":"TestParseGPGGAErrors/empty_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lat_inv: GPGGA: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-377","title":"TestParseGPGGAErrors/invalid_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,XXXXX.XXX,E,1,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lon_inv: GPGGA: invalid degrees: strconv.ParseFloat: parsing \"XXX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,XXXXX.XXX,E,1,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-378","title":"TestParseGPGGAErrors/empty_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,,E,1,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lon_inv: GPGGA: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,,E,1,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-379","title":"TestParseGPGLLErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,12311.12","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: GPGLL sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,12311.12"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-380","title":"TestParseGPGLLErrors/invalid_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,XXXX.XX,N,12311.12,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lat_inv: GPGLL: invalid degrees: strconv.ParseFloat: parsing \"XX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,XXXX.XX,N,12311.12,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-381","title":"TestParseGPGLLErrors/empty_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,,N,12311.12,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lat_inv: GPGLL: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,,N,12311.12,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-382","title":"TestParseGPGLLErrors/invalid_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,XXXXX.XX,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lon_inv: GPGLL: invalid degrees: strconv.ParseFloat: parsing \"XXX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,XXXXX.XX,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-383","title":"TestParseGPGLLErrors/empty_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lon_inv: GPGLL: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-384","title":"TestParseGPRMCTimestampErrors/time_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,1234,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,1234,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-385","title":"TestParseGPRMCTimestampErrors/time_too_long","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,12345678,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,12345678,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-386","title":"TestParseGPRMCTimestampErrors/time_empty","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-387","title":"TestParseGPRMCTimestampErrors/hour_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,XX0000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,XX0000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-388","title":"TestParseGPRMCTimestampErrors/hour_24","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,240000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,240000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-389","title":"TestParseGPRMCTimestampErrors/minute_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,12XX00,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,12XX00,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-390","title":"TestParseGPRMCTimestampErrors/minute_60","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,126000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,126000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-391","title":"TestParseGPRMCTimestampErrors/second_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,1200XX,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,1200XX,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-392","title":"TestParseGPRMCTimestampErrors/second_60","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,120060,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,120060,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-393","title":"TestParseGPRMCTimestampErrors/date_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,1212,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,1212,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-394","title":"TestParseGPRMCTimestampErrors/date_too_long","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,12120712,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,12120712,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-395","title":"TestParseGPRMCTimestampErrors/date_empty","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-396","title":"TestParseGPRMCTimestampErrors/day_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,XX1207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,XX1207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-397","title":"TestParseGPRMCTimestampErrors/month_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,12XX07,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,12XX07,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-398","title":"TestParseGPRMCTimestampErrors/year_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,1212XX,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,1212XX,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-399","title":"TestObjectInvalidBroken","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_inv_test.go#L16","packet":"OH2KKU-1>APRS,TCPIP*,qAC,FIRST:;SRAL HQ *110507zS0%E/Th4_a AKaupinmaenpolku9,open M-Th12-17,F12-14 lcl","outcome":"reject","source_expected":{"fap_header":{"source":"OH2KKU-1","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FIRST","WasDigied":false}]},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"SRAL HQ *","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_inv: invalid object alive/killed indicator: 1"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2KKU-1>APRS,TCPIP*,qAC,FIRST:;SRAL HQ *110507zS0%E/Th4_a AKaupinmaenpolku9,open M-Th12-17,F12-14 lcl"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-400","title":"TestObjectCompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L16","packet":"N0CALL-1>APRS,TCPIP*,qAC,FIRST:;SRAL HQ *100927zS0%E/Th4_a AKaupinmaenpolku9,open M-Th12-17,F12-14 lcl","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FIRST","WasDigied":false}]},"fap_fields":{"Type":"object","Format":"compressed","Latitude":60.23049358668088,"Longitude":24.878968618576835,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"S","SymbolCode":"a","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"SRAL HQ ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Kaupinmaenpolku9,open M-Th12-17,F12-14 lcl","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FIRST","repeated":false}]},"payload":{"type":"object","comment":"Kaupinmaenpolku9,open M-Th12-17,F12-14 lcl","name":"SRAL HQ ","alive":true,"latitude_deg":60.23049358668088,"longitude_deg":24.878968618576835,"symbol":{"table_id":"S","code":"a"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-401","title":"TestObjectUncompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L71","packet":"N0CALL-1>APRS:;LEADER *092345z4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER ","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-402","title":"TestObjectKilled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L117","packet":"N0CALL-1>APRS:;LEADER _092345z4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":false,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER ","alive":false,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-403","title":"TestObjectErrors/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L153","packet":"N0CALL-1>APRS:;SHORT","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_short: object packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:;SHORT"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-404","title":"TestObjectErrors/invalid_alive/killed_indicator","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L153","packet":"N0CALL-1>APRS:;LEADER X092345z4903.50N/07201.75W>","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_inv: invalid object alive/killed indicator: X"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:;LEADER X092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-405","title":"TestFallbackUncompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L15","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:hoponassualku!6028.51S/02505.68W#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-406","title":"TestFallbackCompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L44","packet":"OH2KKU>APRS,TCPIP*:hello!/I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":10.540467177352028,"Longitude":-74.88313740726545,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"v","Speed":1885.1787453433603,"Course":20,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"Aigate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"position","comment":"Aigate testing","messaging":false,"latitude_deg":10.540467177352028,"longitude_deg":-74.88313740726545,"symbol":{"table_id":"/","code":"v"},"extensions":{"motion":{"speed_knots":1017.9150892782723,"course_deg":20}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-407","title":"TestFallbackExclAtOffset39","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L64","packet":"OH2RDP-1>BEACON-15:012345678901234567890123456789012345678!6028.51N/02505.68E#","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-408","title":"TestFallbackExclAtOffset40","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L81","packet":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-409","title":"TestFallbackNoExcl","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L94","packet":"OH2RDP-1>BEACON-15:Tno position here at all","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:Tno position here at all"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-410","title":"TestFallbackUncompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L107","packet":"OH2RDP-1>BEACON-15:X!6028.51N/02505.6","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!6028.51N/02505.6"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-411","title":"TestFallbackCompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L120","packet":"OH2RDP-1>BEACON-15:X!/I0-X;T_Wv&","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!/I0-X;T_Wv&"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-412","title":"TestFallbackBadCompressedTableChar","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L134","packet":"OH2RDP-1>BEACON-15:X!zI0-X;T_Wv&{-A","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!zI0-X;T_Wv&{-A"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-413","title":"TestParseCapabilities","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/status_test.go#L14","packet":"OH7LZB>APRS:APU25N,WIDE2-2,qAR,LANSNG:>151811z>>Nashville,TN>>Toronto,ON","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":">>Nashville,TN>>Toronto,ON","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"status","text":">>Nashville,TN>>Toronto,ON"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-415","title":"TestCommentTelemetry/uncompressed_PHG_4ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03NN02739.63E#PHG26303/Siilinjarvi|\"p%T'.agff|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"N","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"26303","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,6348,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Siilinjarvi","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"Siilinjarvi","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"N","code":"#"},"extensions":{"telemetry":{"sequence":170,"analog":[415,559,5894,6348,null]},"phg":{"power_w":4,"height_haat_ft":640,"gain_dbi":3,"directivity_deg":null,"rate_per_hour":3}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} +{"id":"FAP-416","title":"TestCommentTelemetry/compressed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!/0%3RTh<6>dS_http://aprs.fi/|\"p%T'.ag|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.2347017530964,"Longitude":24.882575618361585,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":85.0097863745044,"Course":268,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.2347017530964,"longitude_deg":24.882575618361585,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":45.90161251323131,"course_deg":268},"telemetry":{"sequence":170,"analog":[415,559,5894,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-417","title":"TestCommentTelemetry/uncompressed_course_speed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL-14>APRS,qAR,IGATE:!6304.03N/02739.63E>036/010test |(7Cq?3<\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":659,"Vals":[3174,2748,2458,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"test","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"test","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":659,"analog":[3174,2748,2458,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} +{"id":"FAP-418","title":"TestCommentTelemetry/uncompressed_altitude_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} +{"id":"FAP-419","title":"TestCommentTelemetry/compressed_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-420","title":"TestCommentTelemetry/uncompressed_bits_LSB_first","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>|ss1122334455!\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,1840],"Bits":"10000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,1840],"digital":[true,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} +{"id":"FAP-421","title":"TestCommentTelemetry/pipe_in_comment_text","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>a|b |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"a|b","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"a|b","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":0,"analog":[0,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} +{"id":"FAP-422","title":"TestCommentTelemetry/uncompressed_telemetry_then_DAO","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>comment|\"p%T|!W12!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.06718333333333,"Longitude":27.660533333333333,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"comment","messaging":false,"latitude_deg":63.06718333333333,"longitude_deg":27.660533333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":170,"analog":[415,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-423","title":"TestCommentTelemetryInvalid/too_long","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!!!!!!!!!!!!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!!!!!!!!!!!!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-424","title":"TestCommentTelemetryInvalid/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-425","title":"TestCommentTelemetryInvalid/odd_length","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-426","title":"TestCommentTelemetryInvalid/invalid_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!}|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!}|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!}|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-427","title":"TestCommentTelemetryInvalid/single_pipe","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-428","title":"TestMicEBase91Telemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-429","title":"TestMicEBase91Telemetry1Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L50","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-430","title":"TestMicEBase91TelemetryHarder","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L84","packet":"N6BG-1>S6QTUX:`+,^l!cR/'\";z}||ss11223344bb!\"|!w>f!|3","outcome":"accept","source_expected":{"fap_header":{"source":"N6BG-1","destination":"S6QTUX","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":36.24305311355312,"Longitude":-115.27779304029303,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"R","Speed":0,"Course":171,"Altitude":736,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,5980],"Bits":"10000000"},"Capabilities":null,"MBits":"101","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"'||3","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N6BG-1","destination":"S6QTUX","path":[]},"payload":{"type":"position","comment":"'||3","latitude_deg":36.24305311355312,"longitude_deg":-115.27779304029303,"ambiguity":0,"symbol":{"table_id":"/","code":"R"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":171},"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,5980],"digital":[true,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-431","title":"TestMicEBase91TelemetryDAOConfusing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L102","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!wEU!![S|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":86,"Vals":[3328,0,5328,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":86,"analog":[3328,0,5328,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-432","title":"TestTelemetryClassic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L12","packet":"SRCCALL>APRS:T#324,000,038,255,.12,50.12,01000001","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":324,"Vals":[0,38,255,0.12,50.12],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":324,"analog":[0,38,255,0.12,50.12],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-433","title":"TestTelemetryRelaxed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L43","packet":"SRCCALL>APRS:T#1,-1,2147483647,-2147483648,0.000001,-0.0000001,01000001 comment","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[-1,2147483647,-2147483648,1e-06,-1e-07],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[-1,2147483647,-2147483648,1e-06,-1e-07],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-434","title":"TestTelemetryShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L71","packet":"SRCCALL>APRS:T#001,42","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[42,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[42,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-435","title":"TestTelemetryUndefinedMiddle","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L101","packet":"SRCCALL>APRS:T#1,1,,3,,5","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[1,null,3,null,5],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[1,null,3,null,5]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-436","title":"TestTelemetryPartiallyCorrect","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L140","packet":"SRCCALL>APRS:T#1,1,f,3","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[1,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[1,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-437","title":"TestTelemetryInvalidDash","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L239","packet":"SRCCALL>APRS:T#1,1,-,3","outcome":"reject","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: tlm_inv: invalid telemetry value: -"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRCCALL>APRS:T#1,1,-,3"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-438","title":"TestTelemetryInvalidTrailingDot","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L250","packet":"SRCCALL>APRS:T#1,1,-1.,3","outcome":"reject","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: tlm_inv: invalid telemetry value: -1."},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRCCALL>APRS:T#1,1,-1.,3"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-439","title":"TestTelemetryParameterMessage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L264","packet":"SRCCALL>APRS::N0CALL-10:PARM.Vin,Rx1h,Dg1h,Eff1h,EffTo,O1,O2,O3,O4,I1,I2,I3,I4","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL-10","Text":"PARM.Vin,Rx1h,Dg1h,Eff1h,EffTo,O1,O2,O3,O4,I1,I2,I3,I4","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-10","definition":{"type":"telemetry_parameters","channels":["Vin","Rx1h","Dg1h","Eff1h","EffTo","O1","O2","O3","O4","I1","I2","I3","I4"]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"FAP-440","title":"TestTelemetryParameterMessageTypes/PARM","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :PARM.Vin,Rx1h","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"PARM.Vin,Rx1h","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_parameters","channels":["Vin","Rx1h"]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"FAP-441","title":"TestTelemetryParameterMessageTypes/UNIT","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :UNIT.Volt,Pkt/h","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"UNIT.Volt,Pkt/h","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_units","channels":["Volt","Pkt/h"]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"FAP-442","title":"TestTelemetryParameterMessageTypes/EQNS","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :EQNS.0,0.075,0,0,1,0","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"EQNS.0,0.075,0,0,1,0","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_equations","coefficients":[{"a":0.0,"b":0.075,"c":0.0},{"a":0.0,"b":1.0,"c":0.0}]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"FAP-443","title":"TestTelemetryParameterMessageTypes/BITS","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :BITS.11111111,My station","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"BITS.11111111,My station","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_bits","sense":[true,true,true,true,true,true,true,true],"project_title":"My station"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"FAP-444","title":"TestTelemetryParameterMessageTypes/parm_lowercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :parm.Vin,Rx1h","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"parm.Vin,Rx1h","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_parameters","channels":["Vin","Rx1h"]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.type":"message","$.payload.definition":{"missing":true}}}} +{"id":"FAP-445","title":"TestRegularMessageNotTelemetryMessage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L308","packet":"SRCCALL>APRS::N0CALL :Hello world","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Hello world","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Hello world","message_id":null}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-446","title":"TestTimestampRawDHMzUTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L19","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@151811z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"151811","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" {UIV32N}"}}} +{"id":"FAP-447","title":"TestTimestampDecodedDHMzUTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L35","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@151811z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" {UIV32N}"}}} +{"id":"FAP-448","title":"TestTimestampRawHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L50","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/055816h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"055816","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-449","title":"TestTimestampDecodedHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L66","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/181144h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-450","title":"TestTimestampRawDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L81","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/060642/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"060642","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-451","title":"TestTimestampDecodedDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L98","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/152011/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-452","title":"TestTimestampFutureRollback/DDHHMMz_UTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@162359z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" {UIV32N}"}}} +{"id":"FAP-453","title":"TestTimestampFutureRollback/DDHHMM/_local","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/162359/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-454","title":"TestTimestampInvalidLocation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L224","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@000000z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.type":"malformed","$.header":{"missing":true},"$.payload":{"missing":true}}}} +{"id":"FAP-455","title":"TestTimestampInvalidObject","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L247","packet":"SRC>APRS,TCPIP*:;TestObj *000000z4903.50N/07201.75W-Test","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"TestObj ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Test","Warnings":[{"Code":"timestamp_inv","Msg":"invalid object timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRC","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"object","comment":"Test","name":"TestObj ","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-456","title":"TestTimestampInvalidStatus","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L270","packet":"SRC>APRS,TCPIP*:>000000zStatus text here","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"Status text here","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRC","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"status","text":"Status text here"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.type":"malformed","$.header":{"missing":true},"$.payload":{"missing":true}}}} +{"id":"FAP-457","title":"TestUncompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_moving_test.go#L16","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} +{"id":"FAP-458","title":"TestUncompressedNortheast","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L14","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"/RELAY,WIDE, OH2AP Jarvenpaa"}}} +{"id":"FAP-459","title":"TestUncompressedSouthwest","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L64","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51S/02505.68W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-460","title":"TestUncompressedAmbiguity3","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L82","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!602 . S/0250 . W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.416666666666664,"Longitude":-25.083333333333332,"PosAmbiguity":3,"PosResolution":18520,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.416666666666664,"longitude_deg":-25.083333333333332,"ambiguity":3,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"FAP-461","title":"TestUncompressedAmbiguity4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L103","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!60 . S/025 . W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.5,"Longitude":-25.5,"PosAmbiguity":4,"PosResolution":111120,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.5,"longitude_deg":-25.5,"ambiguity":4,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"FAP-462","title":"TestUncompressedAmbiguityUnbalanced","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L124","packet":"SRC>APRS,TCPIP*,qAC,T2POLAND:;SPBLTZ *010020z5210. N/021 . E? Comment","outcome":"reject","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2POLAND","WasDigied":false}]},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":52.175,"Longitude":null,"PosAmbiguity":2,"PosResolution":null,"SymbolTable":"/","SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"SPBLTZ ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: loc_amb_inv: invalid position ambiguity: longitude has spaces in non-ambiguous digits"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"original_wire":"SRC>APRS,TCPIP*,qAC,T2POLAND:;SPBLTZ *010020z5210. N/021 . E? Comment"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-463","title":"TestUncompressedAmbiguityLonMoreDigits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L139","packet":"OH2RDP-1>BEACON-15:!5210.5 N/02101.73E#Comment here","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.17583333333334,"Longitude":21.029166666666665,"PosAmbiguity":1,"PosResolution":185.2,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Comment here","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"Comment here","messaging":false,"latitude_deg":52.17583333333334,"longitude_deg":21.029166666666665,"ambiguity":1,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"FAP-464","title":"TestUncompressedLastResort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L163","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:hoponassualku!6028.51S/02505.68W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-465","title":"TestUncompressedWxSymbolComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L185","packet":"A0RID-1>KC0PID-7,WIDE1,qAR,NX0R-6:=3851.38N/09908.75W_Home of KA0RID","outcome":"accept","source_expected":{"fap_header":{"source":"A0RID-1","destination":"KC0PID-7","digipeaters":[{"Call":"WIDE1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"NX0R-6","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.85633333333333,"Longitude":-99.14583333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"A0RID-1","destination":"KC0PID-7","path":[{"address":"WIDE1","repeated":false},{"address":"qAR","repeated":false},{"address":"NX0R-6","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":38.85633333333333,"longitude_deg":-99.14583333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"Home of KA0RID","$.payload.extensions.weather":null}}} +{"id":"FAP-466","title":"TestUncompressedWhitespaceTrimming","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L207","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220 RELAY,WIDE, OH2AP Jarvenpaa \t ","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" RELAY,WIDE, OH2AP Jarvenpaa \t "}}} +{"id":"FAP-467","title":"TestPHGRA","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L223","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG72205/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"72205","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null,"rate_per_hour":5}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"5/RELAY,WIDE, OH2AP Jarvenpaa","$.payload.extensions.phg.rate_per_hour":null}}} +{"id":"FAP-468","title":"TestPHGRALetterSuffix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L239","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220Z/some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220Z","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"Z/some comment"}}} +{"id":"FAP-469","title":"TestPHGInvalidNotParsed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L255","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7/20some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"PHG7/20some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"PHG7/20some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-470","title":"TestRNG","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L267","packet":"OH2RDP-1>BEACON-15:!6028.51N/02505.68E#RNG0050some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":80.4672,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"range":{"miles":50.0}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-471","title":"TestUncompressedTimestampAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L286","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=000079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":"13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" 13.8V 15CYB1RUS-9 Mobile Tracker"}}} +{"id":"FAP-472","title":"TestUncompressedNegativeAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L308","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=-00079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":-24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":"13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":-79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" 13.8V 15CYB1RUS-9 Mobile Tracker"}}} +{"id":"FAP-473","title":"TestUncompressedBasicYC0SHR","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L324","packet":"YC0SHR>APU25N,TCPIP*,qAC,ALDIMORI:=0606.23S/10644.61E-GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","outcome":"accept","source_expected":{"fap_header":{"source":"YC0SHR","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"ALDIMORI","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.103833333333333,"Longitude":106.7435,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"YC0SHR","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"ALDIMORI","repeated":false}]},"payload":{"type":"position","comment":"GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","messaging":true,"latitude_deg":-6.103833333333333,"longitude_deg":106.7435,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-474","title":"TestWxBasic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L13","packet":"OH2RDP-1>BEACON-15,WIDE2-1,qAo,OH2MQK-1:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":0.89408,"unit":"m/s"},"gust":{"value":1.78816,"unit":"m/s"},"temperature":{"value":3.888888888888889,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":1.016,"unit":"mm"},"rain_since_midnight":{"value":0.508,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"FAP-475","title":"TestWxWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L77","packet":"OH2GAX>APU25N,TCPIP*,qAC,OH2GAX:@101317z6024.78N/02503.97E_156/001g005t038r000p000P000h91b10093/type ?sade for more wx info","outcome":"accept","source_expected":{"fap_header":{"source":"OH2GAX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"OH2GAX","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.413,"Longitude":25.066166666666668,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":156,"WindSpeed":0.44704,"WindGust":2.2352,"Temp":3.3333333333333335,"TempIn":null,"Humidity":91,"HumidityIn":null,"Pressure":1009.3,"Rain1h":0,"Rain24h":0,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"/type ?sade for more wx info","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"OH2GAX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"OH2GAX","repeated":false}]},"payload":{"type":"position","comment":"/type ?sade for more wx info","messaging":true,"latitude_deg":60.413,"longitude_deg":25.066166666666668,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":156,"unit":"degrees"},"wind_speed":{"value":0.44704,"unit":"m/s"},"gust":{"value":2.2352,"unit":"m/s"},"temperature":{"value":3.3333333333333335,"unit":"celsius"},"humidity":{"value":91,"unit":"percent"},"pressure":{"value":1009.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":0,"unit":"mm"},"rain_since_midnight":{"value":0,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"FAP-476","title":"TestWxThirdWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L134","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_068/001g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":68,"WindSpeed":0.44704,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":68,"unit":"degrees"},"wind_speed":{"value":0.44704,"unit":"m/s"},"gust":{"value":0.44704,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":5.08,"unit":"mm"},"rain_since_midnight":{"value":5.08,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"FAP-477","title":"TestWxNoWindDirectionCourse","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L191","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"gust":{"value":0.44704,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":5.08,"unit":"mm"},"rain_since_midnight":{"value":5.08,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"FAP-478","title":"TestWxNoWindNoTemp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L209","packet":"N0CALL>APJLSX,TCPIP*,qAS,KG4EXY:@061750z3849.10N/07725.10W_.../...g...t...r008p011P011b.....h..","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APJLSX","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAS","WasDigied":false},{"Call":"KG4EXY","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.818333333333335,"Longitude":-77.41833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":2.032,"Rain24h":2.794,"RainMidnight":2.794,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APJLSX","path":[{"address":"TCPIP","repeated":true},{"address":"qAS","repeated":false},{"address":"KG4EXY","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":38.818333333333335,"longitude_deg":-77.41833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"rain_1h":{"value":2.032,"unit":"mm"},"rain_24h":{"value":2.794,"unit":"mm"},"rain_since_midnight":{"value":2.794,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"FAP-479","title":"TestWxSpaceInWindGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L227","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":5.08,"unit":"mm"},"rain_since_midnight":{"value":5.08,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"FAP-480","title":"TestWxWaterLevel/positive_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F0123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":3.7490400000000004,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-481","title":"TestWxWaterLevel/negative_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F-042","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":-1.2801600000000002,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-482","title":"TestWxWaterLevel/missing_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F....","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-483","title":"TestWxRadiation/12_microsieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":12000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-484","title":"TestWxRadiation/45_millisieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X456","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":45000000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-485","title":"TestWxRadiation/zero_exponent","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X100","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":10,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-486","title":"TestWxRadiation/missing_radiation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-487","title":"TestWxBatteryVoltage/battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V128","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":12.8,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-488","title":"TestWxBatteryVoltage/missing_battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-489","title":"TestWxAllFieldsMissing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L435","packet":"N0CALL>APRS,TCPIP*:_12032359c...s...g...t...r...p...P...h..b.....#...Os...L...F....X...V...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":""}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-490","title":"TestWxPositionlessWithSnowfall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L492","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:_12032359c180s001g002t033r010p040P080#456b09860h98Os010L500","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":180,"WindSpeed":0.44704,"WindGust":0.89408,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":2.54,"Rain24h":10.16,"RainMidnight":20.32,"Snow24h":2.54,"Luminosity":500,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":180,"unit":"degrees"},"wind_speed":{"value":0.44704,"unit":"m/s"},"gust":{"value":0.89408,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":2.54,"unit":"mm"},"rain_24h":{"value":10.16,"unit":"mm"},"rain_since_midnight":{"value":20.32,"unit":"mm"},"snow_24h":{"value":2.54,"unit":"mm"},"luminosity":{"value":500,"unit":"W/m2"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-491","title":"TestULTW","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L13","packet":"N0CALL-14>APN391,WIDE2-1,qAo,IGATE-3:$ULTW0053002D028D02FA2813000D87BD000103E8015703430010000C","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APN391","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE-3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":64,"WindSpeed":0.3,"WindGust":2.3,"Temp":18.5,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1025.9,"Rain1h":null,"Rain24h":null,"RainMidnight":4.1,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APN391","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE-3","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":64,"unit":"degrees"},"wind_speed":{"value":0.3,"unit":"m/s"},"gust":{"value":2.3,"unit":"m/s"},"temperature":{"value":18.5,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1025.9,"unit":"hPa"},"rain_since_midnight":{"value":4.1,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} +{"id":"FAP-492","title":"TestULTWBelowZero","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L61","packet":"N0CALL>APN391,qAo,IGATE-1:$ULTW00000000FFEA0000296F000A9663000103E80016025D","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APN391","digipeaters":[{"Call":"qAo","WasDigied":false},{"Call":"IGATE-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":null,"WindGust":0,"Temp":-19,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1060.7,"Rain1h":null,"Rain24h":null,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APN391","path":[{"address":"qAo","repeated":false},{"address":"IGATE-1","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":-19,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1060.7,"unit":"hPa"},"rain_since_midnight":{"value":0,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} +{"id":"FAP-493","title":"TestULTWLogging","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L109","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D000028710166--------0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":null,"HumidityIn":null,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} +{"id":"FAP-494","title":"TestULTWLoggingHumidity","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L165","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D00002871016602BC031E0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":70,"HumidityIn":79,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"humidity":{"value":70,"unit":"percent"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} +{"id":"FAP-495","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L33","packet":"N0CALL-1>APRS,DIGI1,DIGI2*:)AID #2!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":[{"Call":"DIGI1","WasDigied":false},{"Call":"DIGI2","WasDigied":true}]},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[{"address":"DIGI1","repeated":false},{"address":"DIGI2","repeated":true}]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-496","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L41","packet":"N0CALL>APRS:T#324,000,038,255,.12,50.12,01000001","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":324,"Vals":[0,38,255,0.12,50.12],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":324,"analog":[0,38,255,0.12,50.12],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-497","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L50","packet":"N0CALL-1>BEACON-15,WIDE2-1,qAo,N0CALL-2:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125L500F0123X123V128XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"N0CALL-2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":500,"WaterLevel":3.7490400000000004,"Radiation":12000,"BatteryVoltage":12.8,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"N0CALL-2","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":0.89408,"unit":"m/s"},"gust":{"value":1.78816,"unit":"m/s"},"temperature":{"value":3.888888888888889,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":1.016,"unit":"mm"},"rain_since_midnight":{"value":0.508,"unit":"mm"},"luminosity":{"value":500,"unit":"W/m2"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"FAP-498","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L99","packet":"N0CALL-14>APU25N,WIDE2-2,qAR,LANSNG:>051421>>Nashville,TN>>Toronto,ON","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"051421>>Nashville,TN>>Toronto,ON","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"status","text":"051421>>Nashville,TN>>Toronto,ON"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-499","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L121","packet":"N0CALL-1>BEACON-15,N0CALL-2*,WIDE:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"BEACON-15","digipeaters":[{"Call":"N0CALL-2","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"BEACON-15","path":[{"address":"N0CALL-2","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"/RELAY,WIDE, OH2AP Jarvenpaa"}}} +{"id":"FAP-500","title":"Supplementary literal / removed CLI log timestamp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/parse-speed-test/main_test.go#L12","packet":"N0CALL-1>APRS:;LEADER *000045z4903.50N/07201.75W>088/036","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER *","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_inv: invalid object alive/killed indicator: 0"},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"removed CLI log timestamp. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"original_wire":"N0CALL-1>APRS:;LEADER *000045z4903.50N/07201.75W>088/036"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-501","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L175","packet":"OH7LZB-2>APRS,WIDE1-1,WIDE2-1,qAo,OH7LZB:!6128.23N/02353.52E-PHG2360/Testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-2","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":61.4705,"Longitude":23.892,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"2360","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Testing","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"OH7LZB-2","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"position","comment":"Testing","messaging":false,"latitude_deg":61.4705,"longitude_deg":23.892,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"extensions":{"phg":{"power_w":4,"height_haat_ft":80,"gain_dbi":6,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"/Testing"}}} +{"id":"FAP-502","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L25","packet":"N0CALL>APRS:!6304.03N/02739.63E#","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-503","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L30","packet":"N0CALL>APRS:!2338.56S/04647.82W#","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-23.642666666666667,"Longitude":-46.797,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-23.642666666666667,"longitude_deg":-46.797,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-504","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L35","packet":"N0CALL>APRS:!2259.99N/17759.99W#","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":22.999833333333335,"Longitude":-177.99983333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":22.999833333333335,"longitude_deg":-177.99983333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-505","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L40","packet":"N0CALL>APRS:!5221.84N/01406.27E>353/045/A=000314","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.364,"Longitude":14.1045,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":83.34,"Course":353,"Altitude":95.7072,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.364,"longitude_deg":14.1045,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":45.0,"course_deg":353},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":314.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-506","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L45","packet":"N0CALL>APRS:!5221.84N/01406.27E>/A=000314","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.364,"Longitude":14.1045,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":95.7072,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.364,"longitude_deg":14.1045,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":314.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-507","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L50","packet":"N0CALL>APRS:!5221.8 N/01406.2 E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.36416666666667,"Longitude":14.104166666666666,"PosAmbiguity":1,"PosResolution":185.2,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.36416666666667,"longitude_deg":14.104166666666666,"ambiguity":1,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"FAP-508","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L55","packet":"N0CALL>APRS:!5221. N/01406. E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.358333333333334,"Longitude":14.108333333333333,"PosAmbiguity":2,"PosResolution":1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.358333333333334,"longitude_deg":14.108333333333333,"ambiguity":2,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"FAP-509","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L60","packet":"N0CALL>APRS:!522 . N/0140 . E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.416666666666664,"Longitude":14.083333333333334,"PosAmbiguity":3,"PosResolution":18520,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.416666666666664,"longitude_deg":14.083333333333334,"ambiguity":3,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"FAP-510","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L65","packet":"N0CALL>APRS:!52 . N/014 . E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.5,"Longitude":14.5,"PosAmbiguity":4,"PosResolution":111120,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.5,"longitude_deg":14.5,"ambiguity":4,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"FAP-511","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L70","packet":"N0CALL>APRS:!3909.22N/08437.32W>!wjM!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":39.153800366300366,"Longitude":-84.62208058608059,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":39.153800366300366,"longitude_deg":-84.62208058608059,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-512","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L75","packet":"N0CALL>APRS:!3959.99N/08459.99W>!w{{!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":39.99999816849817,"Longitude":-84.99999816849817,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":39.99999816849817,"longitude_deg":-84.99999816849817,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-513","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L81","packet":"N0CALL>APRS:!4822.38N/01542.88E>321/034/A=000633Comment blah!wr^!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":48.37314835164835,"Longitude":15.714778388278388,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":62.968,"Course":321,"Altitude":192.9384,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"Comment blah","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Comment blah","messaging":false,"latitude_deg":48.37314835164835,"longitude_deg":15.714778388278388,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":34.0,"course_deg":321},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":633.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-514","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L87","packet":"N0CALL>APRS:/123045h6304.03N/02739.63E#","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"123045","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-515","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L93","packet":"N0CALL>APRS:/000000h5221.84N/01406.27E>353/045/A=000314","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.364,"Longitude":14.1045,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":83.34,"Course":353,"Altitude":95.7072,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"000000","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.364,"longitude_deg":14.1045,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":45.0,"course_deg":353},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":314.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-516","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L99","packet":"N0CALL>APRS:=6304.03N/02739.63E#","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-517","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L105","packet":"N0CALL>APRS:@123045h6304.03N/02739.63E#","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"123045","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} diff --git a/packages/aprs/tests/vectors/hdr.jsonl b/packages/aprs/tests/vectors/hdr.jsonl new file mode 100644 index 0000000..4f4eb08 --- /dev/null +++ b/packages/aprs/tests/vectors/hdr.jsonl @@ -0,0 +1,51 @@ +{"id":"HDR-001","title":"No digipeaters","profile":"core-1.1","source":"APRS101 pp. 12, 83-85","packet":"N0CALL>APRS:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":[]} +{"id":"HDR-002","title":"Source SSID zero explicit","profile":"core-1.1","source":"APRS101 pp. 12, 83-85","packet":"N0CALL-0>APRS:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL-0","destination":"APRS","path":[]},"kind":"status","status_text":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL-0","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":[]} +{"id":"HDR-003","title":"Maximum source SSID","profile":"core-1.1","source":"APRS101 pp. 12, 83-85","packet":"N0CALL-15>APRS:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL-15","destination":"APRS","path":[]},"kind":"status","status_text":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL-15","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":[]} +{"id":"HDR-004","title":"One used and one unused digi","profile":"core-1.1","source":"APRS101 pp. 12, 83-85","packet":"N0CALL>APRS,W1ABC*,WIDE2-1:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"W1ABC","repeated_marker":true},{"address":"WIDE2-1","repeated_marker":false}]},"kind":"status","status_text":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"W1ABC","repeated":true},{"address":"WIDE2-1","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":[]} +{"id":"HDR-005","title":"Multiple explicit repeated markers","profile":"core-1.1","source":"APRS101 pp. 12, 83-85","packet":"N0CALL>APRS,W1ABC*,W2ABC*,WIDE2-1:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"W1ABC","repeated_marker":true},{"address":"W2ABC","repeated_marker":true},{"address":"WIDE2-1","repeated_marker":false}]},"kind":"status","status_text":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"W1ABC","repeated":true},{"address":"W2ABC","repeated":true},{"address":"WIDE2-1","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":[]} +{"id":"HDR-006","title":"Eight RF digipeaters","profile":"core-1.1","source":"APRS101 pp. 12, 83-85","packet":"N0CALL>APRS,D1,D2,D3,D4,D5,D6,D7,D8:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"D1","repeated_marker":false},{"address":"D2","repeated_marker":false},{"address":"D3","repeated_marker":false},{"address":"D4","repeated_marker":false},{"address":"D5","repeated_marker":false},{"address":"D6","repeated_marker":false},{"address":"D7","repeated_marker":false},{"address":"D8","repeated_marker":false}]},"kind":"status","status_text":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"D1","repeated":false},{"address":"D2","repeated":false},{"address":"D3","repeated":false},{"address":"D4","repeated":false},{"address":"D5","repeated":false},{"address":"D6","repeated":false},{"address":"D7","repeated":false},{"address":"D8","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":[]} +{"id":"HDR-007","title":"Colon belongs to payload after first separator","profile":"core-1.1","source":"APRS101 pp. 12, 83-85","packet":"N0CALL>APRS:>radio: ready > listening","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"radio: ready > listening"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"radio: ready > listening"}},"unmapped":[]} +{"id":"HDR-008","title":"Destination dispatch AIR1","profile":"historical-1.0","source":"APRS101 pp. 13-15","packet":"N0CALL>AIR1:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"AIR1","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"AIR1","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-009","title":"Destination dispatch ALL","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>ALL:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"ALL","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"ALL","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-010","title":"Destination dispatch APRS","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>APRS:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-011","title":"Destination dispatch BEACON","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>BEACON:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-012","title":"Destination dispatch CQ","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>CQ:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"CQ","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"CQ","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-013","title":"Destination dispatch GPS","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>GPS:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"GPS","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"GPS","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-014","title":"Destination dispatch DF1","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>DF1:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"DF1","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"DF1","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-015","title":"Destination dispatch DGPS","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>DGPS:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"DGPS","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"DGPS","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-016","title":"Destination dispatch DRILL","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>DRILL:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"DRILL","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"DRILL","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-017","title":"Destination dispatch DX","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>DX:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"DX","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"DX","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-018","title":"Destination dispatch ID","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>ID:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"ID","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"ID","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-019","title":"Destination dispatch JAVA","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>JAVA:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"JAVA","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"JAVA","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-020","title":"Destination dispatch MAIL","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>MAIL:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"MAIL","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"MAIL","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-021","title":"Destination dispatch MICE","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>MICE:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"MICE","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"MICE","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-022","title":"Destination dispatch QST","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>QST:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"QST","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"QST","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-023","title":"Destination dispatch QTH","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>QTH:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"QTH","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"QTH","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-024","title":"Destination dispatch RTCM","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>RTCM:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"RTCM","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"RTCM","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-025","title":"Destination dispatch SKY","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>SKY:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"SKY","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"SKY","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-026","title":"Destination dispatch SPACE","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>SPACE:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"SPACE","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"SPACE","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-027","title":"Destination dispatch SPCL","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>SPCL:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"SPCL","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"SPCL","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-028","title":"Destination dispatch SYM","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>SYM:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"SYM","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"SYM","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-029","title":"Destination dispatch TEL","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>TEL:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"TEL","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"TEL","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-030","title":"Destination dispatch TEST","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>TEST:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"TEST","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"TEST","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-031","title":"Destination dispatch TLM","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>TLM:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"TLM","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"TLM","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-032","title":"Destination dispatch WX","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>WX:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"WX","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"WX","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-033","title":"Destination dispatch ZIP1","profile":"historical-1.0","source":"APRS101 pp. 13-15","packet":"N0CALL>ZIP1:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"ZIP1","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"ZIP1","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-034","title":"Destination dispatch APM326","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>APM326:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APM326","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"APRS-address"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APM326","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-035","title":"Destination dispatch ALTNET","profile":"core-1.1","source":"APRS101 pp. 13-15","packet":"N0CALL>ALTNET:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"ALTNET","path":[]},"kind":"status","status_text":"Ready","destination_semantics":"alternate-net"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"ALTNET","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_semantics"]} +{"id":"HDR-036","title":"Historical destination SSID routing 0","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-0:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-0","path":[]},"kind":"status","status_text":"Ready","destination_ssid":0,"historical_generic_path":"VIA"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-0","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-037","title":"Historical destination SSID routing 1","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-1:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-1","path":[]},"kind":"status","status_text":"Ready","destination_ssid":1,"historical_generic_path":"WIDE1-1"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-1","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-038","title":"Historical destination SSID routing 2","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-2:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-2","path":[]},"kind":"status","status_text":"Ready","destination_ssid":2,"historical_generic_path":"WIDE2-2"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-2","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-039","title":"Historical destination SSID routing 3","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-3:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-3","path":[]},"kind":"status","status_text":"Ready","destination_ssid":3,"historical_generic_path":"WIDE3-3"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-3","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-040","title":"Historical destination SSID routing 4","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-4:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-4","path":[]},"kind":"status","status_text":"Ready","destination_ssid":4,"historical_generic_path":"WIDE4-4"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-4","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-041","title":"Historical destination SSID routing 5","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-5:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-5","path":[]},"kind":"status","status_text":"Ready","destination_ssid":5,"historical_generic_path":"WIDE5-5"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-5","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-042","title":"Historical destination SSID routing 6","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-6:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-6","path":[]},"kind":"status","status_text":"Ready","destination_ssid":6,"historical_generic_path":"WIDE6-6"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-6","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-043","title":"Historical destination SSID routing 7","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-7:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-7","path":[]},"kind":"status","status_text":"Ready","destination_ssid":7,"historical_generic_path":"WIDE7-7"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-7","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-044","title":"Historical destination SSID routing 8","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-8:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-8","path":[]},"kind":"status","status_text":"Ready","destination_ssid":8,"historical_generic_path":"North"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-8","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-045","title":"Historical destination SSID routing 9","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-9:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-9","path":[]},"kind":"status","status_text":"Ready","destination_ssid":9,"historical_generic_path":"South"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-9","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-046","title":"Historical destination SSID routing 10","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-10:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-10","path":[]},"kind":"status","status_text":"Ready","destination_ssid":10,"historical_generic_path":"East"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-10","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-047","title":"Historical destination SSID routing 11","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-11:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-11","path":[]},"kind":"status","status_text":"Ready","destination_ssid":11,"historical_generic_path":"West"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-11","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-048","title":"Historical destination SSID routing 12","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-12:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-12","path":[]},"kind":"status","status_text":"Ready","destination_ssid":12,"historical_generic_path":"North + WIDE"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-12","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-049","title":"Historical destination SSID routing 13","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-13:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-13","path":[]},"kind":"status","status_text":"Ready","destination_ssid":13,"historical_generic_path":"South + WIDE"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-13","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-050","title":"Historical destination SSID routing 14","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-14:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-14","path":[]},"kind":"status","status_text":"Ready","destination_ssid":14,"historical_generic_path":"East + WIDE"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-14","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} +{"id":"HDR-051","title":"Historical destination SSID routing 15","profile":"historical-1.0","source":"APRS101 pp. 15-16","packet":"N0CALL>APRS-15:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS-15","path":[]},"kind":"status","status_text":"Ready","destination_ssid":15,"historical_generic_path":"West + WIDE"},"note":"Decode the historical field; this is not a recommendation to transmit this path.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS-15","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_ssid","$.historical_generic_path"]} diff --git a/packages/aprs/tests/vectors/mic.jsonl b/packages/aprs/tests/vectors/mic.jsonl new file mode 100644 index 0000000..8bd2645 --- /dev/null +++ b/packages/aprs/tests/vectors/mic.jsonl @@ -0,0 +1,265 @@ +{"id":"MIC-001","title":"Standard position comment 000","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>332UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"332UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"000","position_comment_set":"standard","position_comment":"Emergency","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"332UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"emergency","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-002","title":"Standard position comment 001","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>33RUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"33RUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"001","position_comment_set":"standard","position_comment":"Priority","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"33RUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"priority","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-003","title":"Standard position comment 010","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>3S2UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"3S2UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"010","position_comment_set":"standard","position_comment":"Special","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"3S2UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"special","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-004","title":"Standard position comment 011","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>3SRUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"3SRUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"011","position_comment_set":"standard","position_comment":"Committed","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"3SRUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"committed","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-005","title":"Standard position comment 100","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-006","title":"Standard position comment 101","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>S3RUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S3RUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"101","position_comment_set":"standard","position_comment":"In Service","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S3RUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"in_service","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-007","title":"Standard position comment 110","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>SS2UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"SS2UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"110","position_comment_set":"standard","position_comment":"En Route","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"SS2UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"en_route","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-008","title":"Standard position comment 111","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>SSRUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"SSRUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"111","position_comment_set":"standard","position_comment":"Off Duty","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"SSRUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"off_duty","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-009","title":"Custom position comment 001","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>33CUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"33CUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"001","position_comment_set":"custom","position_comment":"Custom-6","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"33CUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-010","title":"Custom position comment 010","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>3D2UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"3D2UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"010","position_comment_set":"custom","position_comment":"Custom-5","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"3D2UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-011","title":"Custom position comment 011","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>3DCUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"3DCUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"011","position_comment_set":"custom","position_comment":"Custom-4","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"3DCUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-012","title":"Custom position comment 100","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>D32UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"D32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"custom","position_comment":"Custom-3","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"D32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-013","title":"Custom position comment 101","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>D3CUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"D3CUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"101","position_comment_set":"custom","position_comment":"Custom-2","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"D3CUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-014","title":"Custom position comment 110","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>DD2UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"DD2UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"110","position_comment_set":"custom","position_comment":"Custom-1","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"DD2UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-015","title":"Custom position comment 111","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>DDCUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"DDCUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"111","position_comment_set":"custom","position_comment":"Custom-0","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"DDCUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-016","title":"Longitude degrees 000","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`v_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-0.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-0.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-017","title":"Longitude degrees 001","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`w_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-1.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-1.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-018","title":"Longitude degrees 002","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`x_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-2.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-2.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-019","title":"Longitude degrees 003","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`y_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-3.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-3.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-020","title":"Longitude degrees 004","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`z_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-4.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-4.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-021","title":"Longitude degrees 005","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`{_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-5.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-5.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-022","title":"Longitude degrees 006","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`|_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-6.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-6.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-023","title":"Longitude degrees 007","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`}_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-7.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-7.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-024","title":"Longitude degrees 008","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`~_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-8.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-8.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-025","title":"Longitude degrees 009","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`\u007f_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-9.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-9.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-026","title":"Longitude degrees 010","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`&_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-10.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-10.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-027","title":"Longitude degrees 011","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`'_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-11.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-11.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-028","title":"Longitude degrees 012","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-12.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-12.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-029","title":"Longitude degrees 013","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`)_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-13.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-13.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-030","title":"Longitude degrees 014","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`*_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-14.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-14.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-031","title":"Longitude degrees 015","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`+_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-15.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-15.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-032","title":"Longitude degrees 016","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`,_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-16.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-16.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-033","title":"Longitude degrees 017","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`-_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-17.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-17.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-034","title":"Longitude degrees 018","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`._f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-18.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-18.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-035","title":"Longitude degrees 019","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`/_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-19.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-19.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-036","title":"Longitude degrees 020","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`0_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-20.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-20.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-037","title":"Longitude degrees 021","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`1_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-21.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-21.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-038","title":"Longitude degrees 022","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`2_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-22.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-22.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-039","title":"Longitude degrees 023","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`3_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-23.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-23.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-040","title":"Longitude degrees 024","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`4_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-24.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-24.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-041","title":"Longitude degrees 025","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`5_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-25.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-25.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-042","title":"Longitude degrees 026","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`6_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-26.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-26.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-043","title":"Longitude degrees 027","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`7_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-27.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-27.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-044","title":"Longitude degrees 028","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`8_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-28.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-28.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-045","title":"Longitude degrees 029","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`9_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-29.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-29.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-046","title":"Longitude degrees 030","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`:_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-30.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-30.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-047","title":"Longitude degrees 031","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`;_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-31.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-31.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-048","title":"Longitude degrees 032","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`<_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-32.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-32.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-049","title":"Longitude degrees 033","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`=_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-33.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-33.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-050","title":"Longitude degrees 034","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`>_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-34.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-34.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-051","title":"Longitude degrees 035","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`?_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-35.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-35.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-052","title":"Longitude degrees 036","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`@_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-36.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-36.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-053","title":"Longitude degrees 037","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`A_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-37.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-37.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-054","title":"Longitude degrees 038","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`B_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-38.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-38.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-055","title":"Longitude degrees 039","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`C_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-39.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-39.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-056","title":"Longitude degrees 040","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`D_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-40.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-40.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-057","title":"Longitude degrees 041","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`E_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-41.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-41.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-058","title":"Longitude degrees 042","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`F_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-42.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-42.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-059","title":"Longitude degrees 043","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`G_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-43.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-43.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-060","title":"Longitude degrees 044","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`H_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-44.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-44.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-061","title":"Longitude degrees 045","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`I_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-45.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-45.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-062","title":"Longitude degrees 046","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`J_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-46.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-46.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-063","title":"Longitude degrees 047","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`K_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-47.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-47.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-064","title":"Longitude degrees 048","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`L_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-48.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-48.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-065","title":"Longitude degrees 049","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`M_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-49.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-49.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-066","title":"Longitude degrees 050","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`N_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-50.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-50.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-067","title":"Longitude degrees 051","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`O_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-51.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-51.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-068","title":"Longitude degrees 052","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`P_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-52.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-52.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-069","title":"Longitude degrees 053","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`Q_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-53.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-53.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-070","title":"Longitude degrees 054","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`R_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-54.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-54.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-071","title":"Longitude degrees 055","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`S_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-55.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-55.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-072","title":"Longitude degrees 056","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`T_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-56.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-56.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-073","title":"Longitude degrees 057","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`U_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-57.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-57.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-074","title":"Longitude degrees 058","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`V_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-58.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-58.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-075","title":"Longitude degrees 059","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`W_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-59.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-59.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-076","title":"Longitude degrees 060","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`X_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-60.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-60.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-077","title":"Longitude degrees 061","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`Y_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-61.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-61.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-078","title":"Longitude degrees 062","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`Z_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-62.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-62.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-079","title":"Longitude degrees 063","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`[_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-63.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-63.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-080","title":"Longitude degrees 064","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`\\_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-64.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-64.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-081","title":"Longitude degrees 065","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`]_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-65.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-65.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-082","title":"Longitude degrees 066","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`^_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-66.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-66.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-083","title":"Longitude degrees 067","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`__f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-67.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-67.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-084","title":"Longitude degrees 068","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:``_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-68.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-68.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-085","title":"Longitude degrees 069","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`a_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-69.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-69.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-086","title":"Longitude degrees 070","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`b_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-70.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-70.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-087","title":"Longitude degrees 071","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`c_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-71.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-71.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-088","title":"Longitude degrees 072","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`d_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-72.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-72.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-089","title":"Longitude degrees 073","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`e_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-73.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-73.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-090","title":"Longitude degrees 074","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`f_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-74.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-74.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-091","title":"Longitude degrees 075","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`g_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-75.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-75.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-092","title":"Longitude degrees 076","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`h_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-76.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-76.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-093","title":"Longitude degrees 077","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`i_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-77.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-77.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-094","title":"Longitude degrees 078","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`j_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-78.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-78.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-095","title":"Longitude degrees 079","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`k_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-79.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-79.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-096","title":"Longitude degrees 080","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`l_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-80.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-80.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-097","title":"Longitude degrees 081","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`m_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-81.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-81.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-098","title":"Longitude degrees 082","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`n_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-82.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-82.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-099","title":"Longitude degrees 083","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`o_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-83.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-83.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-100","title":"Longitude degrees 084","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`p_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-84.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-84.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-101","title":"Longitude degrees 085","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`q_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-85.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-85.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-102","title":"Longitude degrees 086","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`r_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-86.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-86.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-103","title":"Longitude degrees 087","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`s_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-87.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-87.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-104","title":"Longitude degrees 088","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`t_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-88.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-88.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-105","title":"Longitude degrees 089","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`u_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-89.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-89.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-106","title":"Longitude degrees 090","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`v_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-90.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-90.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-107","title":"Longitude degrees 091","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`w_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-91.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-91.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-108","title":"Longitude degrees 092","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`x_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-92.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-92.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-109","title":"Longitude degrees 093","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`y_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-93.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-93.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-110","title":"Longitude degrees 094","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`z_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-94.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-94.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-111","title":"Longitude degrees 095","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`{_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-95.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-95.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-112","title":"Longitude degrees 096","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`|_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-96.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-96.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-113","title":"Longitude degrees 097","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`}_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-97.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-97.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-114","title":"Longitude degrees 098","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`~_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-98.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-98.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-115","title":"Longitude degrees 099","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`\u007f_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-99.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-99.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-116","title":"Longitude degrees 100","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`l_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-100.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-100.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-117","title":"Longitude degrees 101","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`m_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-101.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-101.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-118","title":"Longitude degrees 102","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`n_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-102.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-102.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-119","title":"Longitude degrees 103","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`o_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-103.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-103.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-120","title":"Longitude degrees 104","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`p_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-104.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-104.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-121","title":"Longitude degrees 105","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`q_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-105.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-105.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-122","title":"Longitude degrees 106","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`r_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-106.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-106.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-123","title":"Longitude degrees 107","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`s_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-107.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-107.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-124","title":"Longitude degrees 108","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`t_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-108.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-108.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-125","title":"Longitude degrees 109","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`u_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-109.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-109.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-126","title":"Longitude degrees 110","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`&_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-110.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-110.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-127","title":"Longitude degrees 111","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`'_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-111.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-111.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-128","title":"Longitude degrees 112","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-129","title":"Longitude degrees 113","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`)_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-113.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-113.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-130","title":"Longitude degrees 114","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`*_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-114.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-114.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-131","title":"Longitude degrees 115","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`+_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-115.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-115.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-132","title":"Longitude degrees 116","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`,_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-116.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-116.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-133","title":"Longitude degrees 117","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`-_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-117.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-117.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-134","title":"Longitude degrees 118","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`._f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-118.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-118.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-135","title":"Longitude degrees 119","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`/_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-119.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-119.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-136","title":"Longitude degrees 120","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`0_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-120.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-120.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-137","title":"Longitude degrees 121","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`1_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-121.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-121.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-138","title":"Longitude degrees 122","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`2_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-122.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-122.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-139","title":"Longitude degrees 123","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`3_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-123.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-123.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-140","title":"Longitude degrees 124","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`4_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-124.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-124.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-141","title":"Longitude degrees 125","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`5_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-125.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-125.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-142","title":"Longitude degrees 126","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`6_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-126.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-126.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-143","title":"Longitude degrees 127","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`7_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-127.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-127.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-144","title":"Longitude degrees 128","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`8_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-128.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-128.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-145","title":"Longitude degrees 129","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`9_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-129.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-129.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-146","title":"Longitude degrees 130","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`:_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-130.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-130.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-147","title":"Longitude degrees 131","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`;_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-131.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-131.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-148","title":"Longitude degrees 132","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`<_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-132.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-132.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-149","title":"Longitude degrees 133","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`=_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-133.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-133.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-150","title":"Longitude degrees 134","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`>_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-134.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-134.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-151","title":"Longitude degrees 135","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`?_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-135.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-135.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-152","title":"Longitude degrees 136","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`@_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-136.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-136.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-153","title":"Longitude degrees 137","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`A_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-137.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-137.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-154","title":"Longitude degrees 138","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`B_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-138.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-138.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-155","title":"Longitude degrees 139","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`C_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-139.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-139.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-156","title":"Longitude degrees 140","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`D_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-140.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-140.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-157","title":"Longitude degrees 141","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`E_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-141.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-141.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-158","title":"Longitude degrees 142","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`F_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-142.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-142.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-159","title":"Longitude degrees 143","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`G_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-143.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-143.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-160","title":"Longitude degrees 144","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`H_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-144.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-144.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-161","title":"Longitude degrees 145","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`I_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-145.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-145.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-162","title":"Longitude degrees 146","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`J_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-146.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-146.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-163","title":"Longitude degrees 147","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`K_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-147.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-147.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-164","title":"Longitude degrees 148","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`L_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-148.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-148.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-165","title":"Longitude degrees 149","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`M_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-149.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-149.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-166","title":"Longitude degrees 150","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`N_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-150.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-150.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-167","title":"Longitude degrees 151","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`O_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-151.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-151.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-168","title":"Longitude degrees 152","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`P_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-152.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-152.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-169","title":"Longitude degrees 153","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`Q_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-153.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-153.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-170","title":"Longitude degrees 154","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`R_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-154.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-154.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-171","title":"Longitude degrees 155","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`S_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-155.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-155.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-172","title":"Longitude degrees 156","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`T_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-156.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-156.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-173","title":"Longitude degrees 157","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`U_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-157.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-157.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-174","title":"Longitude degrees 158","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`V_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-158.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-158.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-175","title":"Longitude degrees 159","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`W_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-159.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-159.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-176","title":"Longitude degrees 160","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`X_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-160.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-160.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-177","title":"Longitude degrees 161","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`Y_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-161.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-161.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-178","title":"Longitude degrees 162","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`Z_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-162.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-162.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-179","title":"Longitude degrees 163","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`[_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-163.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-163.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-180","title":"Longitude degrees 164","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`\\_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-164.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-164.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-181","title":"Longitude degrees 165","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`]_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-165.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-165.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-182","title":"Longitude degrees 166","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`^_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-166.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-166.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-183","title":"Longitude degrees 167","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`__f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-167.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-167.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-184","title":"Longitude degrees 168","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:``_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-168.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-168.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-185","title":"Longitude degrees 169","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`a_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-169.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-169.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-186","title":"Longitude degrees 170","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`b_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-170.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-170.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-187","title":"Longitude degrees 171","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`c_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-171.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-171.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-188","title":"Longitude degrees 172","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`d_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-172.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-172.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-189","title":"Longitude degrees 173","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`e_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-173.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-173.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-190","title":"Longitude degrees 174","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`f_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-174.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-174.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-191","title":"Longitude degrees 175","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`g_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-175.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-175.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-192","title":"Longitude degrees 176","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`h_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-176.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-176.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-193","title":"Longitude degrees 177","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`i_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-177.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-177.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-194","title":"Longitude degrees 178","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`j_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-178.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-178.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-195","title":"Longitude degrees 179","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`k_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-179.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-179.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-196","title":"Longitude minutes 0","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(Xf\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.012333333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.012333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-197","title":"Longitude minutes 1","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(Yf\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.029,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.029,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-198","title":"Longitude minutes 8","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(`f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.145666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.145666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-199","title":"Longitude minutes 9","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(af\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.162333333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.162333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-200","title":"Longitude minutes 10","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(&f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.179,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.179,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-201","title":"Longitude minutes 11","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`('f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.195666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.195666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-202","title":"Longitude minutes 58","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(Vf\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.979,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.979,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-203","title":"Longitude minutes 59","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(Wf\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.995666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.995666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-204","title":"Longitude hundredths 0","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u001c\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.116666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.116666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-205","title":"Longitude hundredths 1","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u001d\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.116833333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.116833333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-206","title":"Longitude hundredths 2","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u001e\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.117,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.117,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-207","title":"Longitude hundredths 3","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u001f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.117166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.117166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-208","title":"Longitude hundredths 4","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_ \u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.117333333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.117333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-209","title":"Longitude hundredths 95","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_{\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.1325,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.1325,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-210","title":"Longitude hundredths 96","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_|\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.132666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.132666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-211","title":"Longitude hundredths 97","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_}\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.132833333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.132833333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-212","title":"Longitude hundredths 98","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_~\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.133,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.133,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-213","title":"Longitude hundredths 99","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u007f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.133166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.133166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-214","title":"Movement 0 kt / 0 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u001c\u001c\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":0,"speed_kmh":0.0,"course_code":0,"course_deg":0},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":0,"speed_knots":0,"course_code":0}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-215","title":"Movement 0 kt / 0 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fl \u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":0,"speed_kmh":0.0,"course_code":0,"course_deg":0},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":0,"speed_knots":0,"course_code":0}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-216","title":"Movement 0 kt / 1 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u001c\u001c\u001dj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":0,"speed_kmh":0.0,"course_code":1,"course_deg":1},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":1,"speed_knots":0,"course_code":1}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-217","title":"Movement 0 kt / 1 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fl \u001dj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":0,"speed_kmh":0.0,"course_code":1,"course_deg":1},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":1,"speed_knots":0,"course_code":1}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-218","title":"Movement 9 kt / 99 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u001cv\u007fj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":9,"speed_kmh":16.668,"course_code":99,"course_deg":99},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":99,"speed_knots":9,"course_code":99}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-219","title":"Movement 9 kt / 99 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_flz\u007fj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":9,"speed_kmh":16.668,"course_code":99,"course_deg":99},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":99,"speed_knots":9,"course_code":99}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-220","title":"Movement 10 kt / 100 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u001d\u001d\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":10,"speed_kmh":18.52,"course_code":100,"course_deg":100},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":100,"speed_knots":10,"course_code":100}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-221","title":"Movement 10 kt / 100 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fm!\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":10,"speed_kmh":18.52,"course_code":100,"course_deg":100},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":100,"speed_knots":10,"course_code":100}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-222","title":"Movement 73 kt / 294 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f#S32UVT:`(_fs@zj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":73,"speed_kmh":135.196,"course_code":294,"course_deg":294},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":294,"speed_knots":73,"course_code":294}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-224","title":"Movement 86 kt / 194 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f$Yzj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":86,"speed_kmh":159.272,"course_code":194,"course_deg":194},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":194,"speed_knots":86,"course_code":194}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-225","title":"Movement 86 kt / 194 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_ft]zj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":86,"speed_kmh":159.272,"course_code":194,"course_deg":194},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":194,"speed_knots":86,"course_code":194}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-226","title":"Movement 199 kt / 199 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f/w\u007fj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":199,"speed_kmh":368.548,"course_code":199,"course_deg":199},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":199,"speed_knots":199,"course_code":199}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-227","title":"Movement 199 kt / 199 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u007f{\u007fj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":199,"speed_kmh":368.548,"course_code":199,"course_deg":199},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":199,"speed_knots":199,"course_code":199}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-228","title":"Movement 200 kt / 200 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f0\u001e\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":200,"speed_kmh":370.4,"course_code":200,"course_deg":200},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":200,"speed_knots":200,"course_code":200}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-229","title":"Movement 200 kt / 200 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f0\"\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":200,"speed_kmh":370.4,"course_code":200,"course_deg":200},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":200,"speed_knots":200,"course_code":200}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-230","title":"Movement 799 kt / 360 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fkyXj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":799,"speed_kmh":1479.748,"course_code":360,"course_deg":360},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":360,"speed_knots":799,"course_code":360}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-231","title":"Movement 799 kt / 360 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fk}Xj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":799,"speed_kmh":1479.748,"course_code":360,"course_deg":360},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":360,"speed_knots":799,"course_code":360}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-232","title":"Hemisphere NE","profile":"core-1.1","source":"APRS101 pp. 43-49","packet":"N0CALL>S32UV4:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UV4","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UV4","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-233","title":"Hemisphere NW","profile":"core-1.1","source":"APRS101 pp. 43-49","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-234","title":"Hemisphere SE","profile":"core-1.1","source":"APRS101 pp. 43-49","packet":"N0CALL>S325V4:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S325V4","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":-33.427333333333,"longitude_deg":112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S325V4","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":-33.427333333333,"longitude_deg":112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-235","title":"Hemisphere SW","profile":"core-1.1","source":"APRS101 pp. 43-49","packet":"N0CALL>S325VT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S325VT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":-33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S325VT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":-33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-236","title":"Position ambiguity 1","profile":"core-1.1","source":"APRS101 pp. 53-54","packet":"N0CALL>S32UVZ:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVZ","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.4275,"longitude_deg":-112.129166666667,"ambiguity_digits":1,"cell_bounds_deg":{"latitude":[33.426666666667,33.428333333333],"longitude":[-112.13,-112.128333333333]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVZ","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.4275,"longitude_deg":-112.129166666667,"ambiguity":1,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-237","title":"Position ambiguity 2","profile":"core-1.1","source":"APRS101 pp. 53-54","packet":"N0CALL>S32UZZ:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UZZ","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.425,"longitude_deg":-112.125,"ambiguity_digits":2,"cell_bounds_deg":{"latitude":[33.416666666667,33.433333333333],"longitude":[-112.133333333333,-112.116666666667]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UZZ","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.425,"longitude_deg":-112.125,"ambiguity":2,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-238","title":"Position ambiguity 3","profile":"core-1.1","source":"APRS101 pp. 53-54","packet":"N0CALL>S32ZZZ:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32ZZZ","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.416666666667,"longitude_deg":-112.083333333333,"ambiguity_digits":3,"cell_bounds_deg":{"latitude":[33.333333333333,33.5],"longitude":[-112.166666666667,-112.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32ZZZ","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.416666666667,"longitude_deg":-112.083333333333,"ambiguity":3,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-239","title":"Position ambiguity 4","profile":"core-1.1","source":"APRS101 pp. 53-54","packet":"N0CALL>S3LZZZ:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S3LZZZ","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.5,"longitude_deg":-112.5,"ambiguity_digits":4,"cell_bounds_deg":{"latitude":[33.0,34.0],"longitude":[-113.0,-112.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S3LZZZ","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.5,"longitude_deg":-112.5,"ambiguity":4,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-240","title":"DTI / equipment '`'","profile":"core-1.1","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-241","title":"DTI / equipment \"'\"","profile":"core-1.1","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:'(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"old","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"old","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-242","title":"DTI / equipment \"']\"","profile":"core-1.1","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:'(_f\u001e\u001eOj/]Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current-for-TM-D700","type_marker":"]"},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-243","title":"DTI / equipment '`>'","profile":"core-1.1","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-244","title":"DTI / equipment '\\x1c'","profile":"historical-1.0","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:\u001c(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-245","title":"DTI / equipment '\\x1d'","profile":"historical-1.0","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:\u001d(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"old","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"old","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-246","title":"Altitude -10000 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-247","title":"Altitude 0 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-248","title":"Altitude 61 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-249","title":"Altitude 10000 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-250","title":"Altitude 743570 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-251","title":"Altitude -10000 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-252","title":"Altitude 0 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-253","title":"Altitude 61 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-254","title":"Altitude 10000 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-255","title":"Altitude 743570 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-256","title":"Altitude -10000 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-257","title":"Altitude 0 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-258","title":"Altitude 61 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-259","title":"Altitude 10000 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-260","title":"Altitude 743570 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-261","title":"Telemetry flag '`'","profile":"core-1.1","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/`1020","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[16,null,32,null,null],"encoding":"mic-e-hex"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[16,null,32,null,null],"encoding":"mic_e_hex"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-262","title":"Telemetry flag \"'\"","profile":"core-1.1","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/'102030FFff","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[16,32,48,255,255],"encoding":"mic-e-hex"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[16,32,48,255,255],"encoding":"mic_e_hex"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-263","title":"Telemetry flag '\\x1d'","profile":"historical-1.0","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\u001d\u0000\u0001\u007f\u0080\u00ff","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[0,1,127,128,255],"encoding":"mic-e-binary"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[0,1,127,128,255],"encoding":"mic_e_binary"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-264","title":"Mixed standard/custom bits","profile":"core-1.1","source":"APRS101 p. 45","packet":"N0CALL>D3RUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"D3RUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"101","position_comment_set":"mixed","position_comment":"unknown","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"D3RUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-265","title":"Grid locator in Mic-E status","profile":"core-1.1","source":"APRS101 p. 55","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>IO91SX/G Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":" Ready","grid_locator":"IO91SX","grid_symbol":{"table_id_raw":"/","table":"primary","code":"G","overlay":null}},"note":"Retain the encoded Mic-E position and grid independently; do not silently replace the higher-resolution coordinate by a grid center.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":" Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.grid_locator","$.grid_symbol.code","$.grid_symbol.overlay","$.grid_symbol.table","$.grid_symbol.table_id_raw","$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} diff --git a/packages/aprs/tests/vectors/msg.jsonl b/packages/aprs/tests/vectors/msg.jsonl new file mode 100644 index 0000000..f3b95c4 --- /dev/null +++ b/packages/aprs/tests/vectors/msg.jsonl @@ -0,0 +1,45 @@ +{"id":"MSG-001","title":"Ordinary message / ID None / length 0","profile":"core-1.1","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"","message_id":null,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-002","title":"Ordinary message / ID None / length 5","profile":"core-1.1","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Hello","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"Hello","message_id":null,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"Hello","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-003","title":"Ordinary message / ID 1 / length 5","profile":"core-1.1","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Hello{1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"Hello","message_id":"1","ack_requested":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"Hello","message_id":"1"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-004","title":"Ordinary message / ID Ab9Z0 / length 5","profile":"core-1.1","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Hello{Ab9Z0","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"Hello","message_id":"Ab9Z0","ack_requested":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"Hello","message_id":"Ab9Z0"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-005","title":"Ordinary message / ID None / length 22","profile":"core-1.1","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW : Leading and trailing ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":" Leading and trailing ","message_id":null,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":" Leading and trailing ","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-006","title":"Ordinary message / ID 01 / length 24","profile":"core-1.1","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :radio: ready > listening{01","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"radio: ready > listening","message_id":"01","ack_requested":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"radio: ready > listening","message_id":"01"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-007","title":"Ordinary message / ID 99999 / length 67","profile":"core-1.1","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx{99999","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","message_id":"99999","ack_requested":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","message_id":"99999"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-008","title":"Addressee W1AW","profile":"core-1.1","source":"APRS101 pp. 71-73","packet":"N0CALL>APRS::W1AW :Hello","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"Hello","message_id":null,"ack_requested":false,"group_address":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"Hello","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.group_address"]} +{"id":"MSG-009","title":"Addressee KB2ICI-14","profile":"core-1.1","source":"APRS101 pp. 71-73","packet":"N0CALL>APRS::KB2ICI-14:Hello","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"KB2ICI-14","addressee_raw":"KB2ICI-14","text":"Hello","message_id":null,"ack_requested":false,"group_address":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"KB2ICI-14","text":"Hello","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.group_address"]} +{"id":"MSG-010","title":"Addressee CQ","profile":"core-1.1","source":"APRS101 pp. 71-73","packet":"N0CALL>APRS::CQ :Hello","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"CQ","addressee_raw":"CQ ","text":"Hello","message_id":null,"ack_requested":false,"group_address":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"CQ","text":"Hello","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.group_address"]} +{"id":"MSG-011","title":"Addressee ALL","profile":"core-1.1","source":"APRS101 pp. 71-73","packet":"N0CALL>APRS::ALL :Hello","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"ALL","addressee_raw":"ALL ","text":"Hello","message_id":null,"ack_requested":false,"group_address":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"ALL","text":"Hello","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.group_address"]} +{"id":"MSG-012","title":"Addressee QST","profile":"core-1.1","source":"APRS101 pp. 71-73","packet":"N0CALL>APRS::QST :Hello","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"QST","addressee_raw":"QST ","text":"Hello","message_id":null,"ack_requested":false,"group_address":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"QST","text":"Hello","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.group_address"]} +{"id":"MSG-013","title":"ack 1","profile":"core-1.1","source":"APRS101 p. 72","packet":"N0CALL>APRS::W1AW :ack1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","subtype":"ack","ack_id":"1","ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"W1AW","message_id":"1","rejected":false}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-014","title":"ack 003","profile":"core-1.1","source":"APRS101 p. 72","packet":"N0CALL>APRS::W1AW :ack003","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","subtype":"ack","ack_id":"003","ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"W1AW","message_id":"003","rejected":false}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-015","title":"ack Ab9Z0","profile":"core-1.1","source":"APRS101 p. 72","packet":"N0CALL>APRS::W1AW :ackAb9Z0","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","subtype":"ack","ack_id":"Ab9Z0","ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"W1AW","message_id":"Ab9Z0","rejected":false}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-016","title":"rej 1","profile":"core-1.1","source":"APRS101 p. 72","packet":"N0CALL>APRS::W1AW :rej1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","subtype":"rej","reject_id":"1","ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"W1AW","message_id":"1","rejected":true}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-017","title":"rej 003","profile":"core-1.1","source":"APRS101 p. 72","packet":"N0CALL>APRS::W1AW :rej003","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","subtype":"rej","reject_id":"003","ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"W1AW","message_id":"003","rejected":true}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-018","title":"rej Ab9Z0","profile":"core-1.1","source":"APRS101 p. 72","packet":"N0CALL>APRS::W1AW :rejAb9Z0","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","subtype":"rej","reject_id":"Ab9Z0","ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"W1AW","message_id":"Ab9Z0","rejected":true}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-019","title":"Ack-like ordinary text acknowledge this please","profile":"core-1.1","source":"APRS101 pp. 71-72","packet":"N0CALL>APRS::W1AW :acknowledge this please","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"acknowledge this please","message_id":null,"ack_requested":false}},"note":"Only exact ack/rej control syntax with a valid ID is a control message. FAP uses a looser prefix test.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"acknowledge this please","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-020","title":"Ack-like ordinary text reject?","profile":"core-1.1","source":"APRS101 pp. 71-72","packet":"N0CALL>APRS::W1AW :reject?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"reject?","message_id":null,"ack_requested":false}},"note":"Only exact ack/rej control syntax with a valid ID is a control message. FAP uses a looser prefix test.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"reject?","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-021","title":"Ack-like ordinary text ACK003","profile":"core-1.1","source":"APRS101 pp. 71-72","packet":"N0CALL>APRS::W1AW :ACK003","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"ACK003","message_id":null,"ack_requested":false}},"note":"Only exact ack/rej control syntax with a valid ID is a control message. FAP uses a looser prefix test.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"ACK003","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-022","title":"Ack-like ordinary text REJ003","profile":"core-1.1","source":"APRS101 pp. 71-72","packet":"N0CALL>APRS::W1AW :REJ003","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"REJ003","message_id":null,"ack_requested":false}},"note":"Only exact ack/rej control syntax with a valid ID is a control message. FAP uses a looser prefix test.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"REJ003","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-023","title":"Reply-ack {01}","profile":"core-1.1","source":"A11 REPLY-ACK","packet":"N0CALL>APRS::W1AW :Reply{01}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"Reply","message_id":"01","ack_requested":true,"reply_ack_capable":true,"reply_ack_id":null,"message_id_raw":"01}"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"Reply","message_id":"01","reply_ack":""}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id_raw"]} +{"id":"MSG-024","title":"Reply-ack {01}02","profile":"core-1.1","source":"A11 REPLY-ACK","packet":"N0CALL>APRS::W1AW :Reply{01}02","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"Reply","message_id":"01","ack_requested":true,"reply_ack_capable":true,"reply_ack_id":"02","message_id_raw":"01}02"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"Reply","message_id":"01","reply_ack":"02"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id_raw"]} +{"id":"MSG-025","title":"Standalone ack echoes reply-ack ID","profile":"core-1.1","source":"A11 REPLY-ACK","packet":"N0CALL>APRS::W1AW :ack01}02","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","subtype":"ack","ack_id_raw":"01}02","ack_id":"01","embedded_reply_ack_id":"02","ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"W1AW","message_id":"01","rejected":false}},"unmapped":["$.message.ack_id_raw","$.message.ack_requested","$.message.addressee_raw","$.message.embedded_reply_ack_id"]} +{"id":"MSG-026","title":"Automatic answer AA:Away from keyboard","profile":"core-1.1","source":"A11 auto-answer","packet":"N0CALL>APRS::W1AW :AA:Away from keyboard","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"AA:Away from keyboard","message_id":null,"ack_requested":false,"auto_answer":true}},"note":"Auto-answer has no message ID and does not request an ack. Power-up/cancel/retry rules are stateful, not inferred from this packet alone.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"auto_answer","addressee":"W1AW","text":"Away from keyboard","previous_ack":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-027","title":"Automatic answer AA:Away from keyboard}02","profile":"core-1.1","source":"A11 auto-answer","packet":"N0CALL>APRS::W1AW :AA:Away from keyboard}02","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"AA:Away from keyboard","message_id":null,"ack_requested":false,"auto_answer":true,"reply_ack_id":"02"}},"note":"Auto-answer has no message ID and does not request an ack. Power-up/cancel/retry rules are stateful, not inferred from this packet alone.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"auto_answer","addressee":"W1AW","text":"Away from keyboard","previous_ack":"02"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-028","title":"bulletin BLN0","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLN0 :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"bulletin","message":{"addressee":"BLN0","addressee_raw":"BLN0 ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"0","group":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"0","text":"Test notice","group":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-029","title":"bulletin BLN9","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLN9 :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"bulletin","message":{"addressee":"BLN9","addressee_raw":"BLN9 ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"9","group":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"9","text":"Test notice","group":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-030","title":"announcement BLNA","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLNA :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"announcement","message":{"addressee":"BLNA","addressee_raw":"BLNA ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"A","group":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"A","text":"Test notice","group":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-031","title":"announcement BLNZ","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLNZ :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"announcement","message":{"addressee":"BLNZ","addressee_raw":"BLNZ ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"Z","group":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"Z","text":"Test notice","group":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-032","title":"group-bulletin BLN4WX","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLN4WX :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"group-bulletin","message":{"addressee":"BLN4WX","addressee_raw":"BLN4WX ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"4","group":"WX"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"4","text":"Test notice","group":"WX"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-033","title":"group-bulletin BLN1ABCDE","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLN1ABCDE:Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"group-bulletin","message":{"addressee":"BLN1ABCDE","addressee_raw":"BLN1ABCDE","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"1","group":"ABCDE"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"1","text":"Test notice","group":"ABCDE"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-034","title":"NWS reference is not an ack request","profile":"core-1.1","source":"APRS101 p. 74","packet":"N0CALL>APRS::NWS-WARN :092010z,THUNDER_STORM,AR_ASHLEY,{S9JbA","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nws-bulletin","message":{"addressee":"NWS-WARN","addressee_raw":"NWS-WARN ","text":"092010z,THUNDER_STORM,AR_ASHLEY,","message_id":"S9JbA","ack_requested":false,"reference_id":"S9JbA"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nws_bulletin","addressee":"NWS-WARN","text":"092010z,THUNDER_STORM,AR_ASHLEY,","reference_id":"S9JbA"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.reference_id"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-035","title":"NTS N#","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N#\\12\\R\\HXA\\N0CALL\\5\\REDMOND WA\\1800\\OCT 15{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N#\\12\\R\\HXA\\N0CALL\\5\\REDMOND WA\\1800\\OCT 15","message_id":"001","ack_requested":true},"nts":{"record_type":"N#","fields":["12","R","HXA","N0CALL","5","REDMOND WA","1800","OCT 15"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_header","number":"12","precedence":"R","handling":"HXA","originator":"N0CALL","check":"5","place":"REDMOND WA","time":"1800","date":"OCT 15"},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-036","title":"NTS NA","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :NA\\ADAM\\123 MAIN ST\\REDMOND WA\\98052{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"NA\\ADAM\\123 MAIN ST\\REDMOND WA\\98052","message_id":"001","ack_requested":true},"nts":{"record_type":"NA","fields":["ADAM","123 MAIN ST","REDMOND WA","98052"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_address","lines":["ADAM","123 MAIN ST","REDMOND WA","98052"]},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-037","title":"NTS NP","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :NP\\5550100{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"NP\\5550100","message_id":"001","ack_requested":true},"nts":{"record_type":"NP","fields":["5550100"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_phone","number":"5550100"},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-038","title":"NTS N1","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N1\\LINE 1 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N1\\LINE 1 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N1","fields":["LINE 1 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 1 TEXT","line":1},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-039","title":"NTS N2","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N2\\LINE 2 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N2\\LINE 2 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N2","fields":["LINE 2 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 2 TEXT","line":2},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-040","title":"NTS N3","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N3\\LINE 3 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N3\\LINE 3 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N3","fields":["LINE 3 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 3 TEXT","line":3},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-041","title":"NTS N4","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N4\\LINE 4 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N4\\LINE 4 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N4","fields":["LINE 4 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 4 TEXT","line":4},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-042","title":"NTS N5","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N5\\LINE 5 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N5\\LINE 5 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N5","fields":["LINE 5 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 5 TEXT","line":5},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-043","title":"NTS N6","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N6\\LINE 6 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N6\\LINE 6 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N6","fields":["LINE 6 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 6 TEXT","line":6},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-044","title":"NTS NS","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :NS\\TEST SENDER{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"NS\\TEST SENDER","message_id":"001","ack_requested":true},"nts":{"record_type":"NS","fields":["TEST SENDER"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_signature","text":"TEST SENDER"},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-045","title":"NTS NR","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :NR\\W1AW\\151800Z\\N0CALL\\151805Z{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"NR\\W1AW\\151800Z\\N0CALL\\151805Z","message_id":"001","ack_requested":true},"nts":{"record_type":"NR","fields":["W1AW","151800Z","N0CALL","151805Z"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_routing","received_from":"W1AW","received_at":"151800Z","sent_to":"N0CALL","sent_at":"151805Z"},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} diff --git a/packages/aprs/tests/vectors/net.jsonl b/packages/aprs/tests/vectors/net.jsonl new file mode 100644 index 0000000..4400861 --- /dev/null +++ b/packages/aprs/tests/vectors/net.jsonl @@ -0,0 +1,15 @@ +{"id":"NET-001","title":"Third-party message","profile":"core-1.1","source":"APRS101 pp. 83-86","packet":"N0GATE>APRS,WIDE2-1:}W1AW>APRS,TCPIP,N0GATE*::N0CALL :Hello{01","outcome":"accept","source_expected":{"header":{"source":"N0GATE","destination":"APRS","path":[{"address":"WIDE2-1","repeated_marker":false}]},"kind":"third-party","inner_packet":"W1AW>APRS,TCPIP,N0GATE*::N0CALL :Hello{01","inner":{"header":{"source":"W1AW","destination":"APRS","path":[{"address":"TCPIP","repeated_marker":false},{"address":"N0GATE","repeated_marker":true}]},"kind":"message","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"Hello","message_id":"01","ack_requested":true}},"message_origin":"W1AW"},"note":"The outer transmitter is N0GATE; the message origin and ack recipient are W1AW. Do not discard either envelope.","expected":{"type":"packet","header":{"source":"N0GATE","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false}]},"payload":{"type":"third_party","packet":{"header":{"source":"W1AW","destination":"APRS","path":[{"address":"TCPIP","repeated":false},{"address":"N0GATE","repeated":true}]},"payload":{"type":"message","addressee":"N0CALL","text":"Hello","message_id":"01"}}}},"unmapped":["$.inner.message.ack_requested","$.inner.message.addressee_raw","$.inner_packet","$.message_origin"]} +{"id":"NET-002","title":"Third-party position","profile":"core-1.1","source":"APRS101 pp. 83-86","packet":"N0GATE>APRS:}W1AW>APRS,TCPIP,N0GATE*:!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0GATE","destination":"APRS","path":[]},"kind":"third-party","inner_packet":"W1AW>APRS,TCPIP,N0GATE*:!4903.50N/07201.75W-","inner":{"header":{"source":"W1AW","destination":"APRS","path":[{"address":"TCPIP","repeated_marker":false},{"address":"N0GATE","repeated_marker":true}]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""}},"expected":{"type":"packet","header":{"source":"N0GATE","destination":"APRS","path":[]},"payload":{"type":"third_party","packet":{"header":{"source":"W1AW","destination":"APRS","path":[{"address":"TCPIP","repeated":false},{"address":"N0GATE","repeated":true}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}}}},"unmapped":["$.inner.symbol.overlay","$.inner.symbol.table","$.inner_packet"]} +{"id":"NET-003","title":"RF gate suppression NOGATE","profile":"network-policy","source":"A11 APRS-IS","packet":"N0CALL>APRS,WIDE1-1,NOGATE:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated_marker":false},{"address":"NOGATE","repeated_marker":false}]},"kind":"status","status_text":"Ready","policy":{"forward_to_aprs_is":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"NOGATE","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.policy.forward_to_aprs_is"]} +{"id":"NET-004","title":"RF gate suppression RFONLY","profile":"network-policy","source":"A11 APRS-IS","packet":"N0CALL>APRS,WIDE1-1,RFONLY:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated_marker":false},{"address":"RFONLY","repeated_marker":false}]},"kind":"status","status_text":"Ready","policy":{"forward_to_aprs_is":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"RFONLY","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.policy.forward_to_aprs_is"]} +{"id":"NET-005","title":"No-archive in status","profile":"network-policy","source":"A11 APRS-IS","packet":"N0CALL>APRS:>Ready!x!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready!x!","policy":{"archive_allowed":false}},"note":"This is a retention flag. Preserve the literal text; it does not invalidate the packet.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready!x!"}},"unmapped":["$.policy.archive_allowed"]} +{"id":"NET-006","title":"No-archive in position","profile":"network-policy","source":"A11 APRS-IS","packet":"N0CALL>APRS:!4903.50N/07201.75W-!x!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"!x!","policy":{"archive_allowed":false}},"note":"This is a retention flag. Preserve the literal text; it does not invalidate the packet.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"!x!","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.policy.archive_allowed","$.symbol.overlay","$.symbol.table"]} +{"id":"NET-007","title":"No-archive in message","profile":"network-policy","source":"A11 APRS-IS","packet":"N0CALL>APRS::W1AW :Do not archive !x!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"Do not archive !x!","message_id":null,"ack_requested":false},"policy":{"archive_allowed":false}},"note":"This is a retention flag. Preserve the literal text; it does not invalidate the packet.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"Do not archive !x!","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.policy.archive_allowed"]} +{"id":"NET-008","title":"Preserve APRS-IS q token qAR","profile":"aprs-is","source":"A11 APRS-IS; FAP aprsis_paths_test.go","packet":"N0CALL>APRS,WIDE1-1,qAR,IGATE:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated_marker":false},{"address":"qAR","repeated_marker":false},{"address":"IGATE","repeated_marker":false}]},"kind":"status","status_text":"Ready","aprs_is":{"q_construct_raw":"qAR","following_path":["IGATE"]}},"note":"q token case is significant. This case asserts preservation, not server-side q validation or RF address validity.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.aprs_is.following_path","$.aprs_is.q_construct_raw"]} +{"id":"NET-009","title":"Preserve APRS-IS q token qAO","profile":"aprs-is","source":"A11 APRS-IS; FAP aprsis_paths_test.go","packet":"N0CALL>APRS,WIDE1-1,qAO,IGATE:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated_marker":false},{"address":"qAO","repeated_marker":false},{"address":"IGATE","repeated_marker":false}]},"kind":"status","status_text":"Ready","aprs_is":{"q_construct_raw":"qAO","following_path":["IGATE"]}},"note":"q token case is significant. This case asserts preservation, not server-side q validation or RF address validity.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"qAO","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.aprs_is.following_path","$.aprs_is.q_construct_raw"]} +{"id":"NET-010","title":"Preserve APRS-IS q token qAC","profile":"aprs-is","source":"A11 APRS-IS; FAP aprsis_paths_test.go","packet":"N0CALL>APRS,WIDE1-1,qAC,IGATE:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated_marker":false},{"address":"qAC","repeated_marker":false},{"address":"IGATE","repeated_marker":false}]},"kind":"status","status_text":"Ready","aprs_is":{"q_construct_raw":"qAC","following_path":["IGATE"]}},"note":"q token case is significant. This case asserts preservation, not server-side q validation or RF address validity.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"qAC","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.aprs_is.following_path","$.aprs_is.q_construct_raw"]} +{"id":"NET-011","title":"Preserve APRS-IS q token qAI","profile":"aprs-is","source":"A11 APRS-IS; FAP aprsis_paths_test.go","packet":"N0CALL>APRS,WIDE1-1,qAI,IGATE:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated_marker":false},{"address":"qAI","repeated_marker":false},{"address":"IGATE","repeated_marker":false}]},"kind":"status","status_text":"Ready","aprs_is":{"q_construct_raw":"qAI","following_path":["IGATE"]}},"note":"q token case is significant. This case asserts preservation, not server-side q validation or RF address validity.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"qAI","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.aprs_is.following_path","$.aprs_is.q_construct_raw"]} +{"id":"NET-012","title":"Preserve APRS-IS q token qAS","profile":"aprs-is","source":"A11 APRS-IS; FAP aprsis_paths_test.go","packet":"N0CALL>APRS,WIDE1-1,qAS,IGATE:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated_marker":false},{"address":"qAS","repeated_marker":false},{"address":"IGATE","repeated_marker":false}]},"kind":"status","status_text":"Ready","aprs_is":{"q_construct_raw":"qAS","following_path":["IGATE"]}},"note":"q token case is significant. This case asserts preservation, not server-side q validation or RF address validity.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"qAS","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.aprs_is.following_path","$.aprs_is.q_construct_raw"]} +{"id":"NET-013","title":"Preserve APRS-IS q token qAo","profile":"aprs-is","source":"A11 APRS-IS; FAP aprsis_paths_test.go","packet":"N0CALL>APRS,WIDE1-1,qAo,IGATE:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated_marker":false},{"address":"qAo","repeated_marker":false},{"address":"IGATE","repeated_marker":false}]},"kind":"status","status_text":"Ready","aprs_is":{"q_construct_raw":"qAo","following_path":["IGATE"]}},"note":"q token case is significant. This case asserts preservation, not server-side q validation or RF address validity.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.aprs_is.following_path","$.aprs_is.q_construct_raw"]} +{"id":"NET-014","title":"AEA transport adapter","profile":"aea-transport","source":"APRS101 pp. 83-85","packet":"N0CALL>DIGI1*>WIDE>APRS:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"DIGI1","repeated_marker":true},{"address":"WIDE","repeated_marker":false}]},"kind":"status","status_text":"Ready","normalized_tnc2":"N0CALL>APRS,DIGI1*,WIDE:>Ready"},"note":"Parse this through an AEA adapter, not by interpreting the entire remainder as a TNC2 destination.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"DIGI1","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.normalized_tnc2"],"gap":{"kind":"fields","reason":"AEA framing adapter is not implemented.","allowed_actual":{"$.type":"malformed","$.header":{"missing":true},"$.payload":{"missing":true}}}} +{"id":"NET-015","title":"Third-party opaque payload","profile":"core-1.1","source":"APRS101 pp.85,87-88","packet":"N0GATE>APRS:}W1AW>APRS:{{zopaque","outcome":"accept","source_expected":{"header":{"source":"N0GATE","destination":"APRS","path":[]},"kind":"third-party","inner_packet":"W1AW>APRS:{{zopaque","inner":{"header":{"source":"W1AW","destination":"APRS","path":[]},"kind":"user-defined","user_id":"{","user_type":"z","data":"opaque"}},"expected":{"type":"packet","header":{"source":"N0GATE","destination":"APRS","path":[]},"payload":{"type":"third_party","packet":{"header":{"source":"W1AW","destination":"APRS","path":[]},"payload":{"type":"user_defined","user_id":"{","user_type":"z","data":"opaque"}}}},"unmapped":["$.inner_packet"]} diff --git a/packages/aprs/tests/vectors/nme.jsonl b/packages/aprs/tests/vectors/nme.jsonl new file mode 100644 index 0000000..8721101 --- /dev/null +++ b/packages/aprs/tests/vectors/nme.jsonl @@ -0,0 +1,36 @@ +{"id":"NME-001","title":"GPGGA with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPGGA,102705,5157.9762,N,00029.3256,W,1,04,2.0,75.7,M,47.6,M,,*62","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGGA","fields_raw":["102705","5157.9762","N","00029.3256","W","1","04","2.0","75.7","M","47.6","M","",""],"checksum_supplied":"62","checksum_valid":true,"time_utc_raw":"102705","fix_quality":1,"satellites":4,"hdop":2.0,"geoid_separation_m":47.6,"dgps_age_raw":"","dgps_station_raw":""},"position":{"latitude_deg":51.96627,"longitude_deg":-0.48876},"altitude":{"meters":75.7,"reference":"mean-sea-level"}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gga","time_utc":"102705","dgps_age":"","dgps_station":"","fix_quality":1,"satellites":4,"hdop":2.0,"geoid_separation_m":47.6,"coordinates":{"latitude_deg":51.96627,"longitude_deg":-0.48876},"altitude_msl_m":75.7},"metadata":{"talker":"GP","checksum_supplied":"62","checksum_valid":true,"fields_raw":["102705","5157.9762","N","00029.3256","W","1","04","2.0","75.7","M","47.6","M","",""]}}},"unmapped":["$.altitude.reference"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-002","title":"GPGLL with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPGLL,2554.459,N,08020.187,W,154027.281,A*22","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["2554.459","N","08020.187","W","154027.281","A"],"checksum_supplied":"22","checksum_valid":true,"time_utc_raw":"154027.281","fix_status":"A"},"position":{"latitude_deg":25.90765,"longitude_deg":-80.33645}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gll","time_utc":"154027.281","fix_status":"A","coordinates":{"latitude_deg":25.90765,"longitude_deg":-80.33645}},"metadata":{"talker":"GP","checksum_supplied":"22","checksum_valid":true,"fields_raw":["2554.459","N","08020.187","W","154027.281","A"]}}},"unmapped":[],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-003","title":"GPRMC with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPRMC,063909,A,3349.4302,N,11700.3721,W,43.022,89.3,291099,13.6,E*52","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPRMC","fields_raw":["063909","A","3349.4302","N","11700.3721","W","43.022","89.3","291099","13.6","E"],"checksum_supplied":"52","checksum_valid":true,"time_utc_raw":"063909","fix_status":"A","date_ddmmyy_raw":"291099","magnetic_variation_raw":"13.6","magnetic_variation_direction":"E"},"position":{"latitude_deg":33.823836666667,"longitude_deg":-117.006201666667},"motion":{"speed_knots":43.022,"speed_kmh":79.676744,"course_deg":89.3}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"rmc","time_utc":"063909","date_ddmmyy":"291099","fix_status":"A","magnetic_variation_direction":"E","magnetic_variation":13.6,"coordinates":{"latitude_deg":33.823836666667,"longitude_deg":-117.006201666667},"speed_knots":43.022,"course_deg":89.3},"metadata":{"talker":"GP","checksum_supplied":"52","checksum_valid":true,"fields_raw":["063909","A","3349.4302","N","11700.3721","W","43.022","89.3","291099","13.6","E"]}}},"unmapped":["$.motion.speed_kmh"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-004","title":"GPVTG with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPVTG,318.7,T,,M,35.1,N,65.0,K*69","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPVTG","fields_raw":["318.7","T","","M","35.1","N","65.0","K"],"checksum_supplied":"69","checksum_valid":true},"motion":{"course_true_deg":318.7,"course_magnetic_deg":null,"speed_knots":35.1,"speed_kmh_reported":65.0}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"vtg","speed_knots":35.1},"metadata":{"talker":"GP","checksum_supplied":"69","checksum_valid":true,"fields_raw":["318.7","T","","M","35.1","N","65.0","K"]}}},"unmapped":["$.motion.course_magnetic_deg","$.motion.course_true_deg","$.motion.speed_kmh_reported"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-005","title":"GPWPL with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPWPL,4903.50,N,07201.75,W,AID2*2A","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPWPL","fields_raw":["4903.50","N","07201.75","W","AID2"],"checksum_supplied":"2A","checksum_valid":true},"waypoint":{"name":"AID2","latitude_deg":49.058333333333,"longitude_deg":-72.029166666667}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"wpl","name":"AID2","coordinates":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667}},"metadata":{"talker":"GP","checksum_supplied":"2A","checksum_valid":true,"fields_raw":["4903.50","N","07201.75","W","AID2"]}}},"unmapped":[],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-006","title":"GPGGA with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,*4F","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGGA","fields_raw":["123519","4807.038","N","01131.000","E","1","08","0.9","545.4","M","47.0","M","",""],"checksum_supplied":"4F","checksum_valid":true,"time_utc_raw":"123519","fix_quality":1,"satellites":8,"hdop":0.9,"geoid_separation_m":47.0,"dgps_age_raw":"","dgps_station_raw":""},"position":{"latitude_deg":48.1173,"longitude_deg":11.516666666667},"altitude":{"meters":545.4,"reference":"mean-sea-level"}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gga","time_utc":"123519","dgps_age":"","dgps_station":"","fix_quality":1,"satellites":8,"hdop":0.9,"geoid_separation_m":47.0,"coordinates":{"latitude_deg":48.1173,"longitude_deg":11.516666666667},"altitude_msl_m":545.4},"metadata":{"talker":"GP","checksum_supplied":"4F","checksum_valid":true,"fields_raw":["123519","4807.038","N","01131.000","E","1","08","0.9","545.4","M","47.0","M","",""]}}},"unmapped":["$.altitude.reference"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-007","title":"GPGLL with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":[],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-008","title":"GPRMC with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPRMC,180000.50,A,3350.000,S,15112.000,E,0.0,0.0,151026,0.0,E*4B","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPRMC","fields_raw":["180000.50","A","3350.000","S","15112.000","E","0.0","0.0","151026","0.0","E"],"checksum_supplied":"4B","checksum_valid":true,"time_utc_raw":"180000.50","fix_status":"A","date_ddmmyy_raw":"151026","magnetic_variation_raw":"0.0","magnetic_variation_direction":"E"},"position":{"latitude_deg":-33.833333333333,"longitude_deg":151.2},"motion":{"speed_knots":0.0,"speed_kmh":0.0,"course_deg":0.0}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"rmc","time_utc":"180000.50","date_ddmmyy":"151026","fix_status":"A","magnetic_variation_direction":"E","magnetic_variation":0.0,"coordinates":{"latitude_deg":-33.833333333333,"longitude_deg":151.2},"speed_knots":0.0,"course_deg":0.0},"metadata":{"talker":"GP","checksum_supplied":"4B","checksum_valid":true,"fields_raw":["180000.50","A","3350.000","S","15112.000","E","0.0","0.0","151026","0.0","E"]}}},"unmapped":["$.motion.speed_kmh"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-009","title":"GLL without optional checksum","profile":"nmea-supported","source":"APRS101 p. 34; FAP nmea_test.go","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":null,"checksum_valid":null,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":null,"checksum_valid":null,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":[],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-010","title":"GLL checksum bad","profile":"nmea-supported","source":"FAP nmea_test.go","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*00","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"nmea-checksum","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*00"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-011","title":"GLL checksum empty","profile":"nmea-supported","source":"FAP nmea_test.go","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"nmea-checksum","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-012","title":"Invalid fix GPRMC","profile":"nmea-supported","source":"FAP nmea_test.go; APRS101 p. 25","packet":"N0CALL>APRS:$GPRMC,041518,V,,,,,,,230309,,*33","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPRMC","fields_raw":["041518","V","","","","","","","230309","",""],"checksum_supplied":"33","checksum_valid":true,"time_utc_raw":"041518","fix_status":"V","date_ddmmyy_raw":"230309","magnetic_variation_raw":"","magnetic_variation_direction":""},"position_usable":false},"note":"Checksum is deliberately correct, so this case isolates invalid fix status from checksum failure.","expected":{"original_wire":"N0CALL>APRS:$GPRMC,041518,V,,,,,,,230309,,*33"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-013","title":"Invalid fix GPGLL","profile":"nmea-supported","source":"FAP nmea_test.go; APRS101 p. 25","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,V*26","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","V"],"checksum_supplied":"26","checksum_valid":true,"time_utc_raw":"225444","fix_status":"V"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"position_usable":false},"note":"Checksum is deliberately correct, so this case isolates invalid fix status from checksum failure.","expected":{"original_wire":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,V*26"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-014","title":"Invalid fix GPGGA","profile":"nmea-supported","source":"FAP nmea_test.go; APRS101 p. 25","packet":"N0CALL>APRS:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*4E","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGGA","fields_raw":["123519","4807.038","N","01131.000","E","0","08","0.9","545.4","M","47.0","M","",""],"checksum_supplied":"4E","checksum_valid":true,"time_utc_raw":"123519","fix_quality":0,"satellites":8,"hdop":0.9,"geoid_separation_m":47.0,"dgps_age_raw":"","dgps_station_raw":""},"position":{"latitude_deg":48.1173,"longitude_deg":11.516666666667},"altitude":{"meters":545.4,"reference":"mean-sea-level"},"position_usable":false},"note":"Checksum is deliberately correct, so this case isolates invalid fix status from checksum failure.","expected":{"original_wire":"N0CALL>APRS:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*4E"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-015","title":"Destination symbol GPSC30","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSC30:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSC30","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSC30","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-016","title":"Destination symbol GPSE30","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSE30:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSE30","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"\\","table":"alternate","code":">","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSE30","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"\\","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-017","title":"Destination symbol GPSMV","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSMV:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSMV","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSMV","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-018","title":"Destination symbol GPSNV3","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSNV3:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSNV3","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"3","table":"alternate","code":">","overlay":"3"}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSNV3","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"3","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-019","title":"Destination symbol GPSBM","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSBM:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSBM","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":",","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSBM","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":","},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-020","title":"Destination symbol GPSE12","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSE12:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSE12","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"\\","table":"alternate","code":",","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSE12","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"\\","code":","},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-021","title":"Information symbol wins over destination and SSID","profile":"core-1.1","source":"APRS101 p. 93","packet":"N0CALL-7>GPSMV:!0123.45N/01234.56Wj","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSMV","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":1.390833333333,"longitude_deg":-12.576,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSMV","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":1.390833333333,"longitude_deg":-12.576,"ambiguity":0,"symbol":{"table_id":"/","code":"j"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-022","title":"Historical source-SSID icon 1","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-1>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-1","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"a","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"a"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-023","title":"Historical source-SSID icon 2","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-2>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-2","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"U","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-2","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"U"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-024","title":"Historical source-SSID icon 3","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-3>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-3","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"f","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-3","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"f"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-025","title":"Historical source-SSID icon 4","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-4>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-4","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"b","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-4","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"b"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-026","title":"Historical source-SSID icon 5","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-5>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-5","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"Y","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-5","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"Y"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-027","title":"Historical source-SSID icon 6","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-6>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-6","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"X","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-6","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"X"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-028","title":"Historical source-SSID icon 7","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-7>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"'","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"'"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-029","title":"Historical source-SSID icon 8","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-8>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-8","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"s","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-8","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"s"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-030","title":"Historical source-SSID icon 9","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-9>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-9","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-9","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-031","title":"Historical source-SSID icon 10","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-10>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-10","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"<","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-10","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"<"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-032","title":"Historical source-SSID icon 11","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-11>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-11","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"O","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"O"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-033","title":"Historical source-SSID icon 12","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-12>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-12","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-12","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"j"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-034","title":"Historical source-SSID icon 13","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-13>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-13","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"R","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-13","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"R"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-035","title":"Historical source-SSID icon 14","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-14>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-14","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"k","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"k"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-036","title":"Historical source-SSID icon 15","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-15>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-15","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"v","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-15","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"v"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} diff --git a/packages/aprs/tests/vectors/obj.jsonl b/packages/aprs/tests/vectors/obj.jsonl new file mode 100644 index 0000000..7e9cabb --- /dev/null +++ b/packages/aprs/tests/vectors/obj.jsonl @@ -0,0 +1,53 @@ +{"id":"OBJ-001","title":"Object LEADER alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"LEADER","name_raw":"LEADER ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-002","title":"Object LEADER alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;LEADER _092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"LEADER","name_raw":"LEADER ","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-003","title":"Object leader alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;leader *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"leader","name_raw":"leader ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"leader","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-004","title":"Object leader alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;leader _092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"leader","name_raw":"leader ","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"leader","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-005","title":"Object A alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;A *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"A","name_raw":"A ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"A","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-006","title":"Object A alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;A _092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"A","name_raw":"A ","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"A","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-007","title":"Object ABCDEFGHI alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;ABCDEFGHI*092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"ABCDEFGHI","name_raw":"ABCDEFGHI","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"ABCDEFGHI","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-008","title":"Object ABCDEFGHI alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;ABCDEFGHI_092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"ABCDEFGHI","name_raw":"ABCDEFGHI","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"ABCDEFGHI","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-009","title":"Object AID #2 alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;AID #2 *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AID #2","name_raw":"AID #2 ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AID #2","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-010","title":"Object AID #2 alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;AID #2 _092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AID #2","name_raw":"AID #2 ","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AID #2","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-011","title":"Compressed object","profile":"core-1.1","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;MOBILE *092345z/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"MOBILE","name_raw":"MOBILE ","alive":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"note":"Defined format; the addendum discourages its use on RF, which is not a syntax prohibition.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"MOBILE","alive":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-012","title":"Moving object","profile":"core-1.1","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;MOBILE *092345z4903.50N/07201.75W>088/036Moving","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"MOBILE","name_raw":"MOBILE ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"Moving","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"Moving","name":"MOBILE","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-013","title":"Item AID #2 alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)AID #2!4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"AID #2","name_raw":"AID #2","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-014","title":"Item AID #2 alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)AID #2_4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"AID #2","name_raw":"AID #2","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-015","title":"Item abc alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)abc!4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"abc","name_raw":"abc","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"abc","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-016","title":"Item abc alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)abc_4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"abc","name_raw":"abc","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"abc","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-017","title":"Item ABCDEFGHI alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)ABCDEFGHI!4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"ABCDEFGHI","name_raw":"ABCDEFGHI","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"ABCDEFGHI","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-018","title":"Item ABCDEFGHI alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)ABCDEFGHI_4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"ABCDEFGHI","name_raw":"ABCDEFGHI","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"ABCDEFGHI","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-019","title":"Item MixedCase alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)MixedCase!4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"MixedCase","name_raw":"MixedCase","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"MixedCase","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-020","title":"Item MixedCase alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)MixedCase_4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"MixedCase","name_raw":"MixedCase","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"MixedCase","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-021","title":"Compressed item","profile":"core-1.1","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)MOBILE!/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"MOBILE","name_raw":"MOBILE","alive":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Defined format; the addendum discourages its use on RF, which is not a syntax prohibition.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"MOBILE","alive":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-022","title":"Moving item","profile":"core-1.1","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)MOBILE!4903.50N/07201.75W>088/036Moving","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"MOBILE","name_raw":"MOBILE","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"Moving","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"Moving","name":"MOBILE","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"course_deg":88,"speed_knots":36}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-023","title":"Area shape 0","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl010/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":0,"shape":"open-circle","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"center"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":0,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-024","title":"Area shape 1","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl110/310{5}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":1,"shape":"line-down-right","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right","corridor_half_width_miles":5}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":1,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.corridor_half_width_miles","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-025","title":"Area shape 2","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl210/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":2,"shape":"open-ellipse","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":2,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-026","title":"Area shape 3","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl310/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":3,"shape":"open-triangle","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":3,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-027","title":"Area shape 4","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl410/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-028","title":"Area shape 5","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl510/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":5,"shape":"filled-circle","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"center"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":5,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-029","title":"Area shape 6","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl610/310{5}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":6,"shape":"line-down-left","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-left","corridor_half_width_miles":5}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":6,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.corridor_half_width_miles","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-030","title":"Area shape 7","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl710/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":7,"shape":"filled-ellipse","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":7,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-031","title":"Area shape 8","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl810/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":8,"shape":"filled-triangle","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":8,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-032","title":"Area shape 9","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl910/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":9,"shape":"filled-box","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":9,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-033","title":"Area color 0","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/020","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":0,"color":"black","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":0}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-034","title":"Area color 1","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/120","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":1,"color":"blue","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":1}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-035","title":"Area color 2","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/220","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":2,"color":"green","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":2}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-036","title":"Area color 3","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/320","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":3,"color":"cyan","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":3}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-037","title":"Area color 4","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/420","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":4,"color":"red","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":4}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-038","title":"Area color 5","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/520","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":5,"color":"violet","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":5}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-039","title":"Area color 6","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/620","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":6,"color":"yellow","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":6}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-040","title":"Area color 7","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/720","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":7,"color":"gray","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":7}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-041","title":"Area color 8","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/820","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":8,"color":"black","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":8}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-042","title":"Area color 9","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/920","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":9,"color":"blue","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":9}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-043","title":"Area color 10","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101020","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":10,"color":"green","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-044","title":"Area color 11","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101120","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":11,"color":"cyan","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":11}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-045","title":"Area color 12","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101220","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":12,"color":"red","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":12}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-046","title":"Area color 13","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101320","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":13,"color":"violet","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":13}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-047","title":"Area color 14","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101420","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":14,"color":"yellow","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":14}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-048","title":"Area color 15","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101520","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":15,"color":"gray","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":15}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-049","title":"Signpost 5","profile":"core-1.1","source":"APRS101 p. 61","packet":"N0CALL>APRS:)SIGN!4903.50N\\07201.75Wm{5}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"SIGN","name_raw":"SIGN","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"m","overlay":null},"comment":"","signpost":{"label":"5"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"SIGN","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"m"},"extensions":{"signpost":{"label":"5"}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-050","title":"Signpost 55","profile":"core-1.1","source":"APRS101 p. 61","packet":"N0CALL>APRS:)SIGN!4903.50N\\07201.75Wm{55}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"SIGN","name_raw":"SIGN","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"m","overlay":null},"comment":"","signpost":{"label":"55"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"SIGN","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"m"},"extensions":{"signpost":{"label":"55"}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-051","title":"Signpost ABC","profile":"core-1.1","source":"APRS101 p. 61","packet":"N0CALL>APRS:)SIGN!4903.50N\\07201.75Wm{ABC}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"SIGN","name_raw":"SIGN","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"m","overlay":null},"comment":"","signpost":{"label":"ABC"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"SIGN","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"m"},"extensions":{"signpost":{"label":"ABC"}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-052","title":"Object name boundary 'STATION '","profile":"core-1.1","source":"A11 names","packet":"N0CALL>APRS:;STATION *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STATION","name_raw":"STATION ","alive":true,"timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STATION","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-053","title":"Object name boundary ' STATION '","profile":"strict-validation","source":"A11 names","packet":"N0CALL>APRS:; STATION *092345z4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"leading-space-in-name"},"expected":{"original_wire":"N0CALL>APRS:; STATION *092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} diff --git a/packages/aprs/tests/vectors/oth.jsonl b/packages/aprs/tests/vectors/oth.jsonl new file mode 100644 index 0000000..b1e5503 --- /dev/null +++ b/packages/aprs/tests/vectors/oth.jsonl @@ -0,0 +1,38 @@ +{"id":"OTH-001","title":"Raw weather Ultimeter 2000 !!006","profile":"opaque-vendor","source":"APRS101 p. 62","packet":"N0CALL>APRS:!!006B005803500000----03E9--------002105140000005D","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"raw-weather","vendor":"Ultimeter 2000","raw_payload":"!!006B005803500000----03E9--------002105140000005D","decoded_measurements":null},"note":"APRS101 gives examples but not the vendor measurement layout. See FAP appendix for tested ULTW decoded measurements. Peet #/* needs a vendor specification before assigning measurements.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"raw_weather","information":"!!006B005803500000----03E9--------002105140000005D","format":"ultimeter_2000"}},"unmapped":["$.decoded_measurements"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} +{"id":"OTH-002","title":"Raw weather Peet Bros U-II #50B7","profile":"opaque-vendor","source":"APRS101 p. 62","packet":"N0CALL>APRS:#50B7500820082","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"raw-weather","vendor":"Peet Bros U-II","raw_payload":"#50B7500820082","decoded_measurements":null},"note":"APRS101 gives examples but not the vendor measurement layout. See FAP appendix for tested ULTW decoded measurements. Peet #/* needs a vendor specification before assigning measurements.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"raw_weather","information":"#50B7500820082"}},"unmapped":["$.decoded_measurements"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} +{"id":"OTH-003","title":"Raw weather Ultimeter 2000 $ULTW","profile":"opaque-vendor","source":"APRS101 p. 62","packet":"N0CALL>APRS:$ULTW0031003702CE0069----000086A00001----011901CC00000005","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"raw-weather","vendor":"Ultimeter 2000","raw_payload":"$ULTW0031003702CE0069----000086A00001----011901CC00000005","decoded_measurements":null},"note":"APRS101 gives examples but not the vendor measurement layout. See FAP appendix for tested ULTW decoded measurements. Peet #/* needs a vendor specification before assigning measurements.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"raw_weather","information":"$ULTW0031003702CE0069----000086A00001----011901CC00000005","format":"ultimeter_2000"}},"unmapped":["$.decoded_measurements"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} +{"id":"OTH-004","title":"Raw weather Peet Bros U-II *7007","profile":"opaque-vendor","source":"APRS101 p. 62","packet":"N0CALL>APRS:*7007600000000","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"raw-weather","vendor":"Peet Bros U-II","raw_payload":"*7007600000000","decoded_measurements":null},"note":"APRS101 gives examples but not the vendor measurement layout. See FAP appendix for tested ULTW decoded measurements. Peet #/* needs a vendor specification before assigning measurements.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"raw_weather","information":"*7007600000000"}},"unmapped":["$.decoded_measurements"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} +{"id":"OTH-005","title":"User-defined '{Q1'","profile":"core-1.1","source":"APRS101 pp. 87-88","packet":"N0CALL>APRS:{Q1qwerty","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"user-defined","user_id":"Q","user_type":"1","data":"qwerty"},"note":"Unknown user formats are safely ignored or exposed as opaque bytes; binary data is allowed even though printable ASCII is recommended.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"user_defined","user_id":"Q","user_type":"1","data":"qwerty"}},"unmapped":[]} +{"id":"OTH-006","title":"User-defined '{{z'","profile":"core-1.1","source":"APRS101 pp. 87-88","packet":"N0CALL>APRS:{{zasdfg","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"user-defined","user_id":"{","user_type":"z","data":"asdfg"},"note":"Unknown user formats are safely ignored or exposed as opaque bytes; binary data is allowed even though printable ASCII is recommended.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"user_defined","user_id":"{","user_type":"z","data":"asdfg"}},"unmapped":[]} +{"id":"OTH-007","title":"User-defined '{{z'","profile":"core-1.1","source":"APRS101 pp. 87-88","packet":"N0CALL>APRS:{{z\u0000\u00ff","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"user-defined","user_id":"{","user_type":"z","data":"\u0000\u00ff"},"note":"Unknown user formats are safely ignored or exposed as opaque bytes; binary data is allowed even though printable ASCII is recommended.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"user_defined","user_id":"{","user_type":"z","data":"\u0000\u00ff"}},"unmapped":[]} +{"id":"OTH-008","title":"Explicit invalid/test data","profile":"core-1.1","source":"APRS101 p. 89","packet":"N0CALL>APRS:,191146,V,4214.2466,N,07303.5181,W,417.238,114.5,091099,14.7,W/GPS FIX","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"invalid-or-test","data":"191146,V,4214.2466,N,07303.5181,W,417.238,114.5,091099,14.7,W/GPS FIX","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"invalid","data":"191146,V,4214.2466,N,07303.5181,W,417.238,114.5,091099,14.7,W/GPS FIX"}},"unmapped":["$.position_usable"]} +{"id":"OTH-009","title":"Non-APRS / obsolete UIDIGI ready","profile":"core-1.1","source":"APRS101 pp. 61,75,89","packet":"N0CALL>APRS:UIDIGI ready","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"non-aprs-beacon","raw_text":"UIDIGI ready","status_fallback_permitted":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"beacon","text":"UIDIGI ready"}},"unmapped":["$.status_fallback_permitted"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OTH-010","title":"Non-APRS / obsolete LEADER *09","profile":"core-1.1","source":"APRS101 pp. 61,75,89","packet":"N0CALL>APRS:LEADER *092345z4903.50N/07201.75W>","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"non-aprs-beacon","raw_text":"LEADER *092345z4903.50N/07201.75W>","status_fallback_permitted":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"beacon","text":"LEADER *092345z4903.50N/07201.75W>"}},"unmapped":["$.status_fallback_permitted"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OTH-011","title":"Non-APRS / obsolete BLN1 :Ol","profile":"core-1.1","source":"APRS101 pp. 61,75,89","packet":"N0CALL>APRS:BLN1 :Old notice","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"non-aprs-beacon","raw_text":"BLN1 :Old notice","status_fallback_permitted":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"beacon","text":"BLN1 :Old notice"}},"unmapped":["$.status_fallback_permitted"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OTH-012","title":"Obsolete bracket grid IO91","profile":"historical-1.0","source":"APRS101 pp. 25,33","packet":"N0CALL>APRS:[IO91]","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"legacy-grid-beacon","grid":{"locator":"IO91","bounds_deg":{"latitude":[51,52],"longitude":[-2,0]},"center_deg":[51.5,-1.0]}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"maidenhead","grid":{"locator":"IO91"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OTH-013","title":"Obsolete bracket grid IO91SX","profile":"historical-1.0","source":"APRS101 pp. 25,33","packet":"N0CALL>APRS:[IO91SX]","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"legacy-grid-beacon","grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"maidenhead","grid":{"locator":"IO91SX"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OTH-014","title":"Unspecified / reserved DTI '\"'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:\"TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"\"","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"\"TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-015","title":"Unspecified / reserved DTI '%'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:%TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"%","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"%TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-016","title":"Unspecified / reserved DTI '&'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:&TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"&","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"&TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-017","title":"Unspecified / reserved DTI '('","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:(TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"(","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"(TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-018","title":"Unspecified / reserved DTI '+'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:+TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"+","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"+TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-019","title":"Unspecified / reserved DTI '-'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:-TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"-","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"-TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-020","title":"Unspecified / reserved DTI '.'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:.TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":".","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":".TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-021","title":"Unspecified / reserved DTI '\\\\'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:\\TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"\\","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"\\TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-022","title":"Unspecified / reserved DTI ']'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:]TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"]","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"]TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-023","title":"Unspecified / reserved DTI '^'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:^TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"^","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"^TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-024","title":"Unspecified / reserved DTI 'A'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:ATEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"A","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"ATEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-025","title":"Unspecified / reserved DTI 'Z'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:ZTEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"Z","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"ZTEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-026","title":"Unspecified / reserved DTI 'a'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:aTEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"a","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"aTEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-027","title":"Unspecified / reserved DTI 'z'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:zTEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"z","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"zTEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-028","title":"Unspecified / reserved DTI '0'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:0TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"0","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"0TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-029","title":"Unspecified / reserved DTI '9'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:9TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"9","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"9TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-030","title":"Unspecified / reserved DTI '|'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:|TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"|","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"|TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-031","title":"Unspecified / reserved DTI '~'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:~TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"~","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"~TEST"}},"unmapped":["$.position_usable"]} +{"id":"OTH-032","title":"Modern exclamation offset 0","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"OTH-033","title":"Modern exclamation offset 1","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:X!4903.50N/07201.75W-","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"non-aprs-beacon","raw_text":"X!4903.50N/07201.75W-","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"beacon","text":"X!4903.50N/07201.75W-"}},"unmapped":["$.position_usable"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OTH-034","title":"Legacy X1J offset 1","profile":"historical-1.0","source":"APRS101 p. 18","packet":"N0CALL>BEACON:X!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OTH-035","title":"Modern exclamation offset 39","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"non-aprs-beacon","raw_text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"beacon","text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-"}},"unmapped":["$.position_usable"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OTH-036","title":"Legacy X1J offset 39","profile":"historical-1.0","source":"APRS101 p. 18","packet":"N0CALL>BEACON:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OTH-037","title":"Modern exclamation offset 40","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"non-aprs-beacon","raw_text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"beacon","text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-"}},"unmapped":["$.position_usable"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OTH-038","title":"Historical grid locator in destination","profile":"historical-1.0","source":"APRS101 p.15","packet":"N0CALL>IO91SX:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"IO91SX","path":[]},"kind":"status","status_text":"Ready","destination_grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]}},"note":"The six-character destination is a Maidenhead locator in this historical convention. Preserve its area independently of status text; do not treat its center as an exact position fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"IO91SX","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_grid.bounds_deg.latitude","$.destination_grid.bounds_deg.longitude","$.destination_grid.center_deg","$.destination_grid.locator"]} diff --git a/packages/aprs/tests/vectors/pos.jsonl b/packages/aprs/tests/vectors/pos.jsonl new file mode 100644 index 0000000..d021901 --- /dev/null +++ b/packages/aprs/tests/vectors/pos.jsonl @@ -0,0 +1,68 @@ +{"id":"POS-001","title":"DTI !","profile":"core-1.1","source":"APRS101 pp. 22-26, 32-33","packet":"N0CALL>APRS:!4903.50N/07201.75W-Test","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"Test"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Test","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-002","title":"DTI =","profile":"core-1.1","source":"APRS101 pp. 22-26, 32-33","packet":"N0CALL>APRS:=4903.50N/07201.75W-Test","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"Test"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Test","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-003","title":"DTI /","profile":"core-1.1","source":"APRS101 pp. 22-26, 32-33","packet":"N0CALL>APRS:/092345z4903.50N/07201.75W-Test","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"Test","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Test","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"POS-004","title":"DTI @","profile":"core-1.1","source":"APRS101 pp. 22-26, 32-33","packet":"N0CALL>APRS:@234517h4903.50N/07201.75W-Test","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"Test","timestamp":{"raw":"234517h","format":"HMS","zone":"UTC","hour":23,"minute":45,"second":17}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Test","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"timestamp":{"kind":"hms_utc","hour":23,"minute":45,"second":17}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"POS-005","title":"Hemisphere NE","profile":"core-1.1","source":"APRS101 pp. 23-24","packet":"N0CALL>APRS:!4903.50N/07201.75E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-006","title":"Hemisphere NW","profile":"core-1.1","source":"APRS101 pp. 23-24","packet":"N0CALL>APRS:!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-007","title":"Hemisphere SE","profile":"core-1.1","source":"APRS101 pp. 23-24","packet":"N0CALL>APRS:!4903.50S/07201.75E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.058333333333,"longitude_deg":72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.058333333333,"longitude_deg":72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-008","title":"Hemisphere SW","profile":"core-1.1","source":"APRS101 pp. 23-24","packet":"N0CALL>APRS:!4903.50S/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-009","title":"Coordinate boundary 0000.00N 00000.00E","profile":"core-1.1","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!0000.00N/00000.00E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":0.0,"longitude_deg":0.0,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":0.0,"longitude_deg":0.0,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-010","title":"Coordinate boundary 9000.00N 18000.00E","profile":"core-1.1","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!9000.00N/18000.00E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":90.0,"longitude_deg":180.0,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":90.0,"longitude_deg":180.0,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-011","title":"Coordinate boundary 9000.00S 18000.00W","profile":"core-1.1","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!9000.00S/18000.00W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-90.0,"longitude_deg":-180.0,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-90.0,"longitude_deg":-180.0,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-012","title":"Coordinate boundary 8959.99N 17959.99W","profile":"core-1.1","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!8959.99N/17959.99W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":89.999833333333,"longitude_deg":-179.999833333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":89.999833333333,"longitude_deg":-179.999833333333,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-013","title":"Specified unknown-position convention","profile":"core-1.1","source":"APRS101 p. 25","packet":"N0CALL>APRS:!0000.00N\\00000.00W.","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":0.0,"longitude_deg":-0.0,"ambiguity_digits":0,"is_null_position":true},"symbol":{"table_id_raw":"\\","table":"alternate","code":".","overlay":null},"comment":""},"note":"Do not turn every numeric (0,0) coordinate into missing data; the null convention includes the indeterminate symbol.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":0.0,"longitude_deg":-0.0,"ambiguity":0,"symbol":{"table_id":"\\","code":"."}}},"unmapped":["$.position.is_null_position","$.symbol.overlay","$.symbol.table"]} +{"id":"POS-014","title":"Ambiguity 1 NW","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!4903.5 N/07201.7 W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.059166666667,"longitude_deg":-72.029166666667,"ambiguity_digits":1,"cell_bounds_deg":{"latitude":[49.058333333333,49.06],"longitude":[-72.03,-72.028333333333]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.059166666667,"longitude_deg":-72.029166666667,"ambiguity":1,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"POS-015","title":"Ambiguity 1 SE","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!4903.5 S/07201.7 E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.059166666667,"longitude_deg":72.029166666667,"ambiguity_digits":1,"cell_bounds_deg":{"latitude":[-49.06,-49.058333333333],"longitude":[72.028333333333,72.03]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.059166666667,"longitude_deg":72.029166666667,"ambiguity":1,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"POS-016","title":"Latitude-imposed ambiguity 1","profile":"core-1.1","source":"APRS101 p. 24","packet":"N0CALL>APRS:!4903.5 N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.059166666667,"longitude_deg":-72.029166666667,"ambiguity_digits":1,"cell_bounds_deg":{"latitude":[49.058333333333,49.06],"longitude":[-72.03,-72.028333333333]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.059166666667,"longitude_deg":-72.029166666667,"ambiguity":1,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"POS-017","title":"Ambiguity 2 NW","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!4903. N/07201. W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.025,"ambiguity_digits":2,"cell_bounds_deg":{"latitude":[49.05,49.066666666667],"longitude":[-72.033333333333,-72.016666666667]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.025,"ambiguity":2,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"POS-018","title":"Ambiguity 2 SE","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!4903. S/07201. E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.058333333333,"longitude_deg":72.025,"ambiguity_digits":2,"cell_bounds_deg":{"latitude":[-49.066666666667,-49.05],"longitude":[72.016666666667,72.033333333333]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.058333333333,"longitude_deg":72.025,"ambiguity":2,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"POS-019","title":"Latitude-imposed ambiguity 2","profile":"core-1.1","source":"APRS101 p. 24","packet":"N0CALL>APRS:!4903. N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.025,"ambiguity_digits":2,"cell_bounds_deg":{"latitude":[49.05,49.066666666667],"longitude":[-72.033333333333,-72.016666666667]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.025,"ambiguity":2,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"POS-020","title":"Ambiguity 3 NW","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!490 . N/0720 . W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.083333333333,"longitude_deg":-72.083333333333,"ambiguity_digits":3,"cell_bounds_deg":{"latitude":[49.0,49.166666666667],"longitude":[-72.166666666667,-72.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.083333333333,"longitude_deg":-72.083333333333,"ambiguity":3,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"POS-021","title":"Ambiguity 3 SE","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!490 . S/0720 . E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.083333333333,"longitude_deg":72.083333333333,"ambiguity_digits":3,"cell_bounds_deg":{"latitude":[-49.166666666667,-49.0],"longitude":[72.0,72.166666666667]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.083333333333,"longitude_deg":72.083333333333,"ambiguity":3,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"POS-022","title":"Latitude-imposed ambiguity 3","profile":"core-1.1","source":"APRS101 p. 24","packet":"N0CALL>APRS:!490 . N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.083333333333,"longitude_deg":-72.083333333333,"ambiguity_digits":3,"cell_bounds_deg":{"latitude":[49.0,49.166666666667],"longitude":[-72.166666666667,-72.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.083333333333,"longitude_deg":-72.083333333333,"ambiguity":3,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"POS-023","title":"Ambiguity 4 NW","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!49 . N/072 . W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.5,"longitude_deg":-72.5,"ambiguity_digits":4,"cell_bounds_deg":{"latitude":[49.0,50.0],"longitude":[-73.0,-72.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.5,"ambiguity":4,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"POS-024","title":"Ambiguity 4 SE","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!49 . S/072 . E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.5,"longitude_deg":72.5,"ambiguity_digits":4,"cell_bounds_deg":{"latitude":[-50.0,-49.0],"longitude":[72.0,73.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.5,"longitude_deg":72.5,"ambiguity":4,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"POS-025","title":"Latitude-imposed ambiguity 4","profile":"core-1.1","source":"APRS101 p. 24","packet":"N0CALL>APRS:!49 . N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.5,"longitude_deg":-72.5,"ambiguity_digits":4,"cell_bounds_deg":{"latitude":[49.0,50.0],"longitude":[-73.0,-72.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.5,"ambiguity":4,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"POS-026","title":"Comment preservation / length 0","profile":"core-1.1","source":"APRS101 pp. 20, 32","packet":"N0CALL>APRS:!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The raw comment is byte-preserving. Trimming is a separate presentation or compatibility choice.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-027","title":"Comment preservation / length 22","profile":"core-1.1","source":"APRS101 pp. 20, 32","packet":"N0CALL>APRS:!4903.50N/07201.75W- leading and trailing ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":" leading and trailing "},"note":"The raw comment is byte-preserving. Trimming is a separate presentation or compatibility choice.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":" leading and trailing ","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-028","title":"Comment preservation / length 7","profile":"core-1.1","source":"APRS101 pp. 20, 32","packet":"N0CALL>APRS:!4903.50N/07201.75W-A:B > C","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"A:B > C"},"note":"The raw comment is byte-preserving. Trimming is a separate presentation or compatibility choice.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"A:B > C","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-029","title":"Comment preservation / length 22","profile":"core-1.1","source":"APRS101 pp. 20, 32","packet":"N0CALL>APRS:!4903.50N/07201.75W-A=001234 is plain text","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"A=001234 is plain text"},"note":"The raw comment is byte-preserving. Trimming is a separate presentation or compatibility choice.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"A=001234 is plain text","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-030","title":"Comment preservation / length 43","profile":"core-1.1","source":"APRS101 pp. 20, 32","packet":"N0CALL>APRS:!4903.50N/07201.75W-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"note":"The raw comment is byte-preserving. Trimming is a separate presentation or compatibility choice.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-031","title":"Symbol table / overlay /","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-032","title":"Symbol table / overlay \\","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50N\\07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-033","title":"Symbol table / overlay 0","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50N007201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"0","table":"alternate","code":">","overlay":"0"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"0","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-034","title":"Symbol table / overlay 1","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50N107201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"1","table":"alternate","code":">","overlay":"1"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"1","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-035","title":"Symbol table / overlay 2","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50N207201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"2","table":"alternate","code":">","overlay":"2"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"2","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-036","title":"Symbol table / overlay 3","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50N307201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"3","table":"alternate","code":">","overlay":"3"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"3","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-037","title":"Symbol table / overlay 4","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50N407201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"4","table":"alternate","code":">","overlay":"4"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"4","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-038","title":"Symbol table / overlay 5","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50N507201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"5","table":"alternate","code":">","overlay":"5"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"5","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-039","title":"Symbol table / overlay 6","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50N607201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"6","table":"alternate","code":">","overlay":"6"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"6","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-040","title":"Symbol table / overlay 7","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50N707201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"7","table":"alternate","code":">","overlay":"7"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"7","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-041","title":"Symbol table / overlay 8","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50N807201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"8","table":"alternate","code":">","overlay":"8"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"8","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-042","title":"Symbol table / overlay 9","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50N907201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"9","table":"alternate","code":">","overlay":"9"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"9","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-043","title":"Symbol table / overlay A","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NA07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"A","table":"alternate","code":">","overlay":"A"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"A","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-044","title":"Symbol table / overlay B","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NB07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"B","table":"alternate","code":">","overlay":"B"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"B","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-045","title":"Symbol table / overlay C","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NC07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"C","table":"alternate","code":">","overlay":"C"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"C","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-046","title":"Symbol table / overlay D","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50ND07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"D","table":"alternate","code":">","overlay":"D"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"D","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-047","title":"Symbol table / overlay E","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NE07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"E","table":"alternate","code":">","overlay":"E"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"E","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-048","title":"Symbol table / overlay F","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NF07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"F","table":"alternate","code":">","overlay":"F"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"F","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-049","title":"Symbol table / overlay G","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NG07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"G","table":"alternate","code":">","overlay":"G"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"G","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-050","title":"Symbol table / overlay H","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NH07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"H","table":"alternate","code":">","overlay":"H"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"H","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-051","title":"Symbol table / overlay I","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NI07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"I","table":"alternate","code":">","overlay":"I"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"I","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-052","title":"Symbol table / overlay J","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NJ07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"J","table":"alternate","code":">","overlay":"J"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"J","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-053","title":"Symbol table / overlay K","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NK07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"K","table":"alternate","code":">","overlay":"K"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"K","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-054","title":"Symbol table / overlay L","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NL07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"L","table":"alternate","code":">","overlay":"L"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"L","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-055","title":"Symbol table / overlay M","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NM07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"M","table":"alternate","code":">","overlay":"M"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"M","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-056","title":"Symbol table / overlay N","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NN07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"N","table":"alternate","code":">","overlay":"N"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"N","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-057","title":"Symbol table / overlay O","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NO07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"O","table":"alternate","code":">","overlay":"O"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"O","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-058","title":"Symbol table / overlay P","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NP07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"P","table":"alternate","code":">","overlay":"P"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"P","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-059","title":"Symbol table / overlay Q","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NQ07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"Q","table":"alternate","code":">","overlay":"Q"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"Q","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-060","title":"Symbol table / overlay R","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NR07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"R","table":"alternate","code":">","overlay":"R"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"R","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-061","title":"Symbol table / overlay S","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NS07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"S","table":"alternate","code":">","overlay":"S"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"S","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-062","title":"Symbol table / overlay T","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NT07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"T","table":"alternate","code":">","overlay":"T"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"T","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-063","title":"Symbol table / overlay U","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NU07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"U","table":"alternate","code":">","overlay":"U"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"U","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-064","title":"Symbol table / overlay V","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NV07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"V","table":"alternate","code":">","overlay":"V"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"V","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-065","title":"Symbol table / overlay W","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NW07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"W","table":"alternate","code":">","overlay":"W"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"W","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-066","title":"Symbol table / overlay X","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NX07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"X","table":"alternate","code":">","overlay":"X"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"X","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-067","title":"Symbol table / overlay Y","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NY07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"Y","table":"alternate","code":">","overlay":"Y"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"Y","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"POS-068","title":"Symbol table / overlay Z","profile":"core-1.1","source":"APRS101 pp. 90-93","packet":"N0CALL>APRS:!4903.50NZ07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"Z","table":"alternate","code":">","overlay":"Z"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"Z","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} diff --git a/packages/aprs/tests/vectors/qry.jsonl b/packages/aprs/tests/vectors/qry.jsonl new file mode 100644 index 0000000..37cad34 --- /dev/null +++ b/packages/aprs/tests/vectors/qry.jsonl @@ -0,0 +1,20 @@ +{"id":"QRY-001","title":"General APRS","profile":"core-1.1","source":"APRS101 pp. 77-78","packet":"N0CALL>APRS:?APRS?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"APRS","directed":false,"recognized":true,"ack_requested":false}},"note":"Unknown queries are ignored safely; no response is required.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRS"}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.recognized"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"QRY-002","title":"General IGATE","profile":"core-1.1","source":"APRS101 pp. 77-78","packet":"N0CALL>APRS:?IGATE?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"IGATE","directed":false,"recognized":true,"ack_requested":false}},"note":"Unknown queries are ignored safely; no response is required.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"IGATE"}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.recognized"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"QRY-003","title":"General WX","profile":"core-1.1","source":"APRS101 pp. 77-78","packet":"N0CALL>APRS:?WX?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"WX","directed":false,"recognized":true,"ack_requested":false}},"note":"Unknown queries are ignored safely; no response is required.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"WX"}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.recognized"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"QRY-004","title":"General UNKNOWN","profile":"core-1.1","source":"APRS101 pp. 77-78","packet":"N0CALL>APRS:?UNKNOWN?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"UNKNOWN","directed":false,"recognized":false,"ack_requested":false}},"note":"Unknown queries are ignored safely; no response is required.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"UNKNOWN"}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.recognized"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"QRY-005","title":"Target footprint 34.02,-117.15","profile":"core-1.1","source":"APRS101 p. 78","packet":"N0CALL>APRS:?APRS? 34.02,-117.15,0200","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"APRS","directed":false,"latitude_deg":34.02,"longitude_deg":-117.15,"radius_miles":200,"radius_km":321.8688,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRS","footprint":{"center":{"latitude_deg":34.02,"longitude_deg":-117.15},"radius_miles":200}}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.radius_km"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"QRY-006","title":"Target footprint -34.02, 117.15","profile":"core-1.1","source":"APRS101 p. 78","packet":"N0CALL>APRS:?APRS?-34.02, 117.15,0200","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"APRS","directed":false,"latitude_deg":-34.02,"longitude_deg":117.15,"radius_miles":200,"radius_km":321.8688,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRS","footprint":{"center":{"latitude_deg":-34.02,"longitude_deg":117.15},"radius_miles":200}}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.radius_km"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"QRY-007","title":"Directed APRSD","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSD","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSD","message_id":null,"ack_requested":false},"query":{"type":"APRSD","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSD","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"QRY-008","title":"Directed APRSH N0CALL ","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSH N0CALL ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSH N0CALL ","message_id":null,"ack_requested":false},"query":{"type":"APRSH","directed":true,"ack_requested":false,"heard_station":"N0CALL"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSH","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed","$.query.heard_station"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"QRY-009","title":"Directed APRSM","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSM","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSM","message_id":null,"ack_requested":false},"query":{"type":"APRSM","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSM","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"QRY-010","title":"Directed APRSO","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSO","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSO","message_id":null,"ack_requested":false},"query":{"type":"APRSO","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSO","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"QRY-011","title":"Directed APRSP","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSP","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSP","message_id":null,"ack_requested":false},"query":{"type":"APRSP","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSP","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"QRY-012","title":"Directed APRSS","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSS","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSS","message_id":null,"ack_requested":false},"query":{"type":"APRSS","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSS","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"QRY-013","title":"Directed APRST","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRST","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRST","message_id":null,"ack_requested":false},"query":{"type":"APRST","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRST","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"QRY-014","title":"Directed PING?","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?PING?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?PING?","message_id":null,"ack_requested":false},"query":{"type":"PING?","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"PING?","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"QRY-015","title":"Query response Directs= W1AW W2ABC","profile":"core-1.1","source":"APRS101 p. 79","packet":"N0CALL>APRS::W1AW :Directs= W1AW W2ABC","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"Directs= W1AW W2ABC","message_id":null,"ack_requested":false}},"note":"Colons and greater-than signs inside the message do not begin a new outer envelope.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"Directs= W1AW W2ABC","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"QRY-016","title":"Query response N0CALL HEARD: 1 3 2 . . 4 5 6","profile":"core-1.1","source":"APRS101 p. 79","packet":"N0CALL>APRS::W1AW :N0CALL HEARD: 1 3 2 . . 4 5 6","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N0CALL HEARD: 1 3 2 . . 4 5 6","message_id":null,"ack_requested":false}},"note":"Colons and greater-than signs inside the message do not begin a new outer envelope.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"N0CALL HEARD: 1 3 2 . . 4 5 6","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"QRY-017","title":"Query response N0CALL>APRS,DIGI1,WIDE*:","profile":"core-1.1","source":"APRS101 p. 79","packet":"N0CALL>APRS::W1AW :N0CALL>APRS,DIGI1,WIDE*:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N0CALL>APRS,DIGI1,WIDE*:","message_id":null,"ack_requested":false}},"note":"Colons and greater-than signs inside the message do not begin a new outer envelope.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"N0CALL>APRS,DIGI1,WIDE*:","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"QRY-018","title":"Capabilities IGATE,MSG_CNT=43,LOC_CNT=14","profile":"core-1.1","source":"APRS101 p. 77","packet":"N0CALL>APRS:APRS:APRS:APRS:;CHECKPT *151800z4903.50N/07201.75WA","outcome":"stateful","source_expected":{"name":"CHECKPT","owner":"W1AW","alive":true,"visible":true},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-001.2","title":"Object ownership, kill and revival","profile":"stateful","source":"APRS101 p.57; A11 Objects/names","sequence":"SEQ-001","packet":"W2ABC>APRS:;CHECKPT *151801z4904.50N/07201.75WA","outcome":"stateful","source_expected":{"name":"CHECKPT","owner":"W2ABC","alive":true,"visible":true,"latitude_deg":49.075},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-001.3","title":"Object ownership, kill and revival","profile":"stateful","source":"APRS101 p.57; A11 Objects/names","sequence":"SEQ-001","packet":"W2ABC>APRS:;CHECKPT _151802z4904.50N/07201.75WA","outcome":"stateful","source_expected":{"name":"CHECKPT","owner":"W2ABC","alive":false,"visible":false,"record_retained":true},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-001.4","title":"Object ownership, kill and revival","profile":"stateful","source":"APRS101 p.57; A11 Objects/names","sequence":"SEQ-001","packet":"W2ABC>APRS:;CHECKPT *151803z4904.50N/07201.75WA","outcome":"stateful","source_expected":{"name":"CHECKPT","owner":"W2ABC","alive":true,"visible":true},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-002.1","title":"Name case and right padding","profile":"stateful","source":"APRS101 pp.58-59; A11 names","sequence":"SEQ-002","packet":"W1AW>APRS:;Leader *151800z4903.50N/07201.75W>","outcome":"stateful","source_expected":{"entity_key":"Leader","entity_count":1},"note":"One shared name namespace; strip right padding only. Do not uppercase object or item names.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-002.2","title":"Name case and right padding","profile":"stateful","source":"APRS101 pp.58-59; A11 names","sequence":"SEQ-002","packet":"W1AW>APRS:;LEADER *151801z4903.50N/07201.75W>","outcome":"stateful","source_expected":{"entity_key":"LEADER","entity_count":2},"note":"One shared name namespace; strip right padding only. Do not uppercase object or item names.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-002.3","title":"Name case and right padding","profile":"stateful","source":"APRS101 pp.58-59; A11 names","sequence":"SEQ-002","packet":"W1AW>APRS:)Leader!4903.50N/07201.75W>","outcome":"stateful","source_expected":{"entity_key":"Leader","entity_count":2,"type_of_Leader":"item"},"note":"One shared name namespace; strip right padding only. Do not uppercase object or item names.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-003.1","title":"Message duplication and reply acknowledgment","profile":"stateful","source":"APRS101 pp.71-72; A11 REPLY-ACK","sequence":"SEQ-003","packet":"W1AW>APRS::N0CALL :Hello{01}","outcome":"stateful","source_expected":{"deliveries":1,"ack_to":"W1AW","ack_payload":":W1AW :ack01}","pending_reply_ack":"01"},"note":"Receiver N0CALL has outbound message 02 pending. Deduplication uses sender + message ID/content, excluding the changing piggyback ACK; sending/retry timing is not executed by this corpus.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-003.2","title":"Message duplication and reply acknowledgment","profile":"stateful","source":"APRS101 pp.71-72; A11 REPLY-ACK","sequence":"SEQ-003","packet":"W1AW>APRS::N0CALL :Hello{01}02","outcome":"stateful","source_expected":{"deliveries":1,"ack_to":"W1AW","ack_payload":":W1AW :ack01}02","outbound_message_02_acked":true,"pending_reply_ack":"01"},"note":"Receiver N0CALL has outbound message 02 pending. Deduplication uses sender + message ID/content, excluding the changing piggyback ACK; sending/retry timing is not executed by this corpus.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-003.3","title":"Message duplication and reply acknowledgment","profile":"stateful","source":"APRS101 pp.71-72; A11 REPLY-ACK","sequence":"SEQ-003","packet":"N0CALL>APRS::W1AW :Reply{03}01","outcome":"stateful","source_expected":{"message_id":"03","piggyback_ack":"01"},"note":"Receiver N0CALL has outbound message 02 pending. Deduplication uses sender + message ID/content, excluding the changing piggyback ACK; sending/retry timing is not executed by this corpus.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-004.1","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS::N0CALL :PARM.Battery,Temp,,,,Camra,Chut","outcome":"stateful","source_expected":{"A1":"Battery","A2":"Temp","B1":"Camra","B2":"Chut"},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-004.2","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS::N0CALL :UNIT.v/100,deg.F,,,,Click,OPEN","outcome":"stateful","source_expected":{"A1_unit":"v/100","A2_unit":"deg.F","B1_label":"Click","B2_label":"OPEN"},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-004.3","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS::N0CALL :EQNS.0,5.2,0,0,.53,-32","outcome":"stateful","source_expected":{"A1_coefficients":[0,5.2,0],"A2_coefficients":[0,0.53,-32]},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-004.4","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS::N0CALL :BITS.10110000,Balloon","outcome":"stateful","source_expected":{"sense_bits":"10110000","project":"Balloon"},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-004.5","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS:T#005,199,100,255,073,123,10110000","outcome":"stateful","source_expected":{"raw_analog":[199,100,255,73,123],"A1_calibrated":1034.8,"A1_volts":10.348,"A2_fahrenheit":21,"B1_label_active":true,"B2_label_active":true},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-005.1","title":"Bulletin replacement is source-scoped","profile":"stateful","source":"APRS101 p.76","sequence":"SEQ-005","packet":"W1AW>APRS::BLN1 :Road open","outcome":"stateful","source_expected":{"bulletins":{"W1AW/1":"Road open"}},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-005.2","title":"Bulletin replacement is source-scoped","profile":"stateful","source":"APRS101 p.76","sequence":"SEQ-005","packet":"W2ABC>APRS::BLN1 :Meeting at noon","outcome":"stateful","source_expected":{"bulletins":{"W1AW/1":"Road open","W2ABC/1":"Meeting at noon"}},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-005.3","title":"Bulletin replacement is source-scoped","profile":"stateful","source":"APRS101 p.76","sequence":"SEQ-005","packet":"W1AW>APRS::BLN1 :Road closed","outcome":"stateful","source_expected":{"bulletins":{"W1AW/1":"Road closed","W2ABC/1":"Meeting at noon"}},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-006.1","title":"Non-APRS beacon cannot overwrite explicit status","profile":"stateful","source":"APRS101 p.89","sequence":"SEQ-006","packet":"N0CALL>ID:Starting","outcome":"stateful","source_expected":{"fallback_status":"Starting"},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-006.2","title":"Non-APRS beacon cannot overwrite explicit status","profile":"stateful","source":"APRS101 p.89","sequence":"SEQ-006","packet":"N0CALL>APRS:>Operational","outcome":"stateful","source_expected":{"status":"Operational"},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-006.3","title":"Non-APRS beacon cannot overwrite explicit status","profile":"stateful","source":"APRS101 p.89","sequence":"SEQ-006","packet":"N0CALL>ID:UIDIGI ready","outcome":"stateful","source_expected":{"status":"Operational","fallback_status_does_not_replace_explicit":true},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-007.1","title":"Weather location association","profile":"stateful","source":"APRS101 p.65","sequence":"SEQ-007","packet":"N0CALL>APRS:!4903.50N/07201.75W_","outcome":"stateful","source_expected":{"station_latitude_deg":49.058333333333,"station_longitude_deg":-72.029166666667},"note":"Associate positionless weather with the same station identity, not with the immediately previous station in the input stream.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-007.2","title":"Weather location association","profile":"stateful","source":"APRS101 p.65","sequence":"SEQ-007","packet":"N0CALL>APRS:_10151800c220s004g005t077","outcome":"stateful","source_expected":{"weather_latitude_deg":49.058333333333,"weather_longitude_deg":-72.029166666667,"temperature_c":25,"position_inherited_not_transmitted":true},"note":"Associate positionless weather with the same station identity, not with the immediately previous station in the input stream.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} diff --git a/packages/aprs/tests/vectors/sta.jsonl b/packages/aprs/tests/vectors/sta.jsonl new file mode 100644 index 0000000..0d345c8 --- /dev/null +++ b/packages/aprs/tests/vectors/sta.jsonl @@ -0,0 +1,29 @@ +{"id":"STA-001","title":"Status length 0","profile":"core-1.1","source":"APRS101 p. 80","packet":"N0CALL>APRS:>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":""}},"unmapped":[]} +{"id":"STA-002","title":"Status length 5","profile":"core-1.1","source":"APRS101 p. 80","packet":"N0CALL>APRS:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":[]} +{"id":"STA-003","title":"Status length 62","profile":"core-1.1","source":"APRS101 p. 80","packet":"N0CALL>APRS:>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}},"unmapped":[]} +{"id":"STA-004","title":"Status length 12","profile":"core-1.1","source":"APRS101 p. 80","packet":"N0CALL>APRS:> padded ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":" padded "},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":" padded "}},"unmapped":[]} +{"id":"STA-005","title":"Status length 7","profile":"core-1.1","source":"APRS101 p. 80","packet":"N0CALL>APRS:>A:B > C","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"A:B > C"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"A:B > C"}},"unmapped":[]} +{"id":"STA-006","title":"Status length 23","profile":"core-1.1","source":"APRS101 p. 80","packet":"N0CALL>APRS:>1234567 not a timestamp","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"1234567 not a timestamp"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"1234567 not a timestamp"}},"unmapped":[]} +{"id":"STA-007","title":"Timed status","profile":"core-1.1","source":"APRS101 p. 80","packet":"N0CALL>APRS:>092345zxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"status_text":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"text":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}},"unmapped":["$.timestamp.raw"]} +{"id":"STA-008","title":"Grid IO91","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>IO91/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"IO91","bounds_deg":{"latitude":[51,52],"longitude":[-2,0]},"center_deg":[51.5,-1.0]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"IO91"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.symbol":null,"$.payload.text":"IO91/- Home","$.payload.grid":null}}} +{"id":"STA-009","title":"Grid IO91SX","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>IO91SX/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"IO91SX"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.symbol":null,"$.payload.text":"IO91SX/- Home","$.payload.grid":null}}} +{"id":"STA-010","title":"Grid io91sx","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>io91sx/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"IO91SX"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.symbol":null,"$.payload.text":"io91sx/- Home","$.payload.grid":null}}} +{"id":"STA-011","title":"Grid AA00AA","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>AA00AA/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"AA00AA","bounds_deg":{"latitude":[-90.0,-89.958333333333],"longitude":[-180.0,-179.916666666667]},"center_deg":[-89.979166666667,-179.958333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"AA00AA"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.symbol":null,"$.payload.text":"AA00AA/- Home","$.payload.grid":null}}} +{"id":"STA-012","title":"Grid RR99XX","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>RR99XX/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"RR99XX","bounds_deg":{"latitude":[89.958333333333,90.0],"longitude":[179.916666666667,180.0]},"center_deg":[89.979166666667,179.958333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"RR99XX"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.symbol":null,"$.payload.text":"RR99XX/- Home","$.payload.grid":null}}} +{"id":"STA-013","title":"Beam/ERP 01","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^01","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":0,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":0,"erp_w":10}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^01","$.payload.beam":null}}} +{"id":"STA-014","title":"Beam/ERP 0:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^0:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":0,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":0,"erp_w":1000}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^0:","$.payload.beam":null}}} +{"id":"STA-015","title":"Beam/ERP 0K","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^0K","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":0,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":0,"erp_w":7290}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^0K","$.payload.beam":null}}} +{"id":"STA-016","title":"Beam/ERP 91","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^91","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":90,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":90,"erp_w":10}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^91","$.payload.beam":null}}} +{"id":"STA-017","title":"Beam/ERP 9:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^9:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":90,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":90,"erp_w":1000}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^9:","$.payload.beam":null}}} +{"id":"STA-018","title":"Beam/ERP 9K","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^9K","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":90,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":90,"erp_w":7290}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^9K","$.payload.beam":null}}} +{"id":"STA-019","title":"Beam/ERP A1","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^A1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":100,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":100,"erp_w":10}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^A1","$.payload.beam":null}}} +{"id":"STA-020","title":"Beam/ERP A:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^A:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":100,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":100,"erp_w":1000}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^A:","$.payload.beam":null}}} +{"id":"STA-021","title":"Beam/ERP AK","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^AK","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":100,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":100,"erp_w":7290}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^AK","$.payload.beam":null}}} +{"id":"STA-022","title":"Beam/ERP B1","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^B1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":110,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":110,"erp_w":10}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^B1","$.payload.beam":null}}} +{"id":"STA-023","title":"Beam/ERP B:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^B:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":110,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":110,"erp_w":1000}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^B:","$.payload.beam":null}}} +{"id":"STA-024","title":"Beam/ERP BK","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^BK","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":110,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":110,"erp_w":7290}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^BK","$.payload.beam":null}}} +{"id":"STA-025","title":"Beam/ERP Z1","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^Z1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":350,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":350,"erp_w":10}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^Z1","$.payload.beam":null}}} +{"id":"STA-026","title":"Beam/ERP Z:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^Z:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":350,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":350,"erp_w":1000}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^Z:","$.payload.beam":null}}} +{"id":"STA-027","title":"Beam/ERP ZK","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^ZK","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":350,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":350,"erp_w":7290}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^ZK","$.payload.beam":null}}} +{"id":"STA-028","title":"Grid plus meteor scatter","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>IO91SX/- ^B7","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" ","beam_heading_deg":110,"erp_w":490},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" ","grid":{"locator":"IO91SX"},"beam":{"heading_deg":110,"erp_w":490}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.symbol":null,"$.payload.text":"IO91SX/- ^B7","$.payload.grid":null,"$.payload.beam":null}}} +{"id":"STA-029","title":"Embedded beam-looking text","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^B7 later","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready^B7 later"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready^B7 later"}},"unmapped":[]} diff --git a/packages/aprs/tests/vectors/tim.jsonl b/packages/aprs/tests/vectors/tim.jsonl new file mode 100644 index 0000000..d70230d --- /dev/null +++ b/packages/aprs/tests/vectors/tim.jsonl @@ -0,0 +1,20 @@ +{"id":"TIM-001","title":"Position timestamp 010000z","profile":"core-1.1","source":"APRS101 pp. 22-23","packet":"N0CALL>APRS:@010000z4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"","timestamp":{"raw":"010000z","format":"DHM","zone":"UTC","day":1,"hour":0,"minute":0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"timestamp":{"kind":"dhm_utc","day":1,"hour":0,"minute":0}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"TIM-002","title":"Position timestamp 312359z","profile":"core-1.1","source":"APRS101 pp. 22-23","packet":"N0CALL>APRS:@312359z4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"","timestamp":{"raw":"312359z","format":"DHM","zone":"UTC","day":31,"hour":23,"minute":59}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"timestamp":{"kind":"dhm_utc","day":31,"hour":23,"minute":59}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"TIM-003","title":"Position timestamp 092345/","profile":"core-1.1","source":"APRS101 pp. 22-23","packet":"N0CALL>APRS:@092345/4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"","timestamp":{"raw":"092345/","format":"DHM","zone":"sender-local","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"timestamp":{"kind":"dhm_local","day":9,"hour":23,"minute":45}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"TIM-004","title":"Position timestamp 010000/","profile":"core-1.1","source":"APRS101 pp. 22-23","packet":"N0CALL>APRS:@010000/4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"","timestamp":{"raw":"010000/","format":"DHM","zone":"sender-local","day":1,"hour":0,"minute":0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"timestamp":{"kind":"dhm_local","day":1,"hour":0,"minute":0}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"TIM-005","title":"Position timestamp 000000h","profile":"core-1.1","source":"APRS101 pp. 22-23","packet":"N0CALL>APRS:@000000h4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"","timestamp":{"raw":"000000h","format":"HMS","zone":"UTC","hour":0,"minute":0,"second":0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"timestamp":{"kind":"hms_utc","hour":0,"minute":0,"second":0}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"TIM-006","title":"Position timestamp 235959h","profile":"core-1.1","source":"APRS101 pp. 22-23","packet":"N0CALL>APRS:@235959h4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"","timestamp":{"raw":"235959h","format":"HMS","zone":"UTC","hour":23,"minute":59,"second":59}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"timestamp":{"kind":"hms_utc","hour":23,"minute":59,"second":59}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"TIM-007","title":"Position timestamp 092345z","profile":"core-1.1","source":"APRS101 pp. 22-23","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"TIM-008","title":"Positionless weather timestamp 01010000","profile":"core-1.1","source":"APRS101 pp. 22, 63-64","packet":"N0CALL>APRS:_01010000c...s...g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"01010000","format":"MDHM","zone":"UTC","month":1,"day":1,"hour":0,"minute":0},"weather":{"wind_direction_deg":null,"wind_speed_mph":null,"gust_mph":null,"temperature_f":null}},"note":"Year is absent; February 29 is not invalid without a year context.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":1,"month":1,"hour":0,"minute":0},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"TIM-009","title":"Positionless weather timestamp 12312359","profile":"core-1.1","source":"APRS101 pp. 22, 63-64","packet":"N0CALL>APRS:_12312359c...s...g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"12312359","format":"MDHM","zone":"UTC","month":12,"day":31,"hour":23,"minute":59},"weather":{"wind_direction_deg":null,"wind_speed_mph":null,"gust_mph":null,"temperature_f":null}},"note":"Year is absent; February 29 is not invalid without a year context.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":31,"month":12,"hour":23,"minute":59},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"TIM-010","title":"Positionless weather timestamp 02291234","profile":"core-1.1","source":"APRS101 pp. 22, 63-64","packet":"N0CALL>APRS:_02291234c...s...g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"02291234","format":"MDHM","zone":"UTC","month":2,"day":29,"hour":12,"minute":34},"weather":{"wind_direction_deg":null,"wind_speed_mph":null,"gust_mph":null,"temperature_f":null}},"note":"Year is absent; February 29 is not invalid without a year context.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":29,"month":2,"hour":12,"minute":34},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"TIM-011","title":"Invalid timestamp 000000z","profile":"core-1.1","source":"APRS101 p. 22","packet":"N0CALL>APRS:@000000z4903.50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-timestamp","partial":{"position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0}}},"note":"Reject the timestamp; retaining other fields with a warning is allowed. No normalized instant may be fabricated.","expected":{"original_wire":"N0CALL>APRS:@000000z4903.50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"TIM-012","title":"Invalid timestamp 322359z","profile":"core-1.1","source":"APRS101 p. 22","packet":"N0CALL>APRS:@322359z4903.50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-timestamp","partial":{"position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0}}},"note":"Reject the timestamp; retaining other fields with a warning is allowed. No normalized instant may be fabricated.","expected":{"original_wire":"N0CALL>APRS:@322359z4903.50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"TIM-013","title":"Invalid timestamp 012400z","profile":"core-1.1","source":"APRS101 p. 22","packet":"N0CALL>APRS:@012400z4903.50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-timestamp","partial":{"position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0}}},"note":"Reject the timestamp; retaining other fields with a warning is allowed. No normalized instant may be fabricated.","expected":{"original_wire":"N0CALL>APRS:@012400z4903.50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"TIM-014","title":"Invalid timestamp 012360z","profile":"core-1.1","source":"APRS101 p. 22","packet":"N0CALL>APRS:@012360z4903.50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-timestamp","partial":{"position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0}}},"note":"Reject the timestamp; retaining other fields with a warning is allowed. No normalized instant may be fabricated.","expected":{"original_wire":"N0CALL>APRS:@012360z4903.50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"TIM-015","title":"Invalid timestamp 240000h","profile":"core-1.1","source":"APRS101 p. 22","packet":"N0CALL>APRS:@240000h4903.50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-timestamp","partial":{"position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0}}},"note":"Reject the timestamp; retaining other fields with a warning is allowed. No normalized instant may be fabricated.","expected":{"original_wire":"N0CALL>APRS:@240000h4903.50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"TIM-016","title":"Invalid timestamp 236000h","profile":"core-1.1","source":"APRS101 p. 22","packet":"N0CALL>APRS:@236000h4903.50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-timestamp","partial":{"position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0}}},"note":"Reject the timestamp; retaining other fields with a warning is allowed. No normalized instant may be fabricated.","expected":{"original_wire":"N0CALL>APRS:@236000h4903.50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"TIM-017","title":"Invalid timestamp 235960h","profile":"core-1.1","source":"APRS101 p. 22","packet":"N0CALL>APRS:@235960h4903.50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-timestamp","partial":{"position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0}}},"note":"Reject the timestamp; retaining other fields with a warning is allowed. No normalized instant may be fabricated.","expected":{"original_wire":"N0CALL>APRS:@235960h4903.50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"TIM-018","title":"Invalid timestamp 010000x","profile":"core-1.1","source":"APRS101 p. 22","packet":"N0CALL>APRS:@010000x4903.50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-timestamp","partial":{"position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0}}},"note":"Reject the timestamp; retaining other fields with a warning is allowed. No normalized instant may be fabricated.","expected":{"original_wire":"N0CALL>APRS:@010000x4903.50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"TIM-019","title":"Timestamp-looking status remains text 092345/","profile":"core-1.1","source":"APRS101 pp. 22, 80","packet":"N0CALL>APRS:>092345/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"092345/Ready"},"note":"Only DDHHMMz is a status timestamp. These bytes can still be valid ordinary status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"092345/Ready"}},"unmapped":[]} +{"id":"TIM-020","title":"Timestamp-looking status remains text 234517h","profile":"core-1.1","source":"APRS101 pp. 22, 80","packet":"N0CALL>APRS:>234517hReady","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"234517hReady"},"note":"Only DDHHMMz is a status timestamp. These bytes can still be valid ordinary status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"234517hReady"}},"unmapped":[]} diff --git a/packages/aprs/tests/vectors/tlm.jsonl b/packages/aprs/tests/vectors/tlm.jsonl new file mode 100644 index 0000000..30f4321 --- /dev/null +++ b/packages/aprs/tests/vectors/tlm.jsonl @@ -0,0 +1,18 @@ +{"id":"TLM-001","title":"Sequence 000 comma=True","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#000,199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":0,"sequence_raw":"000","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":0,"sequence_raw":"000","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"TLM-002","title":"Sequence 005 comma=True","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":5,"sequence_raw":"005","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":5,"sequence_raw":"005","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"TLM-003","title":"Sequence 999 comma=True","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#999,199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":999,"sequence_raw":"999","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":999,"sequence_raw":"999","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"TLM-004","title":"Sequence MIC comma=True","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#MIC,199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":null,"sequence_raw":"MIC","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":null,"sequence_raw":"MIC","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"TLM-005","title":"Sequence MIC comma=False","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#MIC199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":null,"sequence_raw":"MIC","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":null,"sequence_raw":"MIC","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"TLM-006","title":"Analog/digital boundaries 00000000","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS:T#123,000,000,000,000,000,00000000Payload","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":123,"sequence_raw":"123","analog_raw":[0,0,0,0,0],"digital_bits":"00000000","digital_channels_B1_to_B8":[0,0,0,0,0,0,0,0]},"comment":"Payload"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"Payload","sequence":123,"sequence_raw":"123","analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"TLM-007","title":"Analog/digital boundaries 11111111","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS:T#123,255,255,255,255,255,11111111Payload","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":123,"sequence_raw":"123","analog_raw":[255,255,255,255,255],"digital_bits":"11111111","digital_channels_B1_to_B8":[1,1,1,1,1,1,1,1]},"comment":"Payload"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"Payload","sequence":123,"sequence_raw":"123","analog":[255,255,255,255,255],"digital":[true,true,true,true,true,true,true,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"TLM-008","title":"Analog/digital boundaries 10000000","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS:T#123,001,002,003,004,005,10000000Payload","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":123,"sequence_raw":"123","analog_raw":[1,2,3,4,5],"digital_bits":"10000000","digital_channels_B1_to_B8":[1,0,0,0,0,0,0,0]},"comment":"Payload"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"Payload","sequence":123,"sequence_raw":"123","analog":[1,2,3,4,5],"digital":[true,false,false,false,false,false,false,false],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"TLM-009","title":"Analog/digital boundaries 00000001","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS:T#123,001,002,003,004,005,00000001Payload","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":123,"sequence_raw":"123","analog_raw":[1,2,3,4,5],"digital_bits":"00000001","digital_channels_B1_to_B8":[0,0,0,0,0,0,0,1]},"comment":"Payload"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"Payload","sequence":123,"sequence_raw":"123","analog":[1,2,3,4,5],"digital":[false,false,false,false,false,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"TLM-010","title":"Definition PARM","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS::N0CALL-11:PARM.Battery,Btemp,ATemp,Pres,Alt,Camra,Chut,Sun,10m,ATV","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL-11","addressee_raw":"N0CALL-11","text":"PARM.Battery,Btemp,ATemp,Pres,Alt,Camra,Chut,Sun,10m,ATV","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL-11","type":"PARM","values_raw":["Battery","Btemp","ATemp","Pres","Alt","Camra","Chut","Sun","10m","ATV"],"channels":["Battery","Btemp","ATemp","Pres","Alt","Camra","Chut","Sun","10m","ATV",null,null,null]}},"note":"The sender may configure another telemetry station. Do not require addressee == packet source.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-11","definition":{"type":"telemetry_parameters","channels":["Battery","Btemp","ATemp","Pres","Alt","Camra","Chut","Sun","10m","ATV",null,null,null]}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"TLM-011","title":"Definition UNIT","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS::N0CALL-11:UNIT.v/100,deg.F,deg.F,Mbar,Kft,Click,OPEN,on,on,hi","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL-11","addressee_raw":"N0CALL-11","text":"UNIT.v/100,deg.F,deg.F,Mbar,Kft,Click,OPEN,on,on,hi","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL-11","type":"UNIT","values_raw":["v/100","deg.F","deg.F","Mbar","Kft","Click","OPEN","on","on","hi"],"channels":["v/100","deg.F","deg.F","Mbar","Kft","Click","OPEN","on","on","hi",null,null,null]}},"note":"The sender may configure another telemetry station. Do not require addressee == packet source.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-11","definition":{"type":"telemetry_units","channels":["v/100","deg.F","deg.F","Mbar","Kft","Click","OPEN","on","on","hi",null,null,null]}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"TLM-012","title":"Definition EQNS","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS::N0CALL-11:EQNS.0,5.2,0,0,.53,-32,3,4.39,49,-32,3,18,1,2,3","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL-11","addressee_raw":"N0CALL-11","text":"EQNS.0,5.2,0,0,.53,-32,3,4.39,49,-32,3,18,1,2,3","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL-11","type":"EQNS","values_raw":["0","5.2","0","0",".53","-32","3","4.39","49","-32","3","18","1","2","3"],"coefficients_abc":[[0.0,5.2,0.0],[0.0,0.53,-32.0],[3.0,4.39,49.0],[-32.0,3.0,18.0],[1.0,2.0,3.0]]}},"note":"The sender may configure another telemetry station. Do not require addressee == packet source.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-11","definition":{"type":"telemetry_equations","coefficients":[{"a":0.0,"b":5.2,"c":0.0},{"a":0.0,"b":0.53,"c":-32.0},{"a":3.0,"b":4.39,"c":49.0},{"a":-32.0,"b":3.0,"c":18.0},{"a":1.0,"b":2.0,"c":3.0}]}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"TLM-013","title":"Definition BITS","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS::N0CALL-11:BITS.10110000,Balloon project","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL-11","addressee_raw":"N0CALL-11","text":"BITS.10110000,Balloon project","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL-11","type":"BITS","values_raw":["10110000","Balloon project"],"sense_bits":"10110000","project_title":"Balloon project"}},"note":"The sender may configure another telemetry station. Do not require addressee == packet source.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-11","definition":{"type":"telemetry_bits","sense":[true,false,true,true,false,false,false,false],"project_title":"Balloon project"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"TLM-014","title":"Partial / empty definition PARM.Temp","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :PARM.Temp","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"PARM.Temp","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"PARM","values_raw":["Temp"]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_parameters"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"TLM-015","title":"Partial / empty definition PARM.Temp,,Volt","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :PARM.Temp,,Volt","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"PARM.Temp,,Volt","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"PARM","values_raw":["Temp","","Volt"]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_parameters"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"TLM-016","title":"Partial / empty definition UNIT.deg.C,,V","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :UNIT.deg.C,,V","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"UNIT.deg.C,,V","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"UNIT","values_raw":["deg.C","","V"]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_units"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"TLM-017","title":"Partial / empty definition EQNS.0,1,0","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :EQNS.0,1,0","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"EQNS.0,1,0","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"EQNS","values_raw":["0","1","0"]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_equations"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"TLM-018","title":"Partial / empty definition BITS.11111111,","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :BITS.11111111,","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"BITS.11111111,","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"BITS","values_raw":["11111111",""]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_bits"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} diff --git a/packages/aprs/tests/vectors/wx.jsonl b/packages/aprs/tests/vectors/wx.jsonl new file mode 100644 index 0000000..df98d7b --- /dev/null +++ b/packages/aprs/tests/vectors/wx.jsonl @@ -0,0 +1,66 @@ +{"id":"WX-001","title":"Complete positionless report","profile":"core-1.1","source":"APRS101 pp. 63-64","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b09900WRSW","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"software_code":"W","device_code":"RSW"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"software_code":"W","device_code":"RSW","wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-002","title":"Complete weather DTI !","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:!4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-003","title":"Complete weather DTI =","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:=4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-004","title":"Complete weather DTI /","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:/092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-005","title":"Complete weather DTI @","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-006","title":"Temperature -99","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t-99","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":-99,"temperature_c":-72.777777777778}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":-99,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-007","title":"Temperature -07","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t-07","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":-7,"temperature_c":-21.666666666667}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":-7,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-008","title":"Temperature 000","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":0,"temperature_c":-17.777777777778}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":0,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-009","title":"Temperature 032","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t032","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":32,"temperature_c":0.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-010","title":"Temperature 077","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":77,"temperature_c":25.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-011","title":"Temperature 999","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t999","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":999,"temperature_c":537.222222222222}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":999,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-012","title":"Humidity '00'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h00","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":100}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-013","title":"Humidity '01'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h01","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":1}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":1,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-014","title":"Humidity '99'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h99","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":99}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":99,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-015","title":"Humidity '..'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h..","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-016","title":"Humidity ' '","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-017","title":"Missing c via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c...s004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":null,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-018","title":"Missing c via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c s004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":null,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-019","title":"Missing s via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s...g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":null,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-020","title":"Missing s via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":null,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-021","title":"Missing g via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g...t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":null,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-022","title":"Missing g via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":null,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-023","title":"Missing t via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t...r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":null,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-024","title":"Missing t via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":null,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-025","title":"Missing r via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r...p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":null,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-026","title":"Missing r via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":null,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-027","title":"Missing p via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p...P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":null,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-028","title":"Missing p via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":null,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-029","title":"Missing P via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P...h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":null,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-030","title":"Missing P via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":null,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-031","title":"Missing h via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h..b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":null,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-032","title":"Missing h via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":null,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-033","title":"Missing b via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b.....","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":null}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-034","title":"Missing b via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":null}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-035","title":"Optional field [('L', '000')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077L000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":0,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-036","title":"Optional field [('L', '999')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077L999","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":999}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":999,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-037","title":"Optional field [('l', '000')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077l000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":1000}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":1000,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-038","title":"Optional field [('l', '123')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077l123","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":1123}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":1123,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-039","title":"Optional field [('l', '999')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077l999","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":1999}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":1999,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-040","title":"Optional field [('#', '456')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077#456","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_counter_raw":456}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"rain_counter":{"value":456,"unit":"count"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-041","title":"Snow in complete weather 001","profile":"disputed-units","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t032s001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":32,"temperature_c":0.0,"snow_24h_inches":1,"snow_24h_mm":25.4,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Here lowercase s is snowfall. Positionless s is wind speed. The addendum inconsistently prints uppercase S in some snow examples; see ambiguity register.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"},"snow_24h":{"value":1,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.snow_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-042","title":"Snow in complete weather 1.5","profile":"disputed-units","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t032s1.5","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":32,"temperature_c":0.0,"snow_24h_inches":1.5,"snow_24h_mm":38.1,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Here lowercase s is snowfall. Positionless s is wind speed. The addendum inconsistently prints uppercase S in some snow examples; see ambiguity register.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"},"snow_24h":{"value":1.5,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.snow_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-043","title":"Snow in complete weather 010","profile":"disputed-units","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t032s010","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":32,"temperature_c":0.0,"snow_24h_inches":10,"snow_24h_mm":254.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Here lowercase s is snowfall. Positionless s is wind speed. The addendum inconsistently prints uppercase S in some snow examples; see ambiguity register.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"},"snow_24h":{"value":10,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.snow_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-044","title":"Optional weather order / omission 5","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077b10132h00P012p025r001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"pressure_tenth_hpa":10132,"pressure_hpa":1013.2,"humidity_percent":100,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1013.2,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-045","title":"Optional weather order / omission 1","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077r000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":0,"rain_1h_mm":0.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"rain_1h":{"value":0.0,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.rain_1h_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-046","title":"Optional weather order / omission 0","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-047","title":"Weather symbol /_","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-048","title":"Weather symbol \\_","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N\\07201.75W_220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-049","title":"Weather symbol /W","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75WW220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"W","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"W"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"fields","reason":"Alternate W weather symbol is not decoded as weather.","allowed_actual":{"$.payload.comment":"g005t077","$.payload.extensions.weather":null}}} +{"id":"WX-050","title":"Weather symbol \\W","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N\\07201.75WW220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"W","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"W"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"fields","reason":"Alternate W weather symbol is not decoded as weather.","allowed_actual":{"$.payload.comment":"g005t077","$.payload.extensions.weather":null}}} +{"id":"WX-051","title":"Compressed weather wind belongs to weather","profile":"core-1.1","source":"APRS101 pp. 39,66","packet":"N0CALL>APRS:=/5L!!<*e7_7P[g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"weather":{"wind_direction_deg":88,"wind_speed_knots":36.232012168838,"wind_speed_mps":18.639357371302,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25},"comment":""},"note":"The cs bytes represent wind, not station motion. FAP retains them in its movement fields; do not copy that schema into the semantic assertion.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":"_"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"weather":{"wind_direction":{"value":88,"unit":"degrees"},"wind_speed":{"value":36.232012168838,"unit":"knots"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}}}},"unmapped":["$.compression.type_value","$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"WX-052","title":"Weather-bearing object","profile":"disputed-units","source":"APRS101 pp. 58,66","packet":"N0CALL>APRS:;WX-SITE *092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}},"name":"WX-SITE","name_raw":"WX-SITE ","alive":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"WX-SITE","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-053","title":"Storm HC predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/HC/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"hurricane","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"hurricane","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-054","title":"Storm HC predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/HC/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"hurricane","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"hurricane","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-055","title":"Storm TS predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TS/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"tropical-storm","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-056","title":"Storm TS predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/TS/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"tropical-storm","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-057","title":"Storm TD predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TD/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-depression","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"tropical-depression","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-058","title":"Storm TD predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/TD/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-depression","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"tropical-depression","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-059","title":"Storm without optional whole-gale radius","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TS/060^080/0990>000&030","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":false,"sustained_wind_knots":60,"peak_gust_knots":80,"central_pressure_hpa":990,"hurricane_radius_nm":0,"tropical_storm_radius_nm":30}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"tropical-storm","predicted":false,"sustained_wind_knots":60,"peak_gust_knots":80,"central_pressure_hpa":990,"hurricane_radius_nm":0,"tropical_storm_radius_nm":30}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-060","title":"Unavailable complete-weather wind '000/000'","profile":"disputed-zero","source":"APRS101 p.27; A11 WX","packet":"N0CALL>APRS:!4903.50N/07201.75W_000/000g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"wind_raw":"000/000","wind_direction_deg":null,"wind_speed_raw":null,"gust_mph":null,"temperature_f":null}},"note":"The PDF permits 000/000 as unknown; receivers also use numeric zero for measured calm. Do not collapse missing markers into measured calm. Select a policy for the all-zero pair.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":null,"unit":"degrees"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"wind_speed":{"value":null,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.wind_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-061","title":"Unavailable complete-weather wind '.../...'","profile":"core-1.1","source":"APRS101 p.27; A11 WX","packet":"N0CALL>APRS:!4903.50N/07201.75W_.../...g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"wind_raw":".../...","wind_direction_deg":null,"wind_speed_raw":null,"gust_mph":null,"temperature_f":null}},"note":"The PDF permits 000/000 as unknown; receivers also use numeric zero for measured calm. Do not collapse missing markers into measured calm. Select a policy for the all-zero pair.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":null,"unit":"degrees"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"wind_speed":{"value":null,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.wind_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-062","title":"Unavailable complete-weather wind ' / '","profile":"core-1.1","source":"APRS101 p.27; A11 WX","packet":"N0CALL>APRS:!4903.50N/07201.75W_ / g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"wind_raw":" / ","wind_direction_deg":null,"wind_speed_raw":null,"gust_mph":null,"temperature_f":null}},"note":"The PDF permits 000/000 as unknown; receivers also use numeric zero for measured calm. Do not collapse missing markers into measured calm. Select a policy for the all-zero pair.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":null,"unit":"degrees"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"wind_speed":{"value":null,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.wind_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-063","title":"Linked water-gauge field F20.1","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077F20.1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"F","raw":"20.1","value":20.1,"unit":"ft","meters":6.12648,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.water_height.reference_datum","$.weather.water_height.unit","$.weather.water_height.value","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-064","title":"Linked water-gauge field F-1.2","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077F-1.2","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"F","raw":"-1.2","value":-1.2,"unit":"ft","meters":-0.36576,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.water_height.reference_datum","$.weather.water_height.unit","$.weather.water_height.value","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-065","title":"Linked water-gauge field f20.1","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077f20.1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"f","raw":"20.1","value":20.1,"unit":"m","meters":20.1,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.water_height.reference_datum","$.weather.water_height.unit","$.weather.water_height.value","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-066","title":"Linked water-gauge field f-1.2","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077f-1.2","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"f","raw":"-1.2","value":-1.2,"unit":"m","meters":-1.2,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.water_height.reference_datum","$.weather.water_height.unit","$.weather.water_height.value","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} From 5ead0866a1b571d65cb0df5f750e9495e2d34e25 Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Sat, 17 Oct 2026 06:29:19 +0000 Subject: [PATCH 02/14] Install package metadata before source corpus CI --- .github/workflows/aprs-vectors.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/aprs-vectors.yml b/.github/workflows/aprs-vectors.yml index c9833b0..5d2dac9 100644 --- a/.github/workflows/aprs-vectors.yml +++ b/.github/workflows/aprs-vectors.yml @@ -14,12 +14,12 @@ jobs: - uses: actions/setup-python@v5 with: python-version: "3.12" - - run: python -m pip install 'pytest>=8,<10' build + - run: python -m pip install 'pytest>=8,<10' build -e ./packages/aprs - name: Test source including every JSONL vector run: PYTHONPATH=packages/aprs/src python -m pytest packages/aprs/tests -q - name: Build and install wheel run: | python -m build --wheel packages/aprs - python -m pip install --no-deps packages/aprs/dist/*.whl + python -m pip install --force-reinstall --no-deps packages/aprs/dist/*.whl - name: Test installed wheel including every JSONL vector run: python -m pytest packages/aprs/tests -q From b97beb7970c6b6fec2c0b6e30200f348bb87d96c Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Fri, 16 Oct 2026 23:47:38 -0700 Subject: [PATCH 03/14] Addressed some test vector issues. --- README.md | 12 +- packages/aprs/README.md | 7 + packages/aprs/docs/APRS_COMPLIANCE_VECTORS.md | 2 +- packages/aprs/tests/generate_vectors.py | 34 +- .../aprs/tests/test_vector_corpus_contract.py | 32 +- packages/aprs/tests/vector_gaps.json | 48 --- packages/aprs/tests/vectors/README.md | 19 +- packages/aprs/tests/vectors/cmp.jsonl | 12 +- packages/aprs/tests/vectors/ext.jsonl | 22 +- packages/aprs/tests/vectors/fap.jsonl | 328 +++++++++--------- packages/aprs/tests/vectors/mic.jsonl | 30 +- packages/aprs/tests/vectors/qry.jsonl | 2 +- packages/aprs/tests/vectors/wx.jsonl | 66 ++-- 13 files changed, 300 insertions(+), 314 deletions(-) diff --git a/README.md b/README.md index 2821d88..208be89 100644 --- a/README.md +++ b/README.md @@ -11,12 +11,12 @@ A collection of useful submodules for HAM Radio. At present, HamKit includes the ## In development -- [hamkit-aprs](packages/aprs/README.md): typed APRS parsing and composition - foundation, with byte-preserving handling of unsupported payloads. The - [packet cookbook](packages/aprs/README.md#setup-and-printable-packets) shows - construction and actual decoding results for every modeled family; the - [coverage matrix](packages/aprs/docs/API_COVERAGE.md) distinguishes models - from implemented codecs. +- [hamkit-aprs](packages/aprs/README.md): typed APRS parsing, validation and + composition foundation, with byte-preserving handling of unsupported payloads. + The [packet cookbook](packages/aprs/README.md#find-an-example) shows Python + and JSON construction for every modeled family, with wire output where a + codec exists; the [coverage matrix](packages/aprs/docs/API_COVERAGE.md) + distinguishes models from implemented codecs. ## License diff --git a/packages/aprs/README.md b/packages/aprs/README.md index 736880f..04a3e9b 100644 --- a/packages/aprs/README.md +++ b/packages/aprs/README.md @@ -210,6 +210,13 @@ invalid values stays in `comment` with a diagnostic, and extensions this version cannot decode yet (such as `!DAO!` or weather) make the payload `Opaque` rather than being mistaken for comment text. +When sending, measurements such as course, speed and altitude are rounded to +whole units, like coordinates. Values with no exact wire form (PHG power must +be n² watts) and values that would read back with a different meaning (a known +speed of zero with no course) raise `ConformanceError`. Modeled fields the wire +format cannot carry, such as a PHG rate or an altitude reference, raise +`CodecNotImplementedError` instead of being dropped. + Build with Python: ```python diff --git a/packages/aprs/docs/APRS_COMPLIANCE_VECTORS.md b/packages/aprs/docs/APRS_COMPLIANCE_VECTORS.md index 1349b57..e3828c7 100755 --- a/packages/aprs/docs/APRS_COMPLIANCE_VECTORS.md +++ b/packages/aprs/docs/APRS_COMPLIANCE_VECTORS.md @@ -35924,7 +35924,7 @@ General and directed queries; geographic footprints; response payloads; capabili "ack_requested": false }, "query": { - "type": "PING?", + "type": "PING", "directed": true, "ack_requested": false } diff --git a/packages/aprs/tests/generate_vectors.py b/packages/aprs/tests/generate_vectors.py index 2263d77..bc58894 100644 --- a/packages/aprs/tests/generate_vectors.py +++ b/packages/aprs/tests/generate_vectors.py @@ -102,9 +102,6 @@ def weather(data: JSON) -> JSON: "temperature_f": ("temperature", "fahrenheit"), "humidity_percent": ("humidity", "percent"), "pressure_hpa": ("pressure", "hPa"), - "rain_1h_mm": ("rain_1h", "mm"), - "rain_24h_mm": ("rain_24h", "mm"), - "rain_since_midnight_mm": ("rain_since_midnight", "mm"), "snow_24h_inches": ("snow_24h", "inches"), "luminosity_w_m2": ("luminosity", "W/m2"), "rain_counter_raw": ("rain_counter", "count"), @@ -112,6 +109,13 @@ def weather(data: JSON) -> JSON: for key, (name, unit) in units.items(): if key in data: result[name] = {"value": data[key], "unit": unit} + # Rain is sent in hundredths of an inch. Project that wire unit, like every + # other reading; the source's millimetre conversions stay unmapped. + for name in ("rain_1h", "rain_24h", "rain_since_midnight"): + if f"{name}_hundredth_in" in data: + hundredths = data[f"{name}_hundredth_in"] + value = None if hundredths is None else hundredths / 100 + result[name] = {"value": value, "unit": "inches"} if "wind_speed_raw" in data: result["wind_speed"] = { "value": data["wind_speed_raw"], @@ -163,6 +167,8 @@ def translate(e: JSON) -> JSON: p["compression"] = select(c, "fix nmea_source origin_code") if "csT_raw" in c: p["compression"]["raw"] = c["csT_raw"] + if "ignored" in c: + p["compression"]["ignored"] = c["ignored"] if "mic_e" in e: m = e["mic_e"] names = { @@ -192,7 +198,8 @@ def translate(e: JSON) -> JSON: ( "df_bearing", "bearing", - "bearing_deg hits_code range_code quality_code usable accuracy_less_than_deg", + # usable/accuracy derive from a disputed Q mapping; see UNRESOLVED_SPEC.md. + "bearing_deg hits_code range_code quality_code", ), ( "area", @@ -206,9 +213,12 @@ def translate(e: JSON) -> JSON: if "altitude" in e and kind != "nmea": alt = e["altitude"] unit = "feet" if "feet" in alt else "meters" - enc = {"comment": "feet_extension", "mic-e": "mic_e"}.get( - alt.get("encoding"), alt.get("encoding", "feet_extension") - ) + enc = { + "comment": "feet_extension", + "compressed": "compressed", + "mic-e": "mic_e", + "mic-e-base91": "mic_e", + }[alt.get("encoding", "comment")] ext["altitude"] = { "measurement": {"value": alt[unit], "unit": unit}, "encoding": enc, @@ -305,7 +315,12 @@ def translate(e: JSON) -> JSON: if "storm" in e: storm = e["storm"] p.setdefault("extensions", {})["storm"] = { - "kind": storm["type"], + # APRS101 storm codes; unknown source names fail generation. + "kind": { + "hurricane": "HC", + "tropical-storm": "TS", + "tropical-depression": "TD", + }[storm["type"]], **select( storm, "predicted sustained_wind_knots peak_gust_knots central_pressure_hpa hurricane_radius_nm tropical_storm_radius_nm whole_gale_radius_nm", @@ -603,6 +618,9 @@ def records() -> list[JSON]: row["options"] = case["options"] if case.get("note"): row["note"] = case["note"] + for key in ("scope_note", "extension_tags"): + if key in case: + row[key] = case[key] if "steps" in case: row["expected"] = None row[ diff --git a/packages/aprs/tests/test_vector_corpus_contract.py b/packages/aprs/tests/test_vector_corpus_contract.py index eb87912..c1b67f4 100644 --- a/packages/aprs/tests/test_vector_corpus_contract.py +++ b/packages/aprs/tests/test_vector_corpus_contract.py @@ -47,12 +47,12 @@ def test_comparator_checks_missing_null_lists_and_tolerances() -> None: def test_known_gap_does_not_hide_an_unrelated_regression( monkeypatch: pytest.MonkeyPatch, ) -> None: - row = next(r for r in all_rows() if r["id"] == "EXT-039") + row = next(r for r in all_rows() if r["id"] == "STA-008") packet = a.parse_packet(row["packet"].encode("latin-1")) - assert isinstance(packet, a.Packet) and isinstance(packet.payload, a.Position) + assert isinstance(packet, a.Packet) and isinstance(packet.payload, a.Status) with pytest.raises(KnownGap): check(row) - bad = replace(packet, payload=replace(packet.payload, latitude_deg=0)) + bad = replace(packet, header=a.Header("WRONG", "APRS")) monkeypatch.setattr(a, "parse_packet", lambda *args, **kwargs: bad) with pytest.raises(AssertionError) as error: check(row) @@ -62,18 +62,11 @@ def test_known_gap_does_not_hide_an_unrelated_regression( def test_completed_gap_returns_success_for_strict_xpass( monkeypatch: pytest.MonkeyPatch, ) -> None: - row = next(r for r in all_rows() if r["id"] == "EXT-039") + row = next(r for r in all_rows() if r["id"] == "STA-008") packet = a.parse_packet(row["packet"].encode("latin-1")) - assert isinstance(packet, a.Packet) and isinstance(packet.payload, a.Position) - extensions = packet.payload.extensions - assert extensions.bearing is not None - bearing = replace(extensions.bearing, usable=True, accuracy_less_than_deg=240) - fixed = replace( - packet, - payload=replace( - packet.payload, extensions=replace(extensions, bearing=bearing) - ), - ) + assert isinstance(packet, a.Packet) and isinstance(packet.payload, a.Status) + status = a.Status(" Home", grid=a.Grid("IO91"), symbol=a.Symbol("/", "-")) + fixed = replace(packet, payload=status) monkeypatch.setattr(a, "parse_packet", lambda *args, **kwargs: fixed) check(row) # The parametrized test's strict mark turns this into XPASS/failure. @@ -92,10 +85,10 @@ def broken(*args: Any, **kwargs: Any) -> Any: def test_projection_keys_belong_to_public_json_models() -> None: - """Catch adapter typos even when an entire codec is currently unimplemented.""" + """Catch adapter typos and invalid enum values, even for missing codecs.""" import dataclasses import types - from typing import Union, get_args, get_origin, get_type_hints + from typing import Literal, Union, get_args, get_origin, get_type_hints from hamkit.aprs._json import _SCHEMAS @@ -106,6 +99,13 @@ def validate(value: Any, annotation: Any, path: str) -> None: return model: Any origin, args = get_origin(annotation), get_args(annotation) + # Enforce enums only where every non-null option is a Literal. + options = args if origin in (Union, types.UnionType) else (annotation,) + options = tuple(t for t in options if t is not type(None)) + if options and all(get_origin(t) is Literal for t in options): + allowed = [v for t in options for v in get_args(t)] + assert value in allowed, (path, value, allowed) + return if isinstance(value, dict): if "type" in value: assert value["type"] in tags, (path, value["type"]) diff --git a/packages/aprs/tests/vector_gaps.json b/packages/aprs/tests/vector_gaps.json index bc3d276..ac3846d 100644 --- a/packages/aprs/tests/vector_gaps.json +++ b/packages/aprs/tests/vector_gaps.json @@ -794,54 +794,6 @@ "FAP-413": {} } }, - { - "kind": "fields", - "reason": "DF usability/accuracy annotations are not decoded from quality codes.", - "cases": { - "EXT-038": { - "$.payload.extensions.bearing.usable": null - }, - "EXT-039": { - "$.payload.extensions.bearing.usable": null, - "$.payload.extensions.bearing.accuracy_less_than_deg": null - }, - "EXT-040": { - "$.payload.extensions.bearing.usable": null, - "$.payload.extensions.bearing.accuracy_less_than_deg": null - }, - "EXT-041": { - "$.payload.extensions.bearing.usable": null, - "$.payload.extensions.bearing.accuracy_less_than_deg": null - }, - "EXT-042": { - "$.payload.extensions.bearing.usable": null, - "$.payload.extensions.bearing.accuracy_less_than_deg": null - }, - "EXT-043": { - "$.payload.extensions.bearing.usable": null, - "$.payload.extensions.bearing.accuracy_less_than_deg": null - }, - "EXT-044": { - "$.payload.extensions.bearing.usable": null, - "$.payload.extensions.bearing.accuracy_less_than_deg": null - }, - "EXT-045": { - "$.payload.extensions.bearing.usable": null, - "$.payload.extensions.bearing.accuracy_less_than_deg": null - }, - "EXT-046": { - "$.payload.extensions.bearing.usable": null, - "$.payload.extensions.bearing.accuracy_less_than_deg": null - }, - "EXT-047": { - "$.payload.extensions.bearing.usable": null, - "$.payload.extensions.bearing.accuracy_less_than_deg": null - }, - "EXT-049": { - "$.payload.extensions.bearing.accuracy_less_than_deg": null - } - } - }, { "kind": "fields", "reason": "Explicit FAP compatibility difference; source defaults/options or text normalization differ.", diff --git a/packages/aprs/tests/vectors/README.md b/packages/aprs/tests/vectors/README.md index c0b1881..3a37755 100644 --- a/packages/aprs/tests/vectors/README.md +++ b/packages/aprs/tests/vectors/README.md @@ -26,7 +26,8 @@ wheel. Tests and vectors are repository resources, not runtime package data. ## Row contract -- `id`, `title`, `profile`, `source`, and optional `note` preserve provenance. +- `id`, `title`, `profile`, `source`, and optional `note`, `scope_note` and + `extension_tags` preserve provenance, copied verbatim from the source case. - `packet` is a **Latin-1 byte carrier**, not text to UTF-8 encode. Use `packet.encode("latin-1")`. JSON escapes preserve every control/high-bit byte. The generator checks source byte lengths and any supplied hex before writing. @@ -38,6 +39,13 @@ wheel. Tests and vectors are repository resources, not runtime package data. makes no assertion; an explicit null does. This matches the source contract, which permits additional correctly decoded fields. These are not snapshots of current parser output. The generator imports no APRS parser or models. +- Projections use the model's wire units and enums. Rain is projected from the + source's hundredths of an inch as inches (its millimetre conversions stay + unmapped), so unavailable rain readings remain explicit nulls. Storm kinds + map to `HC`/`TS`/`TD`, and Mic-E altitude to `mic_e`; an unknown source value + fails generation. DF bearing `usable`/`accuracy_less_than_deg` are not + projected: they derive from a quality-code mapping the sources dispute (see + `docs/UNRESOLVED_SPEC.md`). FAP rows keep FAP's own metric weather units. - `unmapped` lists source paths not consumed by the public-JSON projection. Their values remain in `source_expected`; passing the projection does **not** claim those assertions pass. Examples include derived grid/range views, @@ -53,8 +61,9 @@ wheel. Tests and vectors are repository resources, not runtime package data. No decoder implementation is used to generate desired expectations. Field and unit renames, conversions, and FAP compatibility mappings are explicit in `generate_vectors.py`. The integrity tests verify exact regeneration, unique IDs, -section/row counts, and that projected keys belong to public JSON models, even -for codecs that cannot yet decode their packets. Coordinate tolerance is 1e-8 +section/row counts, and that projected keys and enum values belong to public +JSON models, even for codecs that cannot yet decode their packets. Coordinate +tolerance is 1e-8 degrees; other floating measurements use 1e-6 absolute / 1e-9 relative tolerance. ## Expected failures and unresolved assertions @@ -79,7 +88,7 @@ invented passing placeholders. No other packet entries are omitted from the behavioral projections. Existing planned codec gaps, source compatibility choices, and adapter/state work are distinct from parser regressions. -At creation on base `16b711c`, the 1,561 corpus cases yield **631 passes and 930 +Currently the 1,561 corpus cases yield **642 passes and 919 expected failures**, including the 23 unresolved state occurrences. These are projection results, not a claim of complete compliance with every source field. The complete suite includes the pre-existing tests and harness checks. @@ -89,7 +98,7 @@ The complete suite includes the pre-existing tests and harness checks. | hdr.jsonl | 51 | 51 | 0 | | pos.jsonl | 68 | 56 | 12 | | tim.jsonl | 20 | 17 | 3 | -| ext.jsonl | 50 | 39 | 11 | +| ext.jsonl | 50 | 50 | 0 | | cmp.jsonl | 122 | 0 | 122 | | mic.jsonl | 265 | 0 | 265 | | obj.jsonl | 53 | 0 | 53 | diff --git a/packages/aprs/tests/vectors/cmp.jsonl b/packages/aprs/tests/vectors/cmp.jsonl index 765a3d8..20b1d39 100644 --- a/packages/aprs/tests/vectors/cmp.jsonl +++ b/packages/aprs/tests/vectors/cmp.jsonl @@ -2,12 +2,12 @@ {"id":"CMP-002","title":"Compressed DTI =","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:=/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} {"id":"CMP-003","title":"Compressed DTI /","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:/092345z/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} {"id":"CMP-004","title":"Compressed DTI @","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:@234517h/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"timestamp":{"raw":"234517h","format":"HMS","zone":"UTC","hour":23,"minute":45,"second":17},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"hms_utc","hour":23,"minute":45,"second":17},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-005","title":"Compressed coordinate 90, -180","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/!!!!!!!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":90.0,"longitude_deg":-180.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":90.0,"longitude_deg":-180.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT"}}},"unmapped":["$.compression.ignored","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-006","title":"Compressed coordinate -90, 180","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/{{!!{{!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":-90.0,"longitude_deg":180.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-90.0,"longitude_deg":180.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT"}}},"unmapped":["$.compression.ignored","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-007","title":"Compressed coordinate 0, 0","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/NN!!NN!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":0.0,"longitude_deg":0.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":0.0,"longitude_deg":0.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT"}}},"unmapped":["$.compression.ignored","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-008","title":"Compressed coordinate 49.5, -72.75","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/5L!!<*e8> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.749998687409},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.749998687409,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT"}}},"unmapped":["$.compression.ignored","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-009","title":"Compressed coordinate -49.5, 72.75","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/gP!!`q7e> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":-49.5,"longitude_deg":72.749998687409},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.5,"longitude_deg":72.749998687409,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT"}}},"unmapped":["$.compression.ignored","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-010","title":"Compressed coordinate 89.99999, 179.99999","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/!!!%{z{z> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":89.999989499273,"longitude_deg":179.999989499273},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":89.999989499273,"longitude_deg":179.999989499273,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT"}}},"unmapped":["$.compression.ignored","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-005","title":"Compressed coordinate 90, -180","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/!!!!!!!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":90.0,"longitude_deg":-180.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":90.0,"longitude_deg":-180.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-006","title":"Compressed coordinate -90, 180","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/{{!!{{!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":-90.0,"longitude_deg":180.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-90.0,"longitude_deg":180.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-007","title":"Compressed coordinate 0, 0","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/NN!!NN!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":0.0,"longitude_deg":0.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":0.0,"longitude_deg":0.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-008","title":"Compressed coordinate 49.5, -72.75","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/5L!!<*e8> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.749998687409},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.749998687409,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-009","title":"Compressed coordinate -49.5, 72.75","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/gP!!`q7e> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":-49.5,"longitude_deg":72.749998687409},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.5,"longitude_deg":72.749998687409,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-010","title":"Compressed coordinate 89.99999, 179.99999","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/!!!%{z{z> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":89.999989499273,"longitude_deg":179.999989499273},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":89.999989499273,"longitude_deg":179.999989499273,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} {"id":"CMP-011","title":"Compressed table / overlay \\","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=\\5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"\\","table":"alternate","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"\\","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} {"id":"CMP-012","title":"Compressed table / overlay a","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=a5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"a","table":"alternate","code":">","overlay":"0"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"a","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} {"id":"CMP-013","title":"Compressed table / overlay b","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=b5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"b","table":"alternate","code":">","overlay":"1"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"b","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} diff --git a/packages/aprs/tests/vectors/ext.jsonl b/packages/aprs/tests/vectors/ext.jsonl index def7c98..9e26d9e 100644 --- a/packages/aprs/tests/vectors/ext.jsonl +++ b/packages/aprs/tests/vectors/ext.jsonl @@ -35,16 +35,16 @@ {"id":"EXT-035","title":"DFS 2360","profile":"core-1.1","source":"APRS101 pp. 29-30","packet":"N0CALL>APRS:!4903.50N/07201.75W\\DFS2360","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","df_signal":{"s_units":2,"height_haat_ft":80,"gain_db":6,"directivity_deg":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"signal":{"s_units":2,"height_haat_ft":80,"gain_db":6,"directivity_deg":null}}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} {"id":"EXT-036","title":"DFS 0360","profile":"core-1.1","source":"APRS101 pp. 29-30","packet":"N0CALL>APRS:!4903.50N/07201.75W\\DFS0360","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","df_signal":{"s_units":0,"height_haat_ft":80,"gain_db":6,"directivity_deg":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"signal":{"s_units":0,"height_haat_ft":80,"gain_db":6,"directivity_deg":null}}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} {"id":"EXT-037","title":"DFS 9998","profile":"core-1.1","source":"APRS101 pp. 29-30","packet":"N0CALL>APRS:!4903.50N/07201.75W\\DFS9998","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","df_signal":{"s_units":9,"height_haat_ft":5120,"gain_db":9,"directivity_deg":360}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"signal":{"s_units":9,"height_haat_ft":5120,"gain_db":9,"directivity_deg":360}}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} -{"id":"EXT-038","title":"DF quality 0","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/720","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":0,"accuracy_less_than_deg":null,"usable":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":0,"usable":false,"accuracy_less_than_deg":null}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null}}} -{"id":"EXT-039","title":"DF quality 1","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/721","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":1,"accuracy_less_than_deg":240,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":1,"usable":true,"accuracy_less_than_deg":240}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} -{"id":"EXT-040","title":"DF quality 2","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/722","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":2,"accuracy_less_than_deg":120,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":2,"usable":true,"accuracy_less_than_deg":120}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} -{"id":"EXT-041","title":"DF quality 3","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/723","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":3,"accuracy_less_than_deg":64,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":3,"usable":true,"accuracy_less_than_deg":64}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} -{"id":"EXT-042","title":"DF quality 4","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/724","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":4,"accuracy_less_than_deg":32,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":4,"usable":true,"accuracy_less_than_deg":32}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} -{"id":"EXT-043","title":"DF quality 5","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/725","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":5,"accuracy_less_than_deg":16,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":5,"usable":true,"accuracy_less_than_deg":16}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} -{"id":"EXT-044","title":"DF quality 6","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/726","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":6,"accuracy_less_than_deg":8,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":6,"usable":true,"accuracy_less_than_deg":8}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} -{"id":"EXT-045","title":"DF quality 7","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/727","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":7,"accuracy_less_than_deg":4,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":7,"usable":true,"accuracy_less_than_deg":4}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} -{"id":"EXT-046","title":"DF quality 8","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/728","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":8,"accuracy_less_than_deg":2,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":8,"usable":true,"accuracy_less_than_deg":2}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} -{"id":"EXT-047","title":"DF quality 9","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/729","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":9,"accuracy_less_than_deg":1,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":9,"usable":true,"accuracy_less_than_deg":1}}}},"unmapped":["$.df_bearing.range_miles","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.usable":null,"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} +{"id":"EXT-038","title":"DF quality 0","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/720","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":0,"accuracy_less_than_deg":null,"usable":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":0}}}},"unmapped":["$.df_bearing.accuracy_less_than_deg","$.df_bearing.range_miles","$.df_bearing.usable","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-039","title":"DF quality 1","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/721","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":1,"accuracy_less_than_deg":240,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":1}}}},"unmapped":["$.df_bearing.accuracy_less_than_deg","$.df_bearing.range_miles","$.df_bearing.usable","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-040","title":"DF quality 2","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/722","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":2,"accuracy_less_than_deg":120,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":2}}}},"unmapped":["$.df_bearing.accuracy_less_than_deg","$.df_bearing.range_miles","$.df_bearing.usable","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-041","title":"DF quality 3","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/723","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":3,"accuracy_less_than_deg":64,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":3}}}},"unmapped":["$.df_bearing.accuracy_less_than_deg","$.df_bearing.range_miles","$.df_bearing.usable","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-042","title":"DF quality 4","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/724","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":4,"accuracy_less_than_deg":32,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":4}}}},"unmapped":["$.df_bearing.accuracy_less_than_deg","$.df_bearing.range_miles","$.df_bearing.usable","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-043","title":"DF quality 5","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/725","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":5,"accuracy_less_than_deg":16,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":5}}}},"unmapped":["$.df_bearing.accuracy_less_than_deg","$.df_bearing.range_miles","$.df_bearing.usable","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-044","title":"DF quality 6","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/726","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":6,"accuracy_less_than_deg":8,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":6}}}},"unmapped":["$.df_bearing.accuracy_less_than_deg","$.df_bearing.range_miles","$.df_bearing.usable","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-045","title":"DF quality 7","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/727","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":7,"accuracy_less_than_deg":4,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":7}}}},"unmapped":["$.df_bearing.accuracy_less_than_deg","$.df_bearing.range_miles","$.df_bearing.usable","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-046","title":"DF quality 8","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/728","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":8,"accuracy_less_than_deg":2,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":8}}}},"unmapped":["$.df_bearing.accuracy_less_than_deg","$.df_bearing.range_miles","$.df_bearing.usable","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"EXT-047","title":"DF quality 9","profile":"core-1.1","source":"APRS101 pp. 30, 34-35","packet":"N0CALL>APRS:=4903.50N/07201.75W\\088/036/270/729","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"df_bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"range_miles":4,"quality_code":9,"accuracy_less_than_deg":1,"usable":true}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"bearing":{"bearing_deg":270,"hits_code":7,"range_code":2,"quality_code":9}}}},"unmapped":["$.df_bearing.accuracy_less_than_deg","$.df_bearing.range_miles","$.df_bearing.usable","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} {"id":"EXT-048","title":"DF special NRQ 000","profile":"core-1.1","source":"APRS101 pp. 30, 34","packet":"N0CALL>APRS:!4903.50N/07201.75W\\000/000/270/000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"station_fixed":true,"speed_knots":0},"df_bearing":{"bearing_deg":270,"nrq_raw":"000","nrq_meaningful":false,"manual":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"speed_knots":0},"bearing":{"bearing_deg":270}}}},"unmapped":["$.df_bearing.manual","$.df_bearing.nrq_meaningful","$.df_bearing.nrq_raw","$.motion.station_fixed","$.symbol.overlay","$.symbol.table"]} -{"id":"EXT-049","title":"DF special NRQ 949","profile":"core-1.1","source":"APRS101 pp. 30, 34","packet":"N0CALL>APRS:!4903.50N/07201.75W\\000/000/270/949","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"station_fixed":true,"speed_knots":0},"df_bearing":{"bearing_deg":270,"nrq_raw":"949","nrq_meaningful":true,"manual":true,"range_miles":16,"accuracy_less_than_deg":1}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"speed_knots":0},"bearing":{"bearing_deg":270,"accuracy_less_than_deg":1}}}},"unmapped":["$.df_bearing.manual","$.df_bearing.nrq_meaningful","$.df_bearing.nrq_raw","$.df_bearing.range_miles","$.motion.station_fixed","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"DF usability/accuracy annotations are not decoded from quality codes.","allowed_actual":{"$.payload.extensions.bearing.accuracy_less_than_deg":null}}} +{"id":"EXT-049","title":"DF special NRQ 949","profile":"core-1.1","source":"APRS101 pp. 30, 34","packet":"N0CALL>APRS:!4903.50N/07201.75W\\000/000/270/949","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"\\","overlay":null},"comment":"","motion":{"station_fixed":true,"speed_knots":0},"df_bearing":{"bearing_deg":270,"nrq_raw":"949","nrq_meaningful":true,"manual":true,"range_miles":16,"accuracy_less_than_deg":1}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"\\"},"extensions":{"motion":{"speed_knots":0},"bearing":{"bearing_deg":270}}}},"unmapped":["$.df_bearing.accuracy_less_than_deg","$.df_bearing.manual","$.df_bearing.nrq_meaningful","$.df_bearing.nrq_raw","$.df_bearing.range_miles","$.motion.station_fixed","$.symbol.overlay","$.symbol.table"]} {"id":"EXT-050","title":"DF suffix without DF symbol","profile":"core-1.1","source":"APRS101 p. 34","packet":"N0CALL>APRS:!4903.50N/07201.75W>088/036/270/729","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"/270/729","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672}},"note":"Do not promote the comment suffix to a DF bearing without /\\.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"/270/729","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"course_deg":88,"speed_knots":36}}}},"unmapped":["$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} diff --git a/packages/aprs/tests/vectors/fap.jsonl b/packages/aprs/tests/vectors/fap.jsonl index 32015cd..a8ad7c2 100644 --- a/packages/aprs/tests/vectors/fap.jsonl +++ b/packages/aprs/tests/vectors/fap.jsonl @@ -27,13 +27,13 @@ {"id":"FAP-027","title":"TestBeacon/all_beacon_destinations/CQ","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>CQ:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"CQ","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"CQ","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"FAP-028","title":"TestBeacon/beacon_with_position_fallback","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L48","packet":"OH2RDU>BEACON:testing!6028.51N/02505.68E#PHG2360","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"BEACON","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"2360","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":4,"height_haat_ft":80,"gain_dbi":6,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"FAP-029","title":"TestCompressedNonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L15","packet":"OH2KKU-15>APRS,TCPIP*,qAC,FOURTH:!I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU-15","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.052010101699544,"Longitude":24.504507437140035,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"I","SymbolCode":"&","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":8.10520393696385,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"igate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU-15","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"igate testing","messaging":false,"latitude_deg":60.052010101699544,"longitude_deg":24.504507437140035,"symbol":{"table_id":"I","code":"&"},"extensions":{"range":{"miles":5.036340233637961}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"FAP-030","title":"TestCompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L107","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-030","title":"TestCompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L107","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} {"id":"FAP-031","title":"TestCompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L196","packet":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol ","outcome":"reject","source_expected":{"fap_header":{"source":"KJ4ERJ-AL","destination":"APWW05","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: comp_short: compressed position too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"original_wire":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol "},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} {"id":"FAP-032","title":"TestCompressedWeather","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L206","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg001t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":272},"weather":{"gust":{"value":0.44704,"unit":"m/s"},"temperature":{"value":12.222222222222221,"unit":"celsius"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":2.54,"unit":"mm"},"rain_since_midnight":{"value":2.54,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} {"id":"FAP-033","title":"TestCompressedWeatherSpaceGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L255","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":272},"weather":{"temperature":{"value":12.222222222222221,"unit":"celsius"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":2.54,"unit":"mm"},"rain_since_midnight":{"value":2.54,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"FAP-034","title":"TestDAOUncompressedHumanReadable","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L13","packet":"K0ELR-15>APOT02,WIDE1-1,WIDE2-1,qAo,K0ELR:/102033h4133.03NX09029.49Wv204/000!W33! 12.3V 21C/A=000665","outcome":"accept","source_expected":{"fap_header":{"source":"K0ELR-15","destination":"APOT02","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"K0ELR","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":41.55055,"Longitude":-90.49155,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"X","SymbolCode":"v","Speed":0,"Course":204,"Altitude":202.692,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"12.3V 21C","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"K0ELR-15","destination":"APOT02","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"K0ELR","repeated":false}]},"payload":{"type":"position","comment":"12.3V 21C","messaging":false,"latitude_deg":41.55055,"longitude_deg":-90.49155,"ambiguity":0,"symbol":{"table_id":"X","code":"v"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":204},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":665.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-035","title":"TestDAOCompressedBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L53","packet":"OH7LZB-9>APZMDR,WIDE2-2,qAo,OH2RCH:!/0(yiTc5y>{2O http://aprs.fi/!w11!","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APZMDR","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2RCH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.15273087861335,"Longitude":24.662220910798077,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":11.909203712770884,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APZMDR","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2RCH","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.15273087861335,"longitude_deg":24.662220910798077,"symbol":{"table_id":"/","code":">"},"extensions":{"range":{"miles":7.400036109601728}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"FAP-036","title":"TestDAOMicEBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L87","packet":"OH2JCQ-9>VP1U88,TRACE2-2,qAR,OH2RDK-5:'5'9\"^Rj/]\"4-}Foo !w66!Bar","outcome":"accept","source_expected":{"fap_header":{"source":"OH2JCQ-9","destination":"VP1U88","digipeaters":[{"Call":"TRACE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH2RDK-5","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":60.26470512820512,"Longitude":25.18820512820513,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"j","Speed":122.232,"Course":254,"Altitude":22,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Foo Bar","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2JCQ-9","destination":"VP1U88","path":[{"address":"TRACE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"OH2RDK-5","repeated":false}]},"payload":{"type":"position","comment":"]Foo Bar","latitude_deg":60.26470512820512,"longitude_deg":25.18820512820513,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"extensions":{"motion":{"speed_knots":66.0,"course_deg":254}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-034","title":"TestDAOUncompressedHumanReadable","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L13","packet":"K0ELR-15>APOT02,WIDE1-1,WIDE2-1,qAo,K0ELR:/102033h4133.03NX09029.49Wv204/000!W33! 12.3V 21C/A=000665","outcome":"accept","source_expected":{"fap_header":{"source":"K0ELR-15","destination":"APOT02","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"K0ELR","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":41.55055,"Longitude":-90.49155,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"X","SymbolCode":"v","Speed":0,"Course":204,"Altitude":202.692,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"12.3V 21C","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"K0ELR-15","destination":"APOT02","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"K0ELR","repeated":false}]},"payload":{"type":"position","comment":"12.3V 21C","messaging":false,"latitude_deg":41.55055,"longitude_deg":-90.49155,"ambiguity":0,"symbol":{"table_id":"X","code":"v"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":204},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":665.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-035","title":"TestDAOCompressedBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L53","packet":"OH7LZB-9>APZMDR,WIDE2-2,qAo,OH2RCH:!/0(yiTc5y>{2O http://aprs.fi/!w11!","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APZMDR","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2RCH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.15273087861335,"Longitude":24.662220910798077,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":11.909203712770884,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APZMDR","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2RCH","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.15273087861335,"longitude_deg":24.662220910798077,"symbol":{"table_id":"/","code":">"},"extensions":{"range":{"miles":7.400036109601728}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-036","title":"TestDAOMicEBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L87","packet":"OH2JCQ-9>VP1U88,TRACE2-2,qAR,OH2RDK-5:'5'9\"^Rj/]\"4-}Foo !w66!Bar","outcome":"accept","source_expected":{"fap_header":{"source":"OH2JCQ-9","destination":"VP1U88","digipeaters":[{"Call":"TRACE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH2RDK-5","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":60.26470512820512,"Longitude":25.18820512820513,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"j","Speed":122.232,"Course":254,"Altitude":22,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Foo Bar","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH2JCQ-9","destination":"VP1U88","path":[{"address":"TRACE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"OH2RDK-5","repeated":false}]},"payload":{"type":"position","comment":"]Foo Bar","latitude_deg":60.26470512820512,"longitude_deg":25.18820512820513,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"extensions":{"motion":{"speed_knots":66.0,"course_deg":254}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} {"id":"FAP-037","title":"TestParseStatus","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L12","packet":"OH7LZB>APRS:>Testing status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"Testing status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"Testing status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-038","title":"TestParseNoBody","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L27","packet":"OH7LZB>APRS","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: packet_no_body: no packet body after header"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-039","title":"TestParseNoGT","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L35","packet":"OH7LZB:body","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_nogt: no '>' in header"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -61,9 +61,9 @@ {"id":"FAP-061","title":"TestItemErrors/no_name_terminator","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L207","packet":"N0CALL-1>APRS:)ABCDEFGHIJ4903.50N/07201.75W>","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: item_inv: item name terminator not found"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:)ABCDEFGHIJ4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"FAP-062","title":"TestBinaryCleanASCII","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB : !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz}{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz}","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz}","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-063","title":"TestBinaryCleanSet1","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB : !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ab{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ab","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ab","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-064","title":"TestBinaryCleanSet2","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :cdefghijklmnopqrstuvwxyz}\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"cdefghijklmnopqrstuvwxyz}\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"cdefghijklmnopqrstuvwxyz}\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-065","title":"TestBinaryCleanSet3","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-066","title":"TestBinaryCleanSet4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-064","title":"TestBinaryCleanSet2","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :cdefghijklmnopqrstuvwxyz}\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"cdefghijklmnopqrstuvwxyz}\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"cdefghijklmnopqrstuvwxyz}\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-065","title":"TestBinaryCleanSet3","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-066","title":"TestBinaryCleanSet4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-067","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: {42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: ","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: ","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-068","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: !{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: !","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: !","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-069","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \"{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \"","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \"","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} @@ -159,133 +159,133 @@ {"id":"FAP-159","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: {42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: ","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: ","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-160","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: }{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: }","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: }","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-161","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: {42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: ","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: ","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-162","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0080{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0080","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0080","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-163","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0081{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0081","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0081","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-164","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0082{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0082","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0082","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-165","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0083{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0083","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0083","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-166","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0084{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0084","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0084","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-167","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0085{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0085","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0085","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-168","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0086{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0086","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0086","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-169","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0087{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0087","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0087","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-170","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0088{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0088","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0088","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-171","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0089{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0089","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0089","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-172","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008a{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008a","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008a","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-173","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008b{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008b","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008b","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-174","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008c{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008c","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008c","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-175","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008d{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008d","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008d","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-176","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008e{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008e","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008e","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-177","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008f{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008f","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008f","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-178","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0090{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0090","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0090","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-179","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0091{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0091","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0091","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-180","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0092{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0092","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0092","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-181","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0093{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0093","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0093","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-182","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0094{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0094","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0094","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-183","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0095{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0095","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0095","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-184","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0096{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0096","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0096","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-185","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0097{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0097","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0097","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-186","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0098{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0098","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0098","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-187","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0099{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0099","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0099","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-188","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009a{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009a","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009a","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-189","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009b{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009b","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009b","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-190","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009c{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009c","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009c","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-191","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009d{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009d","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009d","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-192","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009e{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009e","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009e","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-193","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009f{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009f","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009f","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-194","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-195","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-196","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-197","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-198","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-199","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-200","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-201","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-202","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-203","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-204","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00aa{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00aa","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00aa","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-205","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ab{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ab","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ab","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-206","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ac{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ac","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ac","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-207","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ad{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ad","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ad","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-208","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ae{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ae","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ae","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-209","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00af{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00af","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00af","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-210","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-211","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-212","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-213","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-214","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-215","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-216","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-217","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-218","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-219","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-220","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ba{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ba","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ba","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-221","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00bb{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00bb","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00bb","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-222","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00bc{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00bc","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00bc","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-223","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00bd{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00bd","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00bd","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-224","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00be{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00be","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00be","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-225","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00bf{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00bf","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00bf","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-226","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-227","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-228","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-229","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-230","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-231","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-232","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-233","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-234","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-235","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-236","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ca{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ca","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ca","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-237","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00cb{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00cb","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00cb","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-238","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00cc{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00cc","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00cc","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-239","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00cd{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00cd","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00cd","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-240","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ce{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ce","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ce","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-241","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00cf{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00cf","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00cf","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-242","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-243","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-244","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-245","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-246","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-247","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-248","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-249","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-250","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-251","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-252","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00da{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00da","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00da","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-253","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00db{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00db","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00db","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-254","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00dc{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00dc","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00dc","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-255","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00dd{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00dd","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00dd","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-256","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00de{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00de","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00de","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-257","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00df{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00df","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00df","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-258","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-259","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-260","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-261","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-262","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-263","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-264","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-265","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-266","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-267","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-268","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ea{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ea","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ea","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-269","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00eb{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00eb","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00eb","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-270","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ec{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ec","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ec","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-271","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ed{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ed","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ed","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-272","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ee{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ee","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ee","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-273","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ef{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ef","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ef","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-274","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-275","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-276","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-277","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-278","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-279","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-280","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-281","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-282","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-283","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-284","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fa{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fa","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fa","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-285","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fb{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fb","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fb","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-286","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fc{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fc","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fc","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-287","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fd{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fd","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fd","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-288","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fe{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fe","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fe","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-162","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0080{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0080","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0080","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-163","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0081{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0081","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0081","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-164","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0082{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0082","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0082","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-165","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0083{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0083","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0083","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-166","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0084{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0084","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0084","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-167","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0085{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0085","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0085","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-168","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0086{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0086","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0086","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-169","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0087{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0087","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0087","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-170","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0088{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0088","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0088","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-171","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0089{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0089","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0089","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-172","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008a{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008a","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008a","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-173","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008b{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008b","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008b","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-174","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008c{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008c","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008c","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-175","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008d{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008d","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008d","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-176","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008e{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008e","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008e","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-177","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u008f{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u008f","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u008f","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-178","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0090{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0090","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0090","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-179","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0091{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0091","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0091","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-180","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0092{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0092","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0092","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-181","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0093{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0093","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0093","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-182","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0094{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0094","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0094","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-183","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0095{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0095","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0095","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-184","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0096{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0096","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0096","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-185","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0097{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0097","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0097","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-186","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0098{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0098","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0098","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-187","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u0099{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u0099","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u0099","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-188","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009a{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009a","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009a","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-189","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009b{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009b","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009b","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-190","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009c{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009c","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009c","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-191","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009d{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009d","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009d","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-192","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009e{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009e","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009e","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-193","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u009f{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u009f","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u009f","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-194","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-195","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-196","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-197","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-198","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-199","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-200","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-201","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-202","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-203","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00a9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00a9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00a9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-204","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00aa{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00aa","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00aa","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-205","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ab{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ab","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ab","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-206","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ac{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ac","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ac","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-207","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ad{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ad","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ad","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-208","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ae{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ae","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ae","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-209","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00af{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00af","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00af","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-210","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-211","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-212","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-213","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-214","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-215","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-216","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-217","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-218","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-219","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00b9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00b9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00b9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-220","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ba{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ba","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ba","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-221","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00bb{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00bb","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00bb","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-222","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00bc{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00bc","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00bc","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-223","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00bd{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00bd","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00bd","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-224","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00be{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00be","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00be","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-225","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00bf{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00bf","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00bf","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-226","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-227","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-228","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-229","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-230","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-231","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-232","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-233","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-234","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-235","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00c9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00c9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00c9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-236","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ca{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ca","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ca","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-237","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00cb{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00cb","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00cb","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-238","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00cc{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00cc","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00cc","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-239","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00cd{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00cd","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00cd","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-240","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ce{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ce","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ce","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-241","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00cf{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00cf","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00cf","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-242","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-243","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-244","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-245","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-246","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-247","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-248","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-249","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-250","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-251","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00d9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00d9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00d9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-252","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00da{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00da","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00da","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-253","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00db{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00db","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00db","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-254","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00dc{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00dc","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00dc","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-255","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00dd{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00dd","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00dd","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-256","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00de{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00de","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00de","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-257","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00df{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00df","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00df","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-258","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-259","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-260","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-261","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-262","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-263","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-264","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-265","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-266","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-267","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00e9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00e9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00e9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-268","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ea{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ea","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ea","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-269","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00eb{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00eb","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00eb","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-270","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ec{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ec","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ec","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-271","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ed{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ed","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ed","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-272","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ee{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ee","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ee","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-273","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00ef{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00ef","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00ef","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-274","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f0{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f0","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f0","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-275","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f1{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f1","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f1","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-276","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f2{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f2","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f2","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-277","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-278","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f4{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f4","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f4","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-279","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-280","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f6{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f6","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f6","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-281","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f7{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f7","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f7","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-282","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f8{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f8","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f8","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-283","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00f9{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00f9","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00f9","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-284","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fa{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fa","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fa","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-285","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fb{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fb","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fb","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-286","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fc{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fc","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fc","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-287","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fd{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fd","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fd","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-288","title":"TestBinaryCleanIndividualChars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :char: \u00fe{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"char: \u00fe","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"char: \u00fe","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-289","title":"TestMessageNormal/id_1","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L17","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{1","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"1","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"1"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-290","title":"TestMessageNormal/id_42","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L17","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-291","title":"TestMessageNormal/id_10512","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L17","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::N0CALL :Testing, 1 2 3{10512","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Testing, 1 2 3","ID":"10512","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"N0CALL","text":"Testing, 1 2 3","message_id":"10512"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} @@ -412,28 +412,28 @@ {"id":"FAP-412","title":"TestFallbackBadCompressedTableChar","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L134","packet":"OH2RDP-1>BEACON-15:X!zI0-X;T_Wv&{-A","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!zI0-X;T_Wv&{-A"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"FAP-413","title":"TestParseCapabilities","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/status_test.go#L14","packet":"OH7LZB>APRS:APU25N,WIDE2-2,qAR,LANSNG:>151811z>>Nashville,TN>>Toronto,ON","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":">>Nashville,TN>>Toronto,ON","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"status","text":">>Nashville,TN>>Toronto,ON"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-415","title":"TestCommentTelemetry/uncompressed_PHG_4ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03NN02739.63E#PHG26303/Siilinjarvi|\"p%T'.agff|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"N","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"26303","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,6348,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Siilinjarvi","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"Siilinjarvi","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"N","code":"#"},"extensions":{"telemetry":{"sequence":170,"analog":[415,559,5894,6348,null]},"phg":{"power_w":4,"height_haat_ft":640,"gain_dbi":3,"directivity_deg":null,"rate_per_hour":3}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} -{"id":"FAP-416","title":"TestCommentTelemetry/compressed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!/0%3RTh<6>dS_http://aprs.fi/|\"p%T'.ag|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.2347017530964,"Longitude":24.882575618361585,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":85.0097863745044,"Course":268,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.2347017530964,"longitude_deg":24.882575618361585,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":45.90161251323131,"course_deg":268},"telemetry":{"sequence":170,"analog":[415,559,5894,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"FAP-417","title":"TestCommentTelemetry/uncompressed_course_speed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL-14>APRS,qAR,IGATE:!6304.03N/02739.63E>036/010test |(7Cq?3<\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":659,"Vals":[3174,2748,2458,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"test","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"test","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":659,"analog":[3174,2748,2458,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} -{"id":"FAP-418","title":"TestCommentTelemetry/uncompressed_altitude_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} -{"id":"FAP-419","title":"TestCommentTelemetry/compressed_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"FAP-420","title":"TestCommentTelemetry/uncompressed_bits_LSB_first","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>|ss1122334455!\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,1840],"Bits":"10000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,1840],"digital":[true,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} -{"id":"FAP-421","title":"TestCommentTelemetry/pipe_in_comment_text","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>a|b |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"a|b","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"a|b","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":0,"analog":[0,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} -{"id":"FAP-422","title":"TestCommentTelemetry/uncompressed_telemetry_then_DAO","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>comment|\"p%T|!W12!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.06718333333333,"Longitude":27.660533333333333,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"comment","messaging":false,"latitude_deg":63.06718333333333,"longitude_deg":27.660533333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":170,"analog":[415,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-423","title":"TestCommentTelemetryInvalid/too_long","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!!!!!!!!!!!!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!!!!!!!!!!!!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-424","title":"TestCommentTelemetryInvalid/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-425","title":"TestCommentTelemetryInvalid/odd_length","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-426","title":"TestCommentTelemetryInvalid/invalid_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!}|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!}|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!}|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-427","title":"TestCommentTelemetryInvalid/single_pipe","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-428","title":"TestMicEBase91Telemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-429","title":"TestMicEBase91Telemetry1Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L50","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-430","title":"TestMicEBase91TelemetryHarder","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L84","packet":"N6BG-1>S6QTUX:`+,^l!cR/'\";z}||ss11223344bb!\"|!w>f!|3","outcome":"accept","source_expected":{"fap_header":{"source":"N6BG-1","destination":"S6QTUX","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":36.24305311355312,"Longitude":-115.27779304029303,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"R","Speed":0,"Course":171,"Altitude":736,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,5980],"Bits":"10000000"},"Capabilities":null,"MBits":"101","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"'||3","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N6BG-1","destination":"S6QTUX","path":[]},"payload":{"type":"position","comment":"'||3","latitude_deg":36.24305311355312,"longitude_deg":-115.27779304029303,"ambiguity":0,"symbol":{"table_id":"/","code":"R"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":171},"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,5980],"digital":[true,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-431","title":"TestMicEBase91TelemetryDAOConfusing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L102","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!wEU!![S|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":86,"Vals":[3328,0,5328,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":86,"analog":[3328,0,5328,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-415","title":"TestCommentTelemetry/uncompressed_PHG_4ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03NN02739.63E#PHG26303/Siilinjarvi|\"p%T'.agff|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"N","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"26303","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,6348,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Siilinjarvi","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"Siilinjarvi","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"N","code":"#"},"extensions":{"telemetry":{"sequence":170,"analog":[415,559,5894,6348,null]},"phg":{"power_w":4,"height_haat_ft":640,"gain_dbi":3,"directivity_deg":null,"rate_per_hour":3}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} +{"id":"FAP-416","title":"TestCommentTelemetry/compressed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!/0%3RTh<6>dS_http://aprs.fi/|\"p%T'.ag|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.2347017530964,"Longitude":24.882575618361585,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":85.0097863745044,"Course":268,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.2347017530964,"longitude_deg":24.882575618361585,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":45.90161251323131,"course_deg":268},"telemetry":{"sequence":170,"analog":[415,559,5894,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-417","title":"TestCommentTelemetry/uncompressed_course_speed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL-14>APRS,qAR,IGATE:!6304.03N/02739.63E>036/010test |(7Cq?3<\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":659,"Vals":[3174,2748,2458,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"test","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"test","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":659,"analog":[3174,2748,2458,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} +{"id":"FAP-418","title":"TestCommentTelemetry/uncompressed_altitude_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} +{"id":"FAP-419","title":"TestCommentTelemetry/compressed_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-420","title":"TestCommentTelemetry/uncompressed_bits_LSB_first","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>|ss1122334455!\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,1840],"Bits":"10000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,1840],"digital":[true,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} +{"id":"FAP-421","title":"TestCommentTelemetry/pipe_in_comment_text","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>a|b |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"a|b","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"a|b","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":0,"analog":[0,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} +{"id":"FAP-422","title":"TestCommentTelemetry/uncompressed_telemetry_then_DAO","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>comment|\"p%T|!W12!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.06718333333333,"Longitude":27.660533333333333,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"comment","messaging":false,"latitude_deg":63.06718333333333,"longitude_deg":27.660533333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":170,"analog":[415,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-423","title":"TestCommentTelemetryInvalid/too_long","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!!!!!!!!!!!!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!!!!!!!!!!!!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-424","title":"TestCommentTelemetryInvalid/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-425","title":"TestCommentTelemetryInvalid/odd_length","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-426","title":"TestCommentTelemetryInvalid/invalid_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!}|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!}|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!}|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-427","title":"TestCommentTelemetryInvalid/single_pipe","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-428","title":"TestMicEBase91Telemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-429","title":"TestMicEBase91Telemetry1Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L50","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-430","title":"TestMicEBase91TelemetryHarder","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L84","packet":"N6BG-1>S6QTUX:`+,^l!cR/'\";z}||ss11223344bb!\"|!w>f!|3","outcome":"accept","source_expected":{"fap_header":{"source":"N6BG-1","destination":"S6QTUX","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":36.24305311355312,"Longitude":-115.27779304029303,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"R","Speed":0,"Course":171,"Altitude":736,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,5980],"Bits":"10000000"},"Capabilities":null,"MBits":"101","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"'||3","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N6BG-1","destination":"S6QTUX","path":[]},"payload":{"type":"position","comment":"'||3","latitude_deg":36.24305311355312,"longitude_deg":-115.27779304029303,"ambiguity":0,"symbol":{"table_id":"/","code":"R"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":171},"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,5980],"digital":[true,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-431","title":"TestMicEBase91TelemetryDAOConfusing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L102","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!wEU!![S|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":86,"Vals":[3328,0,5328,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":86,"analog":[3328,0,5328,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} {"id":"FAP-432","title":"TestTelemetryClassic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L12","packet":"SRCCALL>APRS:T#324,000,038,255,.12,50.12,01000001","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":324,"Vals":[0,38,255,0.12,50.12],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":324,"analog":[0,38,255,0.12,50.12],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-433","title":"TestTelemetryRelaxed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L43","packet":"SRCCALL>APRS:T#1,-1,2147483647,-2147483648,0.000001,-0.0000001,01000001 comment","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[-1,2147483647,-2147483648,1e-06,-1e-07],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[-1,2147483647,-2147483648,1e-06,-1e-07],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-434","title":"TestTelemetryShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L71","packet":"SRCCALL>APRS:T#001,42","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[42,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[42,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-435","title":"TestTelemetryUndefinedMiddle","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L101","packet":"SRCCALL>APRS:T#1,1,,3,,5","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[1,null,3,null,5],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[1,null,3,null,5]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-436","title":"TestTelemetryPartiallyCorrect","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L140","packet":"SRCCALL>APRS:T#1,1,f,3","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[1,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[1,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-433","title":"TestTelemetryRelaxed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L43","packet":"SRCCALL>APRS:T#1,-1,2147483647,-2147483648,0.000001,-0.0000001,01000001 comment","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[-1,2147483647,-2147483648,1e-06,-1e-07],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[-1,2147483647,-2147483648,1e-06,-1e-07],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-434","title":"TestTelemetryShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L71","packet":"SRCCALL>APRS:T#001,42","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[42,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[42,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-435","title":"TestTelemetryUndefinedMiddle","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L101","packet":"SRCCALL>APRS:T#1,1,,3,,5","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[1,null,3,null,5],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[1,null,3,null,5]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-436","title":"TestTelemetryPartiallyCorrect","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L140","packet":"SRCCALL>APRS:T#1,1,f,3","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[1,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[1,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"FAP-437","title":"TestTelemetryInvalidDash","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L239","packet":"SRCCALL>APRS:T#1,1,-,3","outcome":"reject","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: tlm_inv: invalid telemetry value: -"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRCCALL>APRS:T#1,1,-,3"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"FAP-438","title":"TestTelemetryInvalidTrailingDot","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L250","packet":"SRCCALL>APRS:T#1,1,-1.,3","outcome":"reject","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: tlm_inv: invalid telemetry value: -1."},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRCCALL>APRS:T#1,1,-1.,3"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"FAP-439","title":"TestTelemetryParameterMessage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L264","packet":"SRCCALL>APRS::N0CALL-10:PARM.Vin,Rx1h,Dg1h,Eff1h,EffTo,O1,O2,O3,O4,I1,I2,I3,I4","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL-10","Text":"PARM.Vin,Rx1h,Dg1h,Eff1h,EffTo,O1,O2,O3,O4,I1,I2,I3,I4","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-10","definition":{"type":"telemetry_parameters","channels":["Vin","Rx1h","Dg1h","Eff1h","EffTo","O1","O2","O3","O4","I1","I2","I3","I4"]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} @@ -445,16 +445,16 @@ {"id":"FAP-445","title":"TestRegularMessageNotTelemetryMessage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L308","packet":"SRCCALL>APRS::N0CALL :Hello world","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Hello world","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Hello world","message_id":null}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-446","title":"TestTimestampRawDHMzUTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L19","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@151811z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"151811","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" {UIV32N}"}}} {"id":"FAP-447","title":"TestTimestampDecodedDHMzUTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L35","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@151811z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" {UIV32N}"}}} -{"id":"FAP-448","title":"TestTimestampRawHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L50","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/055816h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"055816","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-449","title":"TestTimestampDecodedHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L66","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/181144h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-450","title":"TestTimestampRawDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L81","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/060642/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"060642","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-451","title":"TestTimestampDecodedDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L98","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/152011/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-448","title":"TestTimestampRawHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L50","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/055816h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"055816","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-449","title":"TestTimestampDecodedHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L66","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/181144h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-450","title":"TestTimestampRawDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L81","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/060642/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"060642","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-451","title":"TestTimestampDecodedDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L98","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/152011/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} {"id":"FAP-452","title":"TestTimestampFutureRollback/DDHHMMz_UTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@162359z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" {UIV32N}"}}} -{"id":"FAP-453","title":"TestTimestampFutureRollback/DDHHMM/_local","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/162359/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-453","title":"TestTimestampFutureRollback/DDHHMM/_local","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/162359/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} {"id":"FAP-454","title":"TestTimestampInvalidLocation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L224","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@000000z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.type":"malformed","$.header":{"missing":true},"$.payload":{"missing":true}}}} {"id":"FAP-455","title":"TestTimestampInvalidObject","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L247","packet":"SRC>APRS,TCPIP*:;TestObj *000000z4903.50N/07201.75W-Test","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"TestObj ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Test","Warnings":[{"Code":"timestamp_inv","Msg":"invalid object timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRC","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"object","comment":"Test","name":"TestObj ","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"FAP-456","title":"TestTimestampInvalidStatus","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L270","packet":"SRC>APRS,TCPIP*:>000000zStatus text here","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"Status text here","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRC","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"status","text":"Status text here"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.type":"malformed","$.header":{"missing":true},"$.payload":{"missing":true}}}} -{"id":"FAP-457","title":"TestUncompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_moving_test.go#L16","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} +{"id":"FAP-457","title":"TestUncompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_moving_test.go#L16","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} {"id":"FAP-458","title":"TestUncompressedNortheast","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L14","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"/RELAY,WIDE, OH2AP Jarvenpaa"}}} {"id":"FAP-459","title":"TestUncompressedSouthwest","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L64","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51S/02505.68W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-460","title":"TestUncompressedAmbiguity3","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L82","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!602 . S/0250 . W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.416666666666664,"Longitude":-25.083333333333332,"PosAmbiguity":3,"PosResolution":18520,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.416666666666664,"longitude_deg":-25.083333333333332,"ambiguity":3,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} @@ -508,9 +508,9 @@ {"id":"FAP-508","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L55","packet":"N0CALL>APRS:!5221. N/01406. E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.358333333333334,"Longitude":14.108333333333333,"PosAmbiguity":2,"PosResolution":1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.358333333333334,"longitude_deg":14.108333333333333,"ambiguity":2,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} {"id":"FAP-509","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L60","packet":"N0CALL>APRS:!522 . N/0140 . E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.416666666666664,"Longitude":14.083333333333334,"PosAmbiguity":3,"PosResolution":18520,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.416666666666664,"longitude_deg":14.083333333333334,"ambiguity":3,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} {"id":"FAP-510","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L65","packet":"N0CALL>APRS:!52 . N/014 . E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.5,"Longitude":14.5,"PosAmbiguity":4,"PosResolution":111120,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.5,"longitude_deg":14.5,"ambiguity":4,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"FAP-511","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L70","packet":"N0CALL>APRS:!3909.22N/08437.32W>!wjM!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":39.153800366300366,"Longitude":-84.62208058608059,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":39.153800366300366,"longitude_deg":-84.62208058608059,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-512","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L75","packet":"N0CALL>APRS:!3959.99N/08459.99W>!w{{!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":39.99999816849817,"Longitude":-84.99999816849817,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":39.99999816849817,"longitude_deg":-84.99999816849817,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-513","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L81","packet":"N0CALL>APRS:!4822.38N/01542.88E>321/034/A=000633Comment blah!wr^!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":48.37314835164835,"Longitude":15.714778388278388,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":62.968,"Course":321,"Altitude":192.9384,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"Comment blah","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Comment blah","messaging":false,"latitude_deg":48.37314835164835,"longitude_deg":15.714778388278388,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":34.0,"course_deg":321},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":633.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-511","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L70","packet":"N0CALL>APRS:!3909.22N/08437.32W>!wjM!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":39.153800366300366,"Longitude":-84.62208058608059,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":39.153800366300366,"longitude_deg":-84.62208058608059,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-512","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L75","packet":"N0CALL>APRS:!3959.99N/08459.99W>!w{{!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":39.99999816849817,"Longitude":-84.99999816849817,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":39.99999816849817,"longitude_deg":-84.99999816849817,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-513","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L81","packet":"N0CALL>APRS:!4822.38N/01542.88E>321/034/A=000633Comment blah!wr^!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":48.37314835164835,"Longitude":15.714778388278388,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":62.968,"Course":321,"Altitude":192.9384,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"Comment blah","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Comment blah","messaging":false,"latitude_deg":48.37314835164835,"longitude_deg":15.714778388278388,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":34.0,"course_deg":321},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":633.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} {"id":"FAP-514","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L87","packet":"N0CALL>APRS:/123045h6304.03N/02739.63E#","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"123045","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-515","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L93","packet":"N0CALL>APRS:/000000h5221.84N/01406.27E>353/045/A=000314","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.364,"Longitude":14.1045,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":83.34,"Course":353,"Altitude":95.7072,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"000000","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.364,"longitude_deg":14.1045,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":45.0,"course_deg":353},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":314.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-516","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L99","packet":"N0CALL>APRS:=6304.03N/02739.63E#","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} diff --git a/packages/aprs/tests/vectors/mic.jsonl b/packages/aprs/tests/vectors/mic.jsonl index 8bd2645..30198ad 100644 --- a/packages/aprs/tests/vectors/mic.jsonl +++ b/packages/aprs/tests/vectors/mic.jsonl @@ -243,21 +243,21 @@ {"id":"MIC-243","title":"DTI / equipment '`>'","profile":"core-1.1","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} {"id":"MIC-244","title":"DTI / equipment '\\x1c'","profile":"historical-1.0","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:\u001c(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} {"id":"MIC-245","title":"DTI / equipment '\\x1d'","profile":"historical-1.0","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:\u001d(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"old","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"old","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-246","title":"Altitude -10000 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-247","title":"Altitude 0 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-248","title":"Altitude 61 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-249","title":"Altitude 10000 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-250","title":"Altitude 743570 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-251","title":"Altitude -10000 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-252","title":"Altitude 0 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-253","title":"Altitude 61 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-254","title":"Altitude 10000 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-255","title":"Altitude 743570 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-256","title":"Altitude -10000 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-257","title":"Altitude 0 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-258","title":"Altitude 61 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-259","title":"Altitude 10000 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-260","title":"Altitude 743570 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic-e-base91"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-246","title":"Altitude -10000 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-247","title":"Altitude 0 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-248","title":"Altitude 61 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-249","title":"Altitude 10000 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-250","title":"Altitude 743570 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-251","title":"Altitude -10000 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-252","title":"Altitude 0 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-253","title":"Altitude 61 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-254","title":"Altitude 10000 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-255","title":"Altitude 743570 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-256","title":"Altitude -10000 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-257","title":"Altitude 0 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-258","title":"Altitude 61 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-259","title":"Altitude 10000 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-260","title":"Altitude 743570 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} {"id":"MIC-261","title":"Telemetry flag '`'","profile":"core-1.1","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/`1020","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[16,null,32,null,null],"encoding":"mic-e-hex"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[16,null,32,null,null],"encoding":"mic_e_hex"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} {"id":"MIC-262","title":"Telemetry flag \"'\"","profile":"core-1.1","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/'102030FFff","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[16,32,48,255,255],"encoding":"mic-e-hex"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[16,32,48,255,255],"encoding":"mic_e_hex"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} {"id":"MIC-263","title":"Telemetry flag '\\x1d'","profile":"historical-1.0","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\u001d\u0000\u0001\u007f\u0080\u00ff","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[0,1,127,128,255],"encoding":"mic-e-binary"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[0,1,127,128,255],"encoding":"mic_e_binary"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} diff --git a/packages/aprs/tests/vectors/qry.jsonl b/packages/aprs/tests/vectors/qry.jsonl index 37cad34..702984f 100644 --- a/packages/aprs/tests/vectors/qry.jsonl +++ b/packages/aprs/tests/vectors/qry.jsonl @@ -11,7 +11,7 @@ {"id":"QRY-011","title":"Directed APRSP","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSP","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSP","message_id":null,"ack_requested":false},"query":{"type":"APRSP","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSP","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} {"id":"QRY-012","title":"Directed APRSS","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSS","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSS","message_id":null,"ack_requested":false},"query":{"type":"APRSS","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSS","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} {"id":"QRY-013","title":"Directed APRST","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRST","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRST","message_id":null,"ack_requested":false},"query":{"type":"APRST","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRST","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"QRY-014","title":"Directed PING?","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?PING?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?PING?","message_id":null,"ack_requested":false},"query":{"type":"PING?","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"PING?","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"QRY-014","title":"Directed PING?","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?PING?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?PING?","message_id":null,"ack_requested":false},"query":{"type":"PING","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"PING","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} {"id":"QRY-015","title":"Query response Directs= W1AW W2ABC","profile":"core-1.1","source":"APRS101 p. 79","packet":"N0CALL>APRS::W1AW :Directs= W1AW W2ABC","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"Directs= W1AW W2ABC","message_id":null,"ack_requested":false}},"note":"Colons and greater-than signs inside the message do not begin a new outer envelope.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"Directs= W1AW W2ABC","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} {"id":"QRY-016","title":"Query response N0CALL HEARD: 1 3 2 . . 4 5 6","profile":"core-1.1","source":"APRS101 p. 79","packet":"N0CALL>APRS::W1AW :N0CALL HEARD: 1 3 2 . . 4 5 6","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N0CALL HEARD: 1 3 2 . . 4 5 6","message_id":null,"ack_requested":false}},"note":"Colons and greater-than signs inside the message do not begin a new outer envelope.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"N0CALL HEARD: 1 3 2 . . 4 5 6","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} {"id":"QRY-017","title":"Query response N0CALL>APRS,DIGI1,WIDE*:","profile":"core-1.1","source":"APRS101 p. 79","packet":"N0CALL>APRS::W1AW :N0CALL>APRS,DIGI1,WIDE*:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N0CALL>APRS,DIGI1,WIDE*:","message_id":null,"ack_requested":false}},"note":"Colons and greater-than signs inside the message do not begin a new outer envelope.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"N0CALL>APRS,DIGI1,WIDE*:","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} diff --git a/packages/aprs/tests/vectors/wx.jsonl b/packages/aprs/tests/vectors/wx.jsonl index df98d7b..22e1122 100644 --- a/packages/aprs/tests/vectors/wx.jsonl +++ b/packages/aprs/tests/vectors/wx.jsonl @@ -1,8 +1,8 @@ -{"id":"WX-001","title":"Complete positionless report","profile":"core-1.1","source":"APRS101 pp. 63-64","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b09900WRSW","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"software_code":"W","device_code":"RSW"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"software_code":"W","device_code":"RSW","wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-002","title":"Complete weather DTI !","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:!4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-003","title":"Complete weather DTI =","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:=4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-004","title":"Complete weather DTI /","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:/092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-005","title":"Complete weather DTI @","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-001","title":"Complete positionless report","profile":"core-1.1","source":"APRS101 pp. 63-64","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b09900WRSW","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"software_code":"W","device_code":"RSW"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"software_code":"W","device_code":"RSW","wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-002","title":"Complete weather DTI !","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:!4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-003","title":"Complete weather DTI =","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:=4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-004","title":"Complete weather DTI /","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:/092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"WX-005","title":"Complete weather DTI @","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} {"id":"WX-006","title":"Temperature -99","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t-99","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":-99,"temperature_c":-72.777777777778}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":-99,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"WX-007","title":"Temperature -07","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t-07","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":-7,"temperature_c":-21.666666666667}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":-7,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"WX-008","title":"Temperature 000","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":0,"temperature_c":-17.777777777778}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":0,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} @@ -14,24 +14,24 @@ {"id":"WX-014","title":"Humidity '99'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h99","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":99}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":99,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"WX-015","title":"Humidity '..'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h..","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"WX-016","title":"Humidity ' '","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-017","title":"Missing c via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c...s004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":null,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-018","title":"Missing c via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c s004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":null,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-019","title":"Missing s via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s...g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":null,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-020","title":"Missing s via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":null,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-021","title":"Missing g via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g...t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":null,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-022","title":"Missing g via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":null,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-023","title":"Missing t via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t...r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":null,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-024","title":"Missing t via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":null,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-025","title":"Missing r via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r...p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":null,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-026","title":"Missing r via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":null,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-027","title":"Missing p via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p...P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":null,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-028","title":"Missing p via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":null,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-029","title":"Missing P via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P...h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":null,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-030","title":"Missing P via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":null,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-031","title":"Missing h via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h..b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":null,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-032","title":"Missing h via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":null,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-033","title":"Missing b via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b.....","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":null}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-034","title":"Missing b via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":null}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-017","title":"Missing c via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c...s004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":null,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-018","title":"Missing c via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c s004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":null,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-019","title":"Missing s via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s...g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":null,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-020","title":"Missing s via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":null,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-021","title":"Missing g via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g...t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":null,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-022","title":"Missing g via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":null,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-023","title":"Missing t via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t...r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":null,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-024","title":"Missing t via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":null,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-025","title":"Missing r via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r...p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":null,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":null,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-026","title":"Missing r via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":null,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":null,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-027","title":"Missing p via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p...P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":null,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":null,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-028","title":"Missing p via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":null,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":null,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-029","title":"Missing P via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P...h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":null,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":null,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-030","title":"Missing P via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":null,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":null,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-031","title":"Missing h via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h..b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":null,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-032","title":"Missing h via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":null,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-033","title":"Missing b via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b.....","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":null}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-034","title":"Missing b via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":null}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"WX-035","title":"Optional field [('L', '000')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077L000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":0,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"WX-036","title":"Optional field [('L', '999')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077L999","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":999}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":999,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"WX-037","title":"Optional field [('l', '000')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077l000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":1000}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":1000,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} @@ -41,22 +41,22 @@ {"id":"WX-041","title":"Snow in complete weather 001","profile":"disputed-units","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t032s001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":32,"temperature_c":0.0,"snow_24h_inches":1,"snow_24h_mm":25.4,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Here lowercase s is snowfall. Positionless s is wind speed. The addendum inconsistently prints uppercase S in some snow examples; see ambiguity register.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"},"snow_24h":{"value":1,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.snow_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} {"id":"WX-042","title":"Snow in complete weather 1.5","profile":"disputed-units","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t032s1.5","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":32,"temperature_c":0.0,"snow_24h_inches":1.5,"snow_24h_mm":38.1,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Here lowercase s is snowfall. Positionless s is wind speed. The addendum inconsistently prints uppercase S in some snow examples; see ambiguity register.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"},"snow_24h":{"value":1.5,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.snow_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} {"id":"WX-043","title":"Snow in complete weather 010","profile":"disputed-units","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t032s010","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":32,"temperature_c":0.0,"snow_24h_inches":10,"snow_24h_mm":254.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Here lowercase s is snowfall. Positionless s is wind speed. The addendum inconsistently prints uppercase S in some snow examples; see ambiguity register.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"},"snow_24h":{"value":10,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.snow_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-044","title":"Optional weather order / omission 5","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077b10132h00P012p025r001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"pressure_tenth_hpa":10132,"pressure_hpa":1013.2,"humidity_percent":100,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1013.2,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-045","title":"Optional weather order / omission 1","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077r000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":0,"rain_1h_mm":0.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"rain_1h":{"value":0.0,"unit":"mm"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.rain_1h_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-044","title":"Optional weather order / omission 5","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077b10132h00P012p025r001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"pressure_tenth_hpa":10132,"pressure_hpa":1013.2,"humidity_percent":100,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1013.2,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-045","title":"Optional weather order / omission 1","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077r000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":0,"rain_1h_mm":0.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"rain_1h":{"value":0.0,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.rain_1h_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"WX-046","title":"Optional weather order / omission 0","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"WX-047","title":"Weather symbol /_","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} {"id":"WX-048","title":"Weather symbol \\_","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N\\07201.75W_220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} {"id":"WX-049","title":"Weather symbol /W","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75WW220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"W","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"W"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"fields","reason":"Alternate W weather symbol is not decoded as weather.","allowed_actual":{"$.payload.comment":"g005t077","$.payload.extensions.weather":null}}} {"id":"WX-050","title":"Weather symbol \\W","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N\\07201.75WW220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"W","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"W"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"fields","reason":"Alternate W weather symbol is not decoded as weather.","allowed_actual":{"$.payload.comment":"g005t077","$.payload.extensions.weather":null}}} {"id":"WX-051","title":"Compressed weather wind belongs to weather","profile":"core-1.1","source":"APRS101 pp. 39,66","packet":"N0CALL>APRS:=/5L!!<*e7_7P[g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"weather":{"wind_direction_deg":88,"wind_speed_knots":36.232012168838,"wind_speed_mps":18.639357371302,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25},"comment":""},"note":"The cs bytes represent wind, not station motion. FAP retains them in its movement fields; do not copy that schema into the semantic assertion.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":"_"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"weather":{"wind_direction":{"value":88,"unit":"degrees"},"wind_speed":{"value":36.232012168838,"unit":"knots"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}}}},"unmapped":["$.compression.type_value","$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"WX-052","title":"Weather-bearing object","profile":"disputed-units","source":"APRS101 pp. 58,66","packet":"N0CALL>APRS:;WX-SITE *092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}},"name":"WX-SITE","name_raw":"WX-SITE ","alive":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"WX-SITE","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":6.35,"unit":"mm"},"rain_since_midnight":{"value":3.048,"unit":"mm"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_hundredth_in","$.weather.rain_24h_hundredth_in","$.weather.rain_since_midnight_hundredth_in","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-053","title":"Storm HC predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/HC/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"hurricane","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"hurricane","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-054","title":"Storm HC predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/HC/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"hurricane","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"hurricane","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-055","title":"Storm TS predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TS/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"tropical-storm","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-056","title":"Storm TS predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/TS/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"tropical-storm","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-057","title":"Storm TD predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TD/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-depression","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"tropical-depression","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-058","title":"Storm TD predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/TD/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-depression","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"tropical-depression","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-059","title":"Storm without optional whole-gale radius","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TS/060^080/0990>000&030","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":false,"sustained_wind_knots":60,"peak_gust_knots":80,"central_pressure_hpa":990,"hurricane_radius_nm":0,"tropical_storm_radius_nm":30}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"tropical-storm","predicted":false,"sustained_wind_knots":60,"peak_gust_knots":80,"central_pressure_hpa":990,"hurricane_radius_nm":0,"tropical_storm_radius_nm":30}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-052","title":"Weather-bearing object","profile":"disputed-units","source":"APRS101 pp. 58,66","packet":"N0CALL>APRS:;WX-SITE *092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}},"name":"WX-SITE","name_raw":"WX-SITE ","alive":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"WX-SITE","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-053","title":"Storm HC predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/HC/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"hurricane","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"HC","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-054","title":"Storm HC predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/HC/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"hurricane","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"HC","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-055","title":"Storm TS predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TS/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TS","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-056","title":"Storm TS predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/TS/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TS","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-057","title":"Storm TD predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TD/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-depression","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TD","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-058","title":"Storm TD predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/TD/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-depression","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TD","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-059","title":"Storm without optional whole-gale radius","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TS/060^080/0990>000&030","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":false,"sustained_wind_knots":60,"peak_gust_knots":80,"central_pressure_hpa":990,"hurricane_radius_nm":0,"tropical_storm_radius_nm":30}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TS","predicted":false,"sustained_wind_knots":60,"peak_gust_knots":80,"central_pressure_hpa":990,"hurricane_radius_nm":0,"tropical_storm_radius_nm":30}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} {"id":"WX-060","title":"Unavailable complete-weather wind '000/000'","profile":"disputed-zero","source":"APRS101 p.27; A11 WX","packet":"N0CALL>APRS:!4903.50N/07201.75W_000/000g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"wind_raw":"000/000","wind_direction_deg":null,"wind_speed_raw":null,"gust_mph":null,"temperature_f":null}},"note":"The PDF permits 000/000 as unknown; receivers also use numeric zero for measured calm. Do not collapse missing markers into measured calm. Select a policy for the all-zero pair.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":null,"unit":"degrees"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"wind_speed":{"value":null,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.wind_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} {"id":"WX-061","title":"Unavailable complete-weather wind '.../...'","profile":"core-1.1","source":"APRS101 p.27; A11 WX","packet":"N0CALL>APRS:!4903.50N/07201.75W_.../...g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"wind_raw":".../...","wind_direction_deg":null,"wind_speed_raw":null,"gust_mph":null,"temperature_f":null}},"note":"The PDF permits 000/000 as unknown; receivers also use numeric zero for measured calm. Do not collapse missing markers into measured calm. Select a policy for the all-zero pair.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":null,"unit":"degrees"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"wind_speed":{"value":null,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.wind_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} {"id":"WX-062","title":"Unavailable complete-weather wind ' / '","profile":"core-1.1","source":"APRS101 p.27; A11 WX","packet":"N0CALL>APRS:!4903.50N/07201.75W_ / g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"wind_raw":" / ","wind_direction_deg":null,"wind_speed_raw":null,"gust_mph":null,"temperature_f":null}},"note":"The PDF permits 000/000 as unknown; receivers also use numeric zero for measured calm. Do not collapse missing markers into measured calm. Select a policy for the all-zero pair.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":null,"unit":"degrees"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"wind_speed":{"value":null,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.wind_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} From 04ef1e7408527604c99bf33b87e6174444a7a01b Mon Sep 17 00:00:00 2001 From: Codex Date: Sat, 17 Oct 2026 07:36:36 +0000 Subject: [PATCH 04/14] Implement APRS packet codecs and complete corpus round trips --- packages/aprs/README.md | 169 ++- packages/aprs/docs/API_COVERAGE.md | 300 ++-- packages/aprs/docs/UNRESOLVED_SPEC.md | 29 +- .../aprs/src/hamkit/aprs/_capabilities.py | 208 ++- packages/aprs/src/hamkit/aprs/_codec.py | 286 +++- .../aprs/src/hamkit/aprs/_compatibility.py | 760 ++++++++++ packages/aprs/src/hamkit/aprs/_conformance.py | 38 +- packages/aprs/src/hamkit/aprs/_extensions.py | 246 +++- .../aprs/src/hamkit/aprs/_fields/timestamp.py | 10 +- packages/aprs/src/hamkit/aprs/_messages.py | 403 ++++++ packages/aprs/src/hamkit/aprs/_mic_e.py | 254 ++++ packages/aprs/src/hamkit/aprs/_nmea_codec.py | 255 ++++ .../aprs/src/hamkit/aprs/_position_codec.py | 174 +++ packages/aprs/src/hamkit/aprs/_weather.py | 241 ++++ packages/aprs/tests/generate_vectors.py | 95 +- packages/aprs/tests/packets/test_codec.py | 12 +- .../tests/packets/test_codec_regressions.py | 169 +++ packages/aprs/tests/packets/test_corpus.py | 116 +- packages/aprs/tests/packets/test_policies.py | 65 +- .../tests/packets/test_roundtrip_corpus.py | 118 ++ packages/aprs/tests/receiver.py | 140 ++ packages/aprs/tests/roundtrip_exceptions.json | 1262 +++++++++++++++++ packages/aprs/tests/source_details.py | 469 ++++++ packages/aprs/tests/test_api_contract.py | 23 +- packages/aprs/tests/test_conformance.py | 15 +- packages/aprs/tests/test_json.py | 8 +- .../aprs/tests/test_message_invariants.py | 9 +- packages/aprs/tests/test_nmea_invariants.py | 5 +- packages/aprs/tests/test_readme_examples.py | 36 +- packages/aprs/tests/test_recovery.py | 16 +- .../aprs/tests/test_vector_corpus_contract.py | 61 +- .../aprs/tests/test_weather_invariants.py | 3 +- packages/aprs/tests/vector_gaps.json | 1157 --------------- packages/aprs/tests/vectors/README.md | 154 +- packages/aprs/tests/vectors/bad.jsonl | 118 +- packages/aprs/tests/vectors/cmp.jsonl | 244 ++-- packages/aprs/tests/vectors/fap.jsonl | 380 ++--- packages/aprs/tests/vectors/mic.jsonl | 530 +++---- packages/aprs/tests/vectors/msg.jsonl | 40 +- packages/aprs/tests/vectors/net.jsonl | 2 +- packages/aprs/tests/vectors/nme.jsonl | 70 +- packages/aprs/tests/vectors/obj.jsonl | 106 +- packages/aprs/tests/vectors/oth.jsonl | 28 +- packages/aprs/tests/vectors/pos.jsonl | 24 +- packages/aprs/tests/vectors/qry.jsonl | 40 +- packages/aprs/tests/vectors/seq.jsonl | 46 +- packages/aprs/tests/vectors/sta.jsonl | 42 +- packages/aprs/tests/vectors/tim.jsonl | 6 +- packages/aprs/tests/vectors/tlm.jsonl | 36 +- packages/aprs/tests/vectors/wx.jsonl | 132 +- 50 files changed, 6301 insertions(+), 2849 deletions(-) create mode 100644 packages/aprs/src/hamkit/aprs/_compatibility.py create mode 100644 packages/aprs/src/hamkit/aprs/_messages.py create mode 100644 packages/aprs/src/hamkit/aprs/_mic_e.py create mode 100644 packages/aprs/src/hamkit/aprs/_nmea_codec.py create mode 100644 packages/aprs/src/hamkit/aprs/_position_codec.py create mode 100644 packages/aprs/src/hamkit/aprs/_weather.py create mode 100644 packages/aprs/tests/packets/test_codec_regressions.py create mode 100644 packages/aprs/tests/packets/test_roundtrip_corpus.py create mode 100644 packages/aprs/tests/receiver.py create mode 100644 packages/aprs/tests/roundtrip_exceptions.json create mode 100644 packages/aprs/tests/source_details.py delete mode 100644 packages/aprs/tests/vector_gaps.json diff --git a/packages/aprs/README.md b/packages/aprs/README.md index 04a3e9b..8f9b8eb 100644 --- a/packages/aprs/README.md +++ b/packages/aprs/README.md @@ -4,12 +4,12 @@ Parse APRS packets, build them in Python, check them before sending, and move them to and from JSON. Pure Python · MIT license · Python 3.11+ · no runtime dependencies. -This is an **alpha API**. Basic status, position, message and acknowledgment -packets work today, along with the envelope/raw formats shown below. Other -families have usable Python and JSON models but **no wire codec yet**. Those -sections say **Model + JSON only** and print the constructed model's name; -they do not claim to produce a TNC2 line. Calling `serialize_packet` on those -models raises `CodecNotImplementedError`. +This is an **alpha API** with decoding and encoding for the packet families in +our [compliance corpus](docs/APRS_COMPLIANCE_VECTORS.md): positions (including +compressed, ambiguous and Mic-E), objects/items, weather, telemetry, messages, +queries/responses, status, NMEA and historical formats. Unknown or explicitly +raw formats preserve their bytes. Public models and JSON shapes are unchanged. +See [codec coverage and compatibility policies](docs/API_COVERAGE.md) for limits. Install from a repository checkout with `python -m pip install -e packages/aprs`. Construction examples run independently, including those that embed JSON @@ -142,7 +142,7 @@ N0CALL>APRS:>Ready ## Working wire examples Each example uses the supported subset of its family. More elaborate fields can -still require an unimplemented codec; see the [coverage notes](docs/API_COVERAGE.md). +use their own wire layout; see the [coverage notes](docs/API_COVERAGE.md). Serialization returns bytes. Optional fields are keyword-only. ### Position @@ -206,16 +206,16 @@ Output: Course/speed (`088/036`) is decoded into `extensions.motion`, and `comment` holds the text after it, including its leading space. PHG, RNG, DFS, DF bearing and `/A=` altitude are decoded the same way. Extension-shaped text with -invalid values stays in `comment` with a diagnostic, and extensions this -version cannot decode yet (such as `!DAO!` or weather) make the payload -`Opaque` rather than being mistaken for comment text. +invalid values stays in `comment` with a diagnostic. DAO precision, base91 +telemetry, weather, storm, area and signpost extensions also have structured +decoders and encoders. When sending, measurements such as course, speed and altitude are rounded to whole units, like coordinates. Values with no exact wire form (PHG power must be n² watts) and values that would read back with a different meaning (a known speed of zero with no course) raise `ConformanceError`. Modeled fields the wire -format cannot carry, such as a PHG rate or an altitude reference, raise -`CodecNotImplementedError` instead of being dropped. +format cannot carry, such as an independent altitude reference, raise +a representability error instead of being dropped. Build with Python: @@ -642,14 +642,11 @@ N0CALL>APRS:~vendor data ## Model and JSON examples -**Model + JSON only** means the values below can be built, inspected, checked, -saved and loaded now, but cannot yet be serialized to APRS wire bytes. Both -forms print the same payload class name to confirm the model they construct. -The JSON is the actual data shape, not a proposed wire encoding. No future wire -output is shown. +These examples show equivalent Python and JSON construction, printing the +payload class name. They can also be serialized with `serialize_packet`. +Raw wrappers intentionally preserve their information bytes. -For example, this is what happens if you ask the current encoder to write a -weather report to the wire: +For example, encode a positionless weather report: ```python from hamkit import aprs @@ -664,16 +661,13 @@ packet = aprs.Packet( timestamp=aprs.Timestamp.mdhm(10, 17, 12, 30), ), ) -try: - print(aprs.serialize_packet(packet).decode("utf-8")) -except aprs.CodecNotImplementedError as error: - print(type(error).__name__) +print(aprs.serialize_packet(packet).decode("utf-8")) ``` Output: ```text -CodecNotImplementedError +N0CALL>APRS:_10171230c270s012g015t068 ``` The following examples build and load these models without asking for wire @@ -683,7 +677,7 @@ encoding. They remain useful for storing or exchanging structured data. #### Mic-E -**Model + JSON only.** Compact position data with a Mic-E message type. A future encoder derives the destination address from the latitude and message. +**Wire encoding available.** Compact position data with a Mic-E message type. The supplied destination must match latitude, hemisphere and message; the encoder verifies it. Build with Python: @@ -691,7 +685,7 @@ Build with Python: from hamkit import aprs packet = aprs.Packet( - aprs.Header("N0CALL", "APRS"), + aprs.Header("N0CALL", "TY0P0P"), aprs.MicE( 49, -72, @@ -720,7 +714,7 @@ packet = aprs.from_json( "type": "packet", "header": { "source": "N0CALL", - "destination": "APRS" + "destination": "TY0P0P" }, "payload": { "type": "mic_e", @@ -752,7 +746,7 @@ MicE #### Object -**Model + JSON only.** A named, timestamped object at a position. +**Wire encoding available.** A named, timestamped object at a position. Build with Python: @@ -821,7 +815,7 @@ Object #### Item -**Model + JSON only.** A named item at a position, without an object timestamp. +**Wire encoding available.** A named item at a position, without an object timestamp. Build with Python: @@ -877,7 +871,7 @@ Item #### Weather -**Model + JSON only.** A positionless report: wind, gust and temperature slots plus an MDHM timestamp. Measurements have explicit units. Use the same Weather model in `Extensions.weather` for located weather. +**Wire encoding available.** A positionless report: wind, gust and temperature slots plus an MDHM timestamp. Measurements have explicit units. Use the same Weather model in `Extensions.weather` for located weather. Build with Python: @@ -963,7 +957,7 @@ Weather #### Telemetry readings -**Model + JSON only.** Five analog and eight digital channels. None represents an unavailable channel, not zero. +**Wire encoding available.** Five analog and eight digital channels. None represents an unavailable channel, not zero. Build with Python: @@ -1035,7 +1029,7 @@ Telemetry #### Telemetry definition -**Model + JSON only.** Channel names for N0CALL's telemetry. TelemetryUnits, TelemetryEquations and TelemetryBits are the other definition variants. +**Wire encoding available.** Channel names for N0CALL's telemetry. TelemetryUnits, TelemetryEquations and TelemetryBits are the other definition variants. Build with Python: @@ -1095,7 +1089,7 @@ TelemetryDefinition #### Automatic answer -**Model + JSON only.** An automatic reply addressed to W1AW. +**Wire encoding available.** An automatic reply addressed to W1AW. Build with Python: @@ -1147,7 +1141,7 @@ AutoAnswer #### Bulletin -**Model + JSON only.** A bulletin identifier, text and optional group. A letter identifier makes it an announcement. +**Wire encoding available.** A bulletin identifier, text and optional group. A letter identifier makes it an announcement. Build with Python: @@ -1199,7 +1193,7 @@ Bulletin #### NWS bulletin -**Model + JSON only.** A National Weather Service product envelope, distinct from a general bulletin. +**Wire encoding available.** A National Weather Service product envelope, distinct from a general bulletin. Build with Python: @@ -1252,7 +1246,7 @@ NWSBulletin #### Radiogram -**Model + JSON only.** One NTS radiogram record in its delivery envelope. This example carries text line 1. +**Wire encoding available.** One NTS radiogram record in its delivery envelope. This example carries text line 1. Build with Python: @@ -1309,7 +1303,7 @@ Radiogram #### Query -**Model + JSON only.** A query with a geographic footprint. +**Wire encoding available.** A query with a geographic footprint. Build with Python: @@ -1367,7 +1361,7 @@ Query #### Response -**Model + JSON only.** A query response listing directly heard stations. HeardStation and Trace are other response variants. +**Wire encoding available.** A query response listing directly heard stations. HeardStation and Trace are other response variants. Build with Python: @@ -1424,7 +1418,7 @@ Response #### Capabilities -**Model + JSON only.** A station advertises a protocol capability token. +**Wire encoding available.** A station advertises a protocol capability token. Build with Python: @@ -1480,7 +1474,7 @@ Capabilities #### NMEA -**Model + JSON only.** A GLL navigation sentence. GGA, RMC, VTG and WPL are also modeled. +**Wire encoding available.** A GLL navigation sentence. GGA, RMC, VTG and WPL are also modeled. Build with Python: @@ -1544,7 +1538,7 @@ NMEA #### Raw vendor weather -**Model + JSON only.** Preserve vendor bytes and their declared format; this is not a decoded weather observation. +**Wire encoding available.** Preserve vendor bytes and their declared format; this is not a decoded weather observation. Build with Python: @@ -1595,7 +1589,7 @@ RawWeather #### Agrelo -**Model + JSON only.** Direction-finding bearing and quality. +**Wire encoding available.** Direction-finding bearing and quality. Build with Python: @@ -1644,7 +1638,7 @@ Agrelo #### Maidenhead beacon -**Model + JSON only.** The historical bracket-style grid beacon. `Grid.bounds` and `Grid.center` are computed from the locator. +**Wire encoding available.** The historical bracket-style grid beacon. `Grid.bounds` and `Grid.center` are computed from the locator. Build with Python: @@ -1696,7 +1690,7 @@ Maidenhead #### Legacy position -**Model + JSON only.** A historical prefix around a position. +**Wire encoding available.** A historical prefix around a position. Build with Python: @@ -1755,7 +1749,7 @@ LegacyPosition #### Non-APRS beacon -**Model + JSON only.** Plain beacon text with no APRS interpretation. +**Wire encoding available.** Plain beacon text with no APRS interpretation. Build with Python: @@ -1803,7 +1797,7 @@ Beacon #### External extension -**Model + JSON only.** Preserve external-format data by name; its grammar has not been implemented. +**Wire encoding available.** Preserve external-format data by name; its grammar has not been implemented. Build with Python: @@ -1921,8 +1915,7 @@ ratified spec is ASCII). Bytes that are not valid UTF-8 are read as Latin-1 with a diagnostic, never dropped or replaced. Pass `profile="rf"` to also report AX.25 address and size limits. -Unsupported payloads are kept as `Opaque`. This weather packet's information -field is retained, not decoded into Weather measurements: +Positionless weather decodes into measurements with explicit units and a timestamp: ```python from hamkit import aprs @@ -1936,7 +1929,7 @@ print(packet) Output: ```text -Packet(header=Header(source='N0CALL', destination='APRS', path=()), payload=Opaque(information=b'_10090556c220s004g005t077r001p025P012h50b09900WRSW', diagnostic=Diagnostic(code='unsupported', message='unsupported information field family', path='$')), diagnostics=()) +Packet(header=Header(source='N0CALL', destination='APRS', path=()), payload=Weather(wind_direction=Measurement(value=220.0, unit='degrees'), wind_speed=Measurement(value=4.0, unit='mph'), gust=Measurement(value=5.0, unit='mph'), temperature=Measurement(value=77.0, unit='fahrenheit'), humidity=Measurement(value=50.0, unit='percent'), pressure=Measurement(value=990.0, unit='hPa'), rain_1h=Measurement(value=0.01, unit='inches'), rain_24h=Measurement(value=0.25, unit='inches'), rain_since_midnight=Measurement(value=0.12, unit='inches'), snow_24h=None, luminosity=None, rain_counter=None, water_height=None, software_code='W', device_code='RSW', timestamp=Timestamp(kind='mdhm_utc', hour=5, minute=56, day=9, second=None, month=10), comment=''), diagnostics=()) ``` Show that same result as JSON: @@ -1955,12 +1948,62 @@ Output: "destination": "APRS" }, "payload": { - "type": "opaque", - "information": "_10090556c220s004g005t077r001p025P012h50b09900WRSW", - "diagnostic": { - "code": "unsupported", - "message": "unsupported information field family" - } + "type": "weather", + "wind_direction": { + "value": 220.0, + "unit": "degrees", + "raw": "220" + }, + "wind_speed": { + "value": 4.0, + "unit": "mph", + "raw": "004" + }, + "gust": { + "value": 5.0, + "unit": "mph", + "raw": "005" + }, + "temperature": { + "value": 77.0, + "unit": "fahrenheit", + "raw": "077" + }, + "humidity": { + "value": 50.0, + "unit": "percent", + "raw": "50" + }, + "pressure": { + "value": 990.0, + "unit": "hPa", + "raw": "09900" + }, + "rain_1h": { + "value": 0.01, + "unit": "inches", + "raw": "001" + }, + "rain_24h": { + "value": 0.25, + "unit": "inches", + "raw": "025" + }, + "rain_since_midnight": { + "value": 0.12, + "unit": "inches", + "raw": "012" + }, + "software_code": "W", + "device_code": "RSW", + "timestamp": { + "kind": "mdhm_utc", + "hour": 5, + "minute": 56, + "day": 9, + "month": 10 + }, + "raw": "10090556c220s004g005t077r001p025P012h50b09900WRSW" }, "original_wire": "N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b09900WRSW" } @@ -1984,7 +2027,7 @@ print(packet) Output: ```text -Malformed(original_wire=b'N0CALL>APRS:!4903.50N/19000.00W-', diagnostics=(Diagnostic(code='malformed', message='coordinate out of range', path='$.payload.longitude_deg'),), recovered={'type': 'packet', 'header': {'source': 'N0CALL', 'destination': 'APRS'}, 'payload': {'type': 'position', 'messaging': False, 'latitude_deg': 49.05833333333333, 'comment': '', 'symbol': {'table_id': '/', 'code': '-'}}}) +Malformed(original_wire=b'N0CALL>APRS:!4903.50N/19000.00W-', diagnostics=(Diagnostic(code='malformed', message='coordinate out of range', path='$.payload'), Diagnostic(code='malformed', message='coordinate out of range', path='$.payload.longitude_deg')), recovered={'type': 'packet', 'header': {'source': 'N0CALL', 'destination': 'APRS'}, 'payload': {'type': 'position', 'messaging': False, 'latitude_deg': 49.05833333333333, 'comment': '', 'symbol': {'table_id': '/', 'code': '-'}}}) ``` Show that same result as JSON: @@ -2000,6 +2043,11 @@ Output: "type": "malformed", "original_wire": "N0CALL>APRS:!4903.50N/19000.00W-", "diagnostics": [ + { + "code": "malformed", + "message": "coordinate out of range", + "path": "$.payload" + }, { "code": "malformed", "message": "coordinate out of range", @@ -2099,7 +2147,8 @@ Output: the structured fields. - A missing weather measurement differs from `Measurement(None, "mph")`, which means an unavailable reading. Zero is an actual measurement. Units are - explicit; no automatic conversion is performed. + explicit. Encoders convert supported measurement units to the selected wire + units and quantize to field precision; they reject overflow. - `to_json_dict` and `from_json_dict` work with dictionaries. Use `to_json(packet, indent=2, include_defaults=True)` to show optional defaults. `from_json(text, expected_type=aprs.Packet)` checks the expected model. @@ -2120,8 +2169,8 @@ decisions. - [Wire support by family](docs/API_COVERAGE.md): implemented subsets and gaps. - [Naming guide](docs/NAMING.md): public names and why some qualifiers remain. - [Compliance vectors](docs/APRS_COMPLIANCE_VECTORS.md): specification references - and the future packet/field test corpus. These examples are illustrations, not - a claim that the complete corpus passes. + and the complete packet/field test corpus. Every row is tested, including + profile-specific source assertions and sequence behavior. Run the examples and unit tests with -`python -m unittest discover -s packages/aprs/tests -v` from the repository root. +`python -m pytest packages/aprs/tests -q` from the repository root. diff --git a/packages/aprs/docs/API_COVERAGE.md b/packages/aprs/docs/API_COVERAGE.md index cd8dec0..4d98db3 100644 --- a/packages/aprs/docs/API_COVERAGE.md +++ b/packages/aprs/docs/API_COVERAGE.md @@ -1,201 +1,99 @@ -# APRS representation and codec coverage - -This is the scope contract for the alpha API. **Representation is not codec -implementation or compliance.** Every payload family within the baseline below -has a public construction model, including historical and optional families. -Known field layouts use named dataclasses and aliases, not untyped dictionaries. -Unimplemented vendor/extension grammars have explicitly named raw wrappers. -See [unresolved specification questions](UNRESOLVED_SPEC.md) for source gaps and profile decisions. - -## Baseline and authority - -The baseline is [APRS_COMPLIANCE_VECTORS.md](APRS_COMPLIANCE_VECTORS.md), edition 1: -APRS101 1.0.1; the APRS 1.1 addendum and corrections cited there; and the explicitly -identified compatibility extensions in its pinned FAP appendix. It is **not** -all future APRS 1.2 proposals, arbitrary NMEA sentences, or every vendor protocol. -No FAP or GPL implementation is incorporated. - -This review cross-checked the document's family headings, expected-field schemas, -ambiguity decisions and selected cases against the [APRS101 reference](https://www.aprs.org/doc/APRS101.PDF), -[1.1 addendum](https://www.aprs.org/aprs11.html), -[weather notes](https://www.aprs.org/aprs11/spec-wx.txt), -[DF notes](https://www.aprs.org/APRS-docs/DF.TXT), -[area correction](https://www.aprs.org/aprs11/areaobjects.txt) and -[reply-ack notes](https://www.aprs.org/aprs11/replyacks.txt). Consulted 2026-10-17; -live links are not immutable revisions. Local vector references below are the -reproducible source for the scope decisions. Page numbers refer to printed pages. - -## Coverage matrix - -**Working** means the named subset has functional tests. **Modeled** means Python -values can be constructed but structured wire encoding raises -`CodecNotImplementedError`; decoding generally returns `Opaque` or raises that -error, as `parse_packet(..., unsupported=...)` selects. **Raw** means byte assembly/preservation, -not interpretation or semantic validation. Rows covering shared fields inherit -the capabilities of their enclosing payloads. - -| Source / category | Public representation | Wire support and boundary | -| ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| HDR; APRS101 pp.12–16,83–85: TNC2 addresses/path | `Header`, `Hop`, `Path`, `Packet` | Working monitor/RF token validation; ordered explicit `*` only | -| HDR, NME-015–036, OTH-038: destination/source metadata | `Header`, `Symbol`, `Grid` | Header tokens retained exactly. Destination symbol/grid, source-SSID symbol, software ID and destination routing are not interpreted yet | -| POS: all four position DTIs | `Position`, `Symbol` | Working uncompressed unambiguous position; messaging/timestamp options | -| POS: ambiguity and unknown-position convention | `Position.ambiguity`, `ambiguity_extent`, `Extent`; `Position.is_null_position` | Ambiguity digits modeled with a computed cell; null convention working; no guessed exact fix for an ambiguous area | -| TIM: DHM UTC/local, HMS UTC, MDHM UTC | `Timestamp`, `TimestampKind` | DHM/HMS working; MDHM modeled; raw timestamp is evidence, not an encoding override. No inferred year/offset | -| EXT: course/speed, altitude, range | `Extensions`, `Motion`, `Altitude`, `Range` | Working on uncompressed positions: CSE/SPD (including unknown and zero pairs), `/A=` feet and RNG. Compressed and Mic-E altitude modeled | -| EXT: PHG and direction finding | `PHG`, `Signal`, `Bearing` | Working on uncompressed positions: PHG, DFS and DF bearing/NRQ codes; derived radii and ranges are properties. Q-to-accuracy mapping not imposed | -| CMP: compressed positions, csT precedence | `Position(encoding="compressed")`, `Compression`, `Extensions` | Modeled: type/fix/NMEA source/origin, ignored csT, motion/range/altitude. Encoders must validate mutually exclusive interpretations | -| MIC: current/old/beta Mic-E | `MicE`, `MicEMessage`, `Extensions` | Modeled: position, message type, fix, ambiguity, device code, motion/altitude/telemetry. Header context required | -| OBJ: objects/items, live/kill, compressed/moving/weather | `Object`, `Item`, `Extensions` | Modeled: name, lifecycle, timestamp, position, compression and extension fields | -| OBJ: areas/signposts | `Area`, `Signpost` in `Extensions` | Modeled: shape/color/offset codes, corrected anchor/offsets, corridor width, signpost label; rendering is outside scope | -| WX: positionless, located, compressed, object weather | `Weather`; `Extensions.weather` on `Position`, `Object`, `Item` | Modeled; located weather retains its enclosing position/object identity | -| WX: missing/zero/raw sensor data and water gauges | `Weather`, `Measurement`, `WaterHeight`, `Unit` | Modeled: wind/gust/temp/humidity/pressure, three rain windows, snow, luminosity, raw counter, software/device, height/datum | -| WX: hurricanes/tropical storms/depressions | `Storm` in `Extensions` | Modeled: predicted flag, sustained/gust wind, pressure and three radii | -| TLM: classic, MIC, legacy Mic-E, base91 comment, relaxed compatibility | `Telemetry`, `TelemetryEncoding`, `AnalogChannels`, `DigitalChannels` | Modeled: sequence/raw sequence, MIC comma variant, ordered missing channels, raw values. Calibration is not applied implicitly | -| TLM: PARM/UNIT/EQNS/BITS | `TelemetryDefinition`, `TelemetryParameters`, `TelemetryUnits`, `TelemetryEquations`, `Calibration`, `TelemetryBits` | Modeled: target, partial/empty channels, coefficients, sense bits and project title | -| MSG: ordinary/group messages | `Message` | Working: UTF-8 text, message ID and reply-ack. Group addressees retained; delivery/ack policy not inferred | -| MSG: ack/rej, reply-ack and automatic answers | `Acknowledgment`, `Message.reply_ack`, `AutoAnswer` | ack/rej and reply-ack working; auto-answer modeled | -| MSG: bulletins, announcements, group bulletins, NWS | `Bulletin`, `NWSBulletin` | Modeled: identifier (announcement when a letter), group; NWS reference is separate from an ordinary message ID | -| MSG: NTS records N#, NA, NP, N1–N6, NS, NR | `Radiogram`, `NTSRecord`, `NTSHeader`, `NTSAddress`, `NTSPhone`, `NTSText`, `NTSSignature`, `NTSRouting` | Modeled named record fields; no radiogram assembly/state machine | -| QRY: general/directed/unknown queries and footprints | `Query`, `Footprint` | Modeled open query name, recipient, heard station and additional argument bytes | -| QRY: direct stations/heard history/path responses | `Response`, `ResponseValue`, `DirectStations`, `HeardStation`, `Trace` | Modeled refinements. Generic response text still decodes as `Message`; it is not claimed as structured response decoding | -| QRY: capability announcements | `Capabilities`, `Capability` | Modeled ordered tokens with optional values; unknown token names permitted | -| STA: status/grid/beam | `Status`, `Grid`, `Beam`, `Symbol` | UTF-8 text and DHM UTC working; grid/beam modeled. Other timestamp-looking text stays text | -| NME: GGA/GLL/RMC/VTG/WPL | `NMEA`, `NMEASentence`, `GGA`, `GLL`, `RMC`, `VTG`, `WPL`, `NMEAMetadata` | Modeled explicit sentence fields, raw time/date, checksum and fix validity; no automatic trusted position or datum conversion | -| NET: third-party encapsulation | `ThirdParty(Packet(...))` | Working bounded recursion, including binary and opaque inner packets; inner header supplied to decoding | -| NET: APRS-IS path and no-gate/no-archive conventions | `Header.path`, raw payload bytes | Tokens retained, including q constructs. Routing/archive/authentication policy and station state are outside packet codecs | -| OTH: user-defined/experimental | `UserDefined` | Working one-byte ID/type plus arbitrary binary data; user payload semantics remain private | -| OTH: explicit invalid/test | `Invalid` | Working raw body; never interpreted as a position | -| OTH: raw vendor weather `!!`, `#`, `$ULTW`, `*` | `RawWeather` | Named raw wrapper with optional externally interpreted `Weather`; vendor grammar not inferred; codec modeled only | -| APRS101 Appendix 1 p.103: Agrelo DFJr/MicroFinder `%` | `Agrelo` | Bearing and quality-code representation modeled; no guessed quality meaning | -| OTH: obsolete bracket Maidenhead beacon | `Maidenhead`, `Grid` | Modeled historical wrapper | -| OTH: historical X1J, obsolete object/bulletin, non-APRS beacon | `LegacyPosition`, `Beacon` | Modeled. Obsolete object/bulletin forms stay Opaque; the decoder does not search for embedded position DTIs | -| OTH: reserved/unknown DTIs, future/undocumented data | `Reserved`, `Opaque`, `Diagnostic` | Raw reserved construction, opaque recovery. No invented grammar for reserved map/shelter slots | -| Addendum-linked polygon/line or other external vendor grammar | `ExternalExtension` | Named raw wrapper with specification URL; numerical interpretation remains unresolved pending an authoritative grammar | -| FAP-only extensions cited by corpus | `DAO`, `PHG.rate_per_hour`, `Telemetry`, `RawWeather`, raw codes | Represented without asserting compatibility decoding | -| BAD: malformed supported payloads | `Malformed`, `Diagnostic` | Working: undecodable fields yield Malformed with recovered data; out-of-spec but decodable input yields a Packet with nonconforming diagnostics | -| SEQ: station state, ownership, retries, calibration history | Packet models above | Sequence inputs representable; state machines are outside this stateless module | -| AEA, AX.25/KISS/FCS, modem/radio | `Header` plus payload after adapter normalization | Outside payload scope; AEA adapter not implemented. TNC2 LF/CRLF helpers are working | - -`codec_support()` provides a per-payload machine-readable summary, and -`codec_support_for(value_or_type)` returns one entry. A `partial` entry is not a -promise that every combination of that model is encodable. The constructor -examples in `tests/model_examples.py` are checked against **every member of -`Payload` and every public dataclass**; extending the public surface requires -extending those examples and the codec registry. - -## Validation tiers - -Uncompressed extension encoding rejects motion values whose wire form would -change whether a measurement is known or contradict an explicit `zero_pair`. -Invalid DF bearing text remains inspectable in the comment with a conformance -diagnostic, and cannot be sent. PHG `rate_per_hour`, explicit altitude references, -and bearing `usable`/`accuracy_less_than_deg` annotations remain representable in -Python and JSON, but raise `CodecNotImplementedError` on send rather than being -silently discarded. - -- **Constructors** reject values that cannot exist on the wire or contradict - another field: an out-of-range coordinate, an invalid timestamp, a `{` inside - message text, a lowercase overlay on an uncompressed position. These raise - `ModelError` from Python and `JSONModelError` from JSON. A Malformed parse - result means a received field failed this tier. -- **Conformance** covers APRS limits a transmitter could still break: lengths, - reserved characters, control characters, required weather slots, symbol - requirements for storms, DF and areas, data-extension slot conflicts, telemetry - layouts, and RF address/size limits with `profile="rf"`. Received packets - keep these findings in `Packet.diagnostics`. `check_packet` lists them, and - `serialize_packet` raises `ConformanceError` rather than send them. -- Values that follow from other fields are properties, so they cannot - contradict: grid bounds and center, PHG ranges, bearing range and manual flag, - area offsets and anchor, compression type byte, bulletin announcement flag - and the ambiguity cell. - -## Encoding and decoding contracts - -- `serialize_packet` re-validates the whole model, raises - `CodecNotImplementedError` for families without an encoder, then raises - `ConformanceError` with every finding before any bytes are produced. - `validate_packet` performs exactly the same checks. `original_wire` is never - replayed. -- Mic-E's latitude and message bits belong in the destination address, so a - future Mic-E encoder derives the destination inside `serialize_packet`. - `serialize_payload` raises `ContextRequiredError` for Mic-E, as - `parse_payload` does without `header=`; full packet parsing always supplies - the header. -- `Position.comment` (and the comment on objects, items and Mic-E) is the free - text after the data extensions. Course/speed, PHG, RNG, DFS, DF bearing and - `/A=` altitude are decoded into `extensions` and encoded from them. Text shaped - like an extension with invalid values (such as `361/010`) stays in `comment` - with a nonconforming finding. Recognized syntax without a decoder yet (DAO, - positioned weather, storms, areas, signposts, base91 telemetry) makes the - payload `Opaque`, and encoding those extensions raises - `CodecNotImplementedError`; nothing is silently discarded. Before sending, - conformance re-reads the encoded extensions and comment and refuses a comment - that would be read back differently, or extension values with no exact wire - form. Measurements are rounded to whole units, like coordinates; code-table - values (PHG power, height, gain, directivity) must be exact. -- `Position`, `Object`, `Item` and `MicE` carry latitude, longitude and symbol - directly, and share the `coordinates` and `ambiguity_extent` properties. - Compression is present exactly when `compression` is set. -- Raw evidence fields never override structured values and are ignored by - equality. Future codecs must validate consistency rather than prefer evidence. - -## Recovery, framing and limitations - -`parse_packet` consumes an unframed byte sequence. It does not trim or reject -binary CR/LF inside information. `parse_tnc2_line` instead requires exactly one -LF/CRLF terminator and rejects embedded delimiters; its `original_wire` excludes -the terminator. `serialize_tnc2_line` emits CRLF and rejects non-line-safe data. -All 256 byte values are tested in `UserDefined.data` in monitor mode; RF size -limits still apply. Wire input is `bytes` only. - -Free text decodes as UTF-8, following the APRS 1.2 proposed-draft guidance -adopted for compatibility; invalid UTF-8 falls back to Latin-1 with a -nonconforming diagnostic. Protocol tokens are printable -ASCII. See [unresolved specification questions](UNRESOLVED_SPEC.md#text-encoding-ascii-and-utf-8). - -`parse_packet` returns a Packet unless a header or implemented payload field -cannot be decoded; then it returns one top-level Malformed. `parse_payload` -uses the same boundary for a standalone payload. Malformed contains -original_wire, diagnostics with field paths, recovered ordinary JSON in the -normal schema, and the typed `header` when it was intact. It never appears -inside Packet.payload. Missing or undecodable values are not invented. -Corrected recovered data goes through ordinary JSON construction to become a -Packet. - -`unsupported` (`"opaque"` / `"raise"`) and `malformed` (`"return"` / `"raise"`) -are independent keyword options. Unknown or unimplemented formats are -unsupported, not malformed. Context and resource failures raise. A broken outer -header can still recover supported inner fields. Nested third-party failures -produce one outer Malformed with nested diagnostic paths. - -`max_third_party_depth` counts third-party wrappers (default 4, configurable -0–32), in both directions. RF address rules apply to the transmitted header -only, not to Internet-origin inner envelopes; the outer RF information-size -limit still applies. - -## Genuine ambiguities and scope gaps - -- Wind units in uncompressed complete weather and zero-pair semantics remain - disputed in the corpus. `Measurement.unit="disputed_knots_or_mph"` and raw - evidence can represent an unresolved reading. No converter chooses silently. -- Peet vendor layouts have manufacturer documentation but no implemented codec. - External polygon/line geometry and detailed Agrelo quality meanings still need - verified authoritative definitions. Named raw - models preserve these boundaries rather than fabricating fields. -- The area correction specifies numeric offsets/anchors, not a complete rendering - algorithm. `Area` stores codes and corrected quantities; map rendering is out. -- Live symbol/TOCALL registries, later APRS 1.2 proposals (including new radiation - formats), generic NMEA variants, and compatibility acceptance of malformed - input are not exhaustively specified by this baseline. -- Historical and FAP compatibility profiles are not implemented; their - behavioral rules and station-state sequences still need a design. - -These are the limits of “everything represented.” All **defined payload families -in this baseline** have a model; undefined grammars have honest raw boundaries. -This is not a guarantee that future specifications require no additional fields -or classes. No comprehensive vector-compliance claim is made. - -Weather and telemetry use the same semantic model as a full payload or nested -field. Conformance checks the slots and encoding variants each context requires; -neither has a wire codec yet. -See [the naming guide](NAMING.md) for model names and their meanings. +# APRS codec coverage + +The public dataclasses, unions, function signatures and JSON schema are unchanged. +Decoding and encoding cover the families exercised by all 1,561 occurrences in +[the edition 1 corpus](APRS_COMPLIANCE_VECTORS.md). Unknown grammars still use +`Opaque`; raw wrappers preserve authoritative information bytes. + +| Family | Decoding and encoding | +| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| Envelope | TNC2, monitor/RF validation, explicit repeated hops, AEA monitor normalization, bounded third-party nesting | +| Positions | All four DTIs, ambiguity, compressed coordinates/csT, Mic-E destination-dependent latitude/message/hemisphere | +| Extensions | Motion, altitude, PHG/rate, range, DF signal/bearing, DAO, area/corridor, signpost, storm, weather, base91 and Mic-E telemetry | +| Objects/items | Names, ownership information, alive/killed markers, compressed/uncompressed positions and extensions | +| Weather | MDHM positionless and located reports, unavailable readings, rain/humidity/pressure, luminosity, snow, water height, device suffixes | +| Telemetry | Classic samples, PARM/UNIT/EQNS/BITS, comment base91, old Mic-E hex/binary | +| Messages | Ordinary messages, ack/rej, reply-ack, automatic answers, bulletins/announcements/groups, NWS envelopes, NTS records | +| Queries/responses | General/directed queries, footprints, heard-station operands, direct lists, hourly counts, trace headers, capabilities | +| Status | Text, DHM, grid/symbol and beam/ERP | +| NMEA | GGA, GLL, RMC, VTG and WPL, checksums, independent fix usability, destination/source symbol conventions | +| Historical/raw | Grid beacons, X1J embedded positions, plain beacons, Agrelo, user-defined, invalid/test, reserved and external raw formats | +| Vendor weather | Ultimeter 2000 measurements plus original bytes; other vendor modes retain bytes without invented measurements | + +`codec_support()` and `codec_support_for()` describe these boundaries at runtime. +Raw models do not promise interpretation of arbitrary vendor or external grammars. +AX.25 framing, KISS, FCS, radio/modem operation and arbitrary NMEA sentences remain +outside this package's packet codec. + +## Receiver profiles without an API change + +The source vectors deliberately describe different receivers. The same TNC2 +bytes can have different expectations: embedded `!` is a modern beacon versus a +legacy X1J position; FAP trims comments, converts weather units, rounds some +values, and accepts certain incomplete historical reports. + +The public codec is deterministic and preserves the richer wire interpretation. +The private `_compatibility` adapter supplies the named historical views and +additional receiver facts without adding profile parameters or JSON fields to +the public API. It never reads fixtures or expected values. FAP compatibility is +an implementation of the captured receiver policy, not the core transmit policy. +The pinned reference implementation was consulted; it is not a runtime dependency. + +Some facts cannot be stored as additional public fields: disputed DF quality +interpretations, network retention/routing policy, weather radiation/battery and +indoor sensor values, and historical receiver resolution/warnings. Tests verify +these separately from retained codes/bytes. Incomplete historical GLL reports +and invalid timestamps remain `Malformed` in the public model when required +facts cannot be constructed; the historical adapter exposes only available facts. +No missing time, coordinate or calibration coefficient is fabricated. + +The 23 sequence occurrences run through a test application receiver using public +models. Ownership, deduplication, acknowledgment construction, calibration, +bulletin replacement, status fallback and station-specific weather association +are verified. The codec itself remains stateless. + +## Composition and precision + +Serialization builds bytes from semantic fields, never `original_wire`, lexical +NMEA fields, or extension `raw` evidence. Explicit raw models are the exception: +`information`/`data` are their authoritative semantic content. + +- Uncompressed coordinates round to hundredths of minutes; ambiguity transmits + the requested cell. Compressed coordinates round to their base91 grid. DAO + precision is removed from the reported coordinate before encoding the base + coordinate, preventing a second application of the offset. +- Compressed motion, range and altitude use their specified logarithmic codes. + Field overflow is rejected. No saturation or text truncation is performed. +- Mic-E requires a destination consistent with latitude, ambiguity, message and + longitude flags. A mismatch raises `FieldError`; packet headers are not silently + changed. Payload-only Mic-E still requires header context. +- NMEA uses semantic numeric fields and recomputes a supplied checksum. Checksum + characters can change when equivalent numeric spellings change. A deliberately + bad input checksum is repaired and fix usability is reevaluated. +- Weather encoders convert supported units to wire units, then round to field + precision. Uncompressed located wind retains the corpus's explicit + `disputed_knots_or_mph` unit on decode; composition of an explicitly metric or + mph reading follows the FAP mph interpretation. No interpretation is assigned + to a received disputed reading by the core decoder. +- Explicit altitude datum and DF interpretation annotations with no wire form + remain unsendable rather than being silently discarded. Raw vendor weather + annotations do not replace authoritative bytes. + +Constructors enforce model validity. `check_packet` reports conformance findings; +`serialize_packet` rejects them and additionally checks representability. Received +warnings alone do not prevent encoding: Latin-1 input can become valid UTF-8. + +## Verification + +All 1,561 decode cases pass without skips or expected failures. Public JSON +projections and source assertions outside the projections are both checked, +including partial values recovered before a rejection. +All original packet bytes, semantic expectations, options and provenance have a +frozen integrity hash tied to PR #4's head commit. + +Every vector also has an encoding test. 1,294 occurrences encode and stabilize +through semantic decode/encode round trips with all raw evidence removed. The +other 267 have explicit refusal records: 181 malformed public packets and 86 +violations of the existing transmit-conformance rules. Those refusal tests assert +the reason; they are not broad exception catches or skipped tests. Three bad +NMEA checksums are repaired as part of the 1,294 successful encodings. diff --git a/packages/aprs/docs/UNRESOLVED_SPEC.md b/packages/aprs/docs/UNRESOLVED_SPEC.md index d5f7fc0..a237cfc 100644 --- a/packages/aprs/docs/UNRESOLVED_SPEC.md +++ b/packages/aprs/docs/UNRESOLVED_SPEC.md @@ -6,8 +6,8 @@ exist on the wire or contradict another field, and conformance rules report APRS limits that a transmitter could still break. Received packets keep conformance findings as diagnostics; `serialize_packet` refuses to send them. The questions below are deliberately not resolved by guessing values, inventing sensor observations, or treating interoperability examples as -normative specifications. Wire codecs remain unavailable for these families -unless [API_COVERAGE.md](API_COVERAGE.md) states otherwise. +normative specifications. Implemented layouts and selected receiver policies are documented in +[API_COVERAGE.md](API_COVERAGE.md). APRS101 page numbers below are printed page numbers. PDF viewer pages are ten higher. The [APRS 1.1 addendum](https://www.aprs.org/aprs11.html) evolves over time; @@ -52,7 +52,7 @@ fixes, but their keys remain required. Time, and the RMC date, remain required even for a void fix. No zero position, clock, date, talker ID or usable-fix flag is invented. GGA quality remains 0..8; newer mode fields are not represented. This is a limited model contract, not proof that absent times are prohibited by -every NMEA version. No NMEA wire codec exists. Unsupported sentences stay opaque. +every NMEA version. GGA/GLL/RMC/VTG/WPL codecs preserve these requirements. Unsupported sentences stay opaque. **What resolves it:** consult the versioned normative sentence tables and select the intended core and receiver extensions before changing omission semantics, @@ -72,12 +72,10 @@ describes date and variation, but a two-digit year does not identify a century. **Current behavior:** `VTG.speed_knots` and `speed_kmh_reported` remain separately reported observations; agreement is not enforced because numeric fields do not -retain the precision needed to compare rounded wire readings. They are not two -independent authoring sources for a future encoder. Calendar validation rejects +retain the precision needed to compare rounded wire readings. The encoder preserves both reported observations. Calendar validation rejects impossible dates, allowing February 29 in YY=00 without assigning a century. `checksum_valid` requires a supplied checksum, but is evidence about original -input, not certification of an edited sentence. No checksum is invented or -recomputed by the model. +input, not certification of an edited sentence. The model does not calculate checksums; the encoder recomputes a supplied checksum. **What resolves it:** define which speed is authoritative for composition and retain each received field's precision, or define an explicitly selected rounding @@ -92,7 +90,7 @@ allows sequence-only telemetry. The extension describes itself as experimental. **Current behavior:** conformance for `base91_comment` follows §3.7: a sequence in 0..8280 and at least one analog value are required. Digital data follows all five analog fields. Sequence-only data is unsupported by this model contract, not declared universally -malformed on receipt; there is no wire decoder for it. `compatibility` is an +malformed on receipt; the core decoder retains sequence-only blocks as comment text. `compatibility` is an explicitly unverified representation, not a named normative encoding. **What resolves it:** choose a versioned extension profile or obtain an author @@ -113,8 +111,7 @@ slot presence. There is no extra requirement for a numeric observation. A The later minimum flood example omits gust; proposed water units and examples disagree across the documents. `WaterHeight` consequently remains a signed -measurement with explicit feet/meters and optional external datum metadata; no -water-wire encoding is inferred. `disputed_knots_or_mph` explicitly records +measurement with explicit feet/meters and optional external datum metadata; the corpus selects F/f numeric feet/meters for core reports and the FAP adapter selects signed tenths of feet. `disputed_knots_or_mph` explicitly records unresolved velocity units and must not be converted without a selected profile. **What resolves it:** a chosen, cited water/flood profile and clarification of @@ -152,8 +149,7 @@ manual flag, bearing range and PHG radii are computed properties, so they cannot disagree with the codes. A single Q-to-accuracy or usability mapping is not imposed: the original notes omit Q=6 and differ from APRS101 at low Q values. `Bearing.usable` and accuracy remain reported -interpretations, not certified derivations. PHG rate-per-hour has no verified -extension authority here. Display half-radius is a documented display choice, +interpretations, not certified derivations. PHG rate-per-hour uses the explicit pinned FAP compatibility layout. Display half-radius is a documented display choice, not an independently transmitted observation. **What resolves it:** identify a versioned DF mapping and a primary specification @@ -192,19 +188,18 @@ contradictory overview's optional-timestamp wording. Semantic names exclude oute padding but do not impose every waypoint-friendly punctuation recommendation. Reply-ack is one `reply_ack` suffix on the message or acknowledgment ID, so the two cannot disagree; conformance checks that the combined field fits five -characters, and exact two-character halves are not forced. Obsolete object and -bulletin forms are not modeled as flags; they remain Opaque until a historical -profile defines them. +characters, and exact two-character halves are not forced. Truncated historical objects cannot construct the required public fields and +remain Malformed; no missing timestamp or position is invented. **What resolves it:** a documented compatibility profile for truncated kills, obsolete reports, stricter name conventions or shorter reply-ack halves. These choices must not weaken strict modern construction silently. -## Quantization and unimplemented codecs +## Quantization and wire precision Physical measurements and some derived fields can have more precision or a larger magnitude than a selected wire format can express. Current semantic -validation is not universal representability validation. Future encoders must +validation is not universal representability validation. Encoders must choose and document exact conversion, rounding, saturation-versus-rejection and field-budget rules. They must not round implicitly in constructors, truncate text, reuse stale raw evidence, or invent unavailable data. The original APRS101 widths diff --git a/packages/aprs/src/hamkit/aprs/_capabilities.py b/packages/aprs/src/hamkit/aprs/_capabilities.py index 08c114a..be6080c 100644 --- a/packages/aprs/src/hamkit/aprs/_capabilities.py +++ b/packages/aprs/src/hamkit/aprs/_capabilities.py @@ -3,8 +3,9 @@ # SPDX-License-Identifier: MIT """Discover codec availability without confusing model coverage with support.""" + from dataclasses import dataclass -from typing import Literal, TypeAlias +from typing import Literal, TypeAlias, cast from . import _models as m @@ -21,96 +22,149 @@ class CodecSupport: notes: str -_SUPPORT: tuple[CodecSupport, ...] = ( - CodecSupport( - m.Position, - "partial", - "partial", - "Uncompressed, unambiguous positions with course/speed, PHG, RNG, DFS, " - "DF bearing and /A= altitude. DAO, weather, storm, area, signpost and " - "base91 telemetry extensions are unsupported (Opaque).", - ), - CodecSupport( - m.Status, - "partial", - "partial", - "Text and DHM UTC timestamp; structured grid/symbol/beam are not encoded.", - ), - CodecSupport( - m.Message, - "partial", - "partial", - "Text, message ID and reply-ack; bulletins and other specialized messages " - "are separate families.", - ), - CodecSupport( - m.Acknowledgment, "implemented", "implemented", "ack/rej including reply-ack." - ), - CodecSupport( - m.MicE, - "unimplemented", - "unimplemented", - "Requires the packet header: the destination carries latitude and message bits.", - ), - CodecSupport( - m.ThirdParty, - "implemented", - "implemented", - "Bounded nesting; inner codec support still applies.", - ), - CodecSupport( - m.UserDefined, - "implemented", - "implemented", - "User ID/type and arbitrary binary data; no interpretation of user data.", - ), - CodecSupport( - m.Invalid, - "implemented", - "implemented", - "Explicit invalid/test DTI, never a trusted position.", - ), - CodecSupport( - m.Reserved, - "unimplemented", - "raw", - "Explicit DTI/data construction; decoding unknown DTIs returns Opaque.", - ), - CodecSupport( - m.Opaque, - "raw", - "raw", - "Unsupported content only; malformed input has a separate recovery result.", - ), - *( - CodecSupport( - model, - "unimplemented", - "unimplemented", - "Model and JSON only; the wire codec raises CodecNotImplementedError.", - ) - for model in ( +_SUPPORT: tuple[CodecSupport, ...] = tuple( + CodecSupport(model, cast(SupportLevel, decode), cast(SupportLevel, encode), notes) + for model, decode, encode, notes in ( + ( + m.Position, + "implemented", + "implemented", + "Uncompressed, ambiguous and compressed positions with structured extensions.", + ), + ( + m.MicE, + "implemented", + "implemented", + "Destination-dependent latitude/message; serialization requires a matching header.", + ), + ( + m.Status, + "implemented", + "implemented", + "Text, timestamp, grid/symbol and beam/ERP.", + ), + ( + m.Message, + "implemented", + "implemented", + "Message IDs and reply acknowledgments.", + ), + ( + m.Acknowledgment, + "implemented", + "implemented", + "ack/rej including reply-ack.", + ), + (m.ThirdParty, "implemented", "implemented", "Bounded nesting."), + ( + m.UserDefined, + "implemented", + "implemented", + "User ID/type and arbitrary data.", + ), + (m.Invalid, "implemented", "implemented", "Explicit invalid/test information."), + ( + m.Reserved, + "raw", + "raw", + "Unassigned DTIs decode as Opaque; explicit Reserved values can be composed.", + ), + ( + m.Opaque, + "raw", + "raw", + "Unknown information retained without invented semantics.", + ), + ( m.Object, + "implemented", + "implemented", + "Named live/killed objects, positions and extensions.", + ), + ( m.Item, + "implemented", + "implemented", + "Named live/killed items, positions and extensions.", + ), + ( m.Weather, + "implemented", + "implemented", + "Weather observations; absent and unavailable fields remain distinct.", + ), + ( m.Telemetry, + "implemented", + "implemented", + "Classic telemetry and context-specific extension encodings.", + ), + ( m.TelemetryDefinition, + "implemented", + "implemented", + "PARM, UNIT, EQNS and BITS definitions.", + ), + ( m.AutoAnswer, + "implemented", + "implemented", + "Automatic answers with previous acknowledgment.", + ), + ( m.Bulletin, + "implemented", + "implemented", + "Bulletins, announcements and groups.", + ), + ( m.NWSBulletin, - m.Radiogram, + "implemented", + "implemented", + "NWS bulletins with reference IDs.", + ), + (m.Radiogram, "implemented", "implemented", "NTS records."), + ( m.Query, + "implemented", + "implemented", + "General/directed queries, footprints and operands.", + ), + ( m.Response, - m.Capabilities, + "implemented", + "implemented", + "Direct stations, hourly heard counts and trace headers.", + ), + (m.Capabilities, "implemented", "implemented", "Ordered capability tokens."), + ( m.NMEA, + "implemented", + "implemented", + "GGA, GLL, RMC, VTG and WPL; checksum recomputed on send.", + ), + ( m.RawWeather, - m.Agrelo, - m.Maidenhead, + "partial", + "raw", + "Vendor information authoritative; Ultimeter 2000 numeric fields decoded.", + ), + (m.Agrelo, "implemented", "implemented", "Bearing and quality."), + (m.Maidenhead, "implemented", "implemented", "Historical grid beacons."), + ( m.LegacyPosition, - m.Beacon, + "implemented", + "implemented", + "X1J prefix with position within the first forty bytes.", + ), + (m.Beacon, "implemented", "implemented", "Recognized non-APRS beacons."), + ( m.ExternalExtension, - ) - ), + "raw", + "raw", + "Explicit extension bytes; no invented external grammar.", + ), + ) ) diff --git a/packages/aprs/src/hamkit/aprs/_codec.py b/packages/aprs/src/hamkit/aprs/_codec.py index 455e55b..6fa3739 100644 --- a/packages/aprs/src/hamkit/aprs/_codec.py +++ b/packages/aprs/src/hamkit/aprs/_codec.py @@ -3,13 +3,16 @@ # SPDX-License-Identifier: MIT """Pure TNC2 parsing/composition; no AX.25, KISS, networking or radio I/O.""" + from __future__ import annotations import re -from dataclasses import dataclass +from dataclasses import dataclass, replace from typing import get_args -from . import _extensions +from . import _data as d +from . import _extensions, _messages +from . import _models as m from ._capabilities import codec_support_for from ._conformance import check from ._data import Symbol, Timestamp @@ -25,7 +28,6 @@ from ._fields import ( decode_coordinate, decode_timestamp, - encode_coordinate, encode_timestamp, ) from ._fields.position import CoordinateAxis @@ -45,7 +47,6 @@ Payload, Position, Reserved, - Status, ThirdParty, UnsupportedPolicy, UserDefined, @@ -141,7 +142,9 @@ def _decode_payload( if dti in (b"`", b"'", b"\x1c", b"\x1d"): if header is None: raise ContextRequiredError("Mic-E decoding requires header=Header(...)") - raise CodecNotImplementedError("Mic-E destination and information decoding") + from . import _mic_e + + return _mic_e.read(information, header, diagnostics) if dti == b"}": if depth >= options.max_depth: raise ResourceLimitError("third-party nesting limit reached") @@ -157,16 +160,101 @@ def _decode_payload( if dti == b",": return Invalid(body) if information.startswith((b"!!", b"$ULTW", b"#", b"*")): - raise CodecNotImplementedError("vendor raw-weather interpretation") + from . import _weather + + return m.RawWeather( + ( + "ultimeter_2000" + if information.startswith((b"!!", b"$ULTW")) + else "ultimeter_ii" + ), + information, + weather=_weather.vendor(information), + ) if dti in (b"!", b"=", b"/", b"@"): return _decode_position(dti, body, diagnostics) if dti == b">": - timestamp = None - if len(body) >= 7 and body[:6].isdigit() and body[6:7] == b"z": - timestamp, body = _timestamp(body[:7]), body[7:] - return Status(free_text(body, "$.text", diagnostics), timestamp=timestamp) + return _messages.status(body, diagnostics) + if dti == b"?": + return _messages.query(information) + if dti == b"<": + tokens = [] + for part in token(body, "$.tokens").split(","): + name, sep, value = part.partition("=") + tokens.append(d.Capability(name, value if sep else None)) + return m.Capabilities(tuple(tokens)) + if information.startswith(b"T#"): + return _messages.telemetry(information, diagnostics) + if dti == b"_": + from . import _weather + + return _weather.read(body, diagnostics=diagnostics)[0] + if dti == b";": + if len(body) < 17 or body[9:10] not in (b"*", b"_"): + raise FieldError("invalid object name or alive marker") + name = token(body[:9], "$.name").rstrip() + position = _decode_position(b"/", body[10:], diagnostics) + assert position.timestamp is not None + return m.Object( + name, + position.latitude_deg, + position.longitude_deg, + position.symbol, + timestamp=position.timestamp, + alive=body[9:10] == b"*", + comment=position.comment, + ambiguity=position.ambiguity, + compression=position.compression, + extensions=position.extensions, + ) + if dti == b")": + match = re.match(rb"([^!_]{1,9})([!_])(.*)", body, re.DOTALL) + if not match: + raise FieldError("invalid item name or marker") + position = _decode_position(b"!", match[3], diagnostics) + return m.Item( + token(match[1], "$.name"), + position.latitude_deg, + position.longitude_deg, + position.symbol, + alive=match[2] == b"!", + comment=position.comment, + ambiguity=position.ambiguity, + compression=position.compression, + extensions=position.extensions, + ) + if dti == b"$": + from . import _nmea_codec + + return _nmea_codec.read(information, header, diagnostics) + if dti == b"[": + match = re.match(rb"([A-Ra-r]{2}\d{2}(?:[A-Xa-x]{2})?)(.*)", body, re.DOTALL) + if not match: + raise FieldError("invalid Maidenhead locator") + return m.Maidenhead( + d.Grid(match[1].decode().upper()), + comment=free_text(match[2], "$.comment", diagnostics), + ) + if dti == b"%": + match = re.fullmatch(rb"%(\d{3})/(\d)", information) + if match: + return m.Agrelo(int(match[1]), int(match[2]), raw=information) if dti == b":": return _decode_message(body, diagnostics) + offset = information.find(b"!") + if 0 < offset < 40: + return m.LegacyPosition( + information[:offset], + _decode_position(b"!", information[offset + 1 :], diagnostics), + ) + if ( + header is not None + and header.destination.split("-")[0] in ("BEACON", "ID", "UIDIGI", "CQ") + or len(information) > 1 + and information[:1].isalpha() + and b" " in information + ): + return m.Beacon(free_text(information, "$.text", diagnostics)) raise CodecNotImplementedError("unsupported information field family") @@ -176,34 +264,63 @@ def _decode_position( timestamp = None if dti in (b"/", b"@"): timestamp, body = _timestamp(body[:7]), body[7:] - if body and body[:1] in b"/\\ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghij": - raise CodecNotImplementedError("compressed positions") - # Compressed numeric overlays can start with a digit, but not a DDMM. field. - if ( - len(body) >= 5 - and body[4:5] != b"." - and body[:1] in b"0123456789" - and body[7:8] not in (b"N", b"S") - and body[17:18] not in (b"E", b"W") - ): - raise CodecNotImplementedError("compressed or unsupported position format") + from . import _position_codec as pc + + compressed = bool( + body + and ( + body[:1] in b"/\\ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghij" + or (len(body) >= 13 and body[4:5] != b"." and body[7:8] not in (b"N", b"S")) + ) + ) + if compressed: + latitude, longitude, symbol, compression, primary, rest = pc.compressed(body) + if body[10] != 32 and body[12] - 33 >= 64: + diagnostics.append( + Diagnostic( + "nonconforming", "reserved compression type bit", "$.compression" + ) + ) + extensions, rest = _extensions.read(rest, symbol) + for name in ("motion", "altitude", "range"): + value = getattr(primary, name) + if value is not None: + extensions = replace(extensions, **{name: value}) + if symbol.code in "_W" and primary.motion is not None: + weather = extensions.weather or d.Weather() + weather = replace( + weather, + wind_direction=d.Measurement(primary.motion.course_deg, "degrees"), + wind_speed=d.Measurement(primary.motion.speed_knots, "knots"), + ) + extensions = replace(extensions, motion=None, weather=weather) + return Position( + pc.dao_offset(latitude, extensions.dao, "latitude"), + pc.dao_offset(longitude, extensions.dao, "longitude"), + symbol, + compression=compression, + extensions=extensions, + timestamp=timestamp, + messaging=dti in (b"=", b"@"), + comment=free_text(rest, "$.comment", diagnostics), + ) if len(body) < 19: raise ModelError("$", "truncated uncompressed position") - latitude = _coordinate(body[:8], "latitude") - longitude = _coordinate(body[9:18], "longitude") + latitude, longitude, ambiguity = pc.coordinates(body[:8], body[9:18]) try: symbol = Symbol(chr(body[8]), chr(body[18])) except ModelError as exc: raise ModelError("$.symbol" + exc.path[1:], exc.message) from exc extensions, rest = _extensions.read(body[19:], symbol) return Position( - latitude, - longitude, + pc.dao_offset(latitude, extensions.dao, "latitude"), + pc.dao_offset(longitude, extensions.dao, "longitude"), symbol, comment=free_text(rest, "$.comment", diagnostics), messaging=dti in (b"=", b"@"), timestamp=timestamp, extensions=extensions, + ambiguity=ambiguity, ) @@ -215,7 +332,9 @@ def _decode_message(body: bytes, diagnostics: list[Diagnostic]) -> Payload: address = token(body[:9], "$.addressee").rstrip(" ") body = body[10:] if _special_message(address, body): - raise CodecNotImplementedError("specialized message semantics") + special = _messages.specialized(address, body, diagnostics) + if special is not None: + return special ack = _ACK.fullmatch(body) if ack: return Acknowledgment( @@ -230,6 +349,10 @@ def _decode_message(body: bytes, diagnostics: list[Diagnostic]) -> Payload: number, brace, ack_part = identifier.partition(b"}") message_id = token(number, "$.message_id") reply_ack = token(ack_part, "$.reply_ack") if brace else None + if not separator: + response = _messages.response(address, text) + if response is not None: + return response return Message( address, free_text(text, "$.text", diagnostics), @@ -297,6 +420,10 @@ def address(path: str, raw_token: bytes) -> str | None: if not separator: issue("$.payload", "missing information separator") + if envelope.count(b">") > 1 and b"," not in envelope: + parts = envelope.split(b">") + if all(parts): + envelope = parts[0] + b">" + parts[-1] + b"," + b",".join(parts[1:-1]) source, arrow, route = envelope.partition(b">") if not arrow: issue("$.header", "missing source separator") @@ -416,10 +543,69 @@ def _encode_payload( payload: Payload, header: Header | None, max_depth: int, depth: int ) -> bytes: """Construct an information field from validated, conforming values.""" + application = _messages.write(payload) + if application is not None: + return application + if isinstance(payload, m.Weather): + from . import _weather + + return _weather.write(payload) + if isinstance(payload, (m.Object, m.Item)): + p = payload + position = Position( + p.latitude_deg, + p.longitude_deg, + p.symbol, + comment=p.comment, + ambiguity=p.ambiguity, + compression=p.compression, + extensions=p.extensions, + ) + raw = _encode_payload(position, header, max_depth, depth)[1:] + if isinstance(p, m.Object): + return ( + b";" + + p.name.ljust(9).encode() + + (b"*" if p.alive else b"_") + + encode_timestamp(p.timestamp) + + raw + ) + return b")" + p.name.encode() + (b"!" if p.alive else b"_") + raw + if isinstance(payload, m.NMEA): + from . import _nmea_codec + + if payload.symbol is not None and payload.symbol != _nmea_codec.header_symbol( + header + ): + raise FieldError("NMEA symbol does not match the packet header") + return _nmea_codec.write(payload) + if isinstance(payload, (m.RawWeather, m.ExternalExtension)): + return payload.information + if isinstance(payload, m.Agrelo): + return b"%%%03d/%d" % (round(payload.bearing_deg), payload.quality_code) + if isinstance(payload, m.Maidenhead): + return ( + b"[" + + payload.grid.locator.encode() + + ( + payload.symbol.table_id.encode() + payload.symbol.code.encode() + if payload.symbol + else b"" + ) + + payload.comment.encode() + ) + if isinstance(payload, m.Beacon): + return payload.text.encode() + if isinstance(payload, m.LegacyPosition): + return payload.prefix + _encode_payload( + payload.position, header, max_depth, depth + ) if isinstance(payload, MicE): if header is None: raise ContextRequiredError("Mic-E encoding needs the packet header") - raise CodecNotImplementedError("Mic-E joint destination/information encoding") + from . import _mic_e + + return _mic_e.write(payload, header) if isinstance(payload, ThirdParty): if depth >= max_depth: raise ResourceLimitError("third-party nesting limit reached") @@ -433,8 +619,6 @@ def _encode_payload( if isinstance(payload, Opaque): return payload.information if isinstance(payload, Position): - if payload.compression is not None or payload.ambiguity: - raise CodecNotImplementedError("compressed or ambiguous position encoding") raw = ( (b"@" if payload.messaging else b"/") if payload.timestamp @@ -442,23 +626,36 @@ def _encode_payload( ) if payload.timestamp is not None: raw += encode_timestamp(payload.timestamp) + from . import _position_codec as pc + symbol = payload.symbol + extensions = payload.extensions + payload = replace( + payload, + latitude_deg=pc.dao_offset( + payload.latitude_deg, extensions.dao, "latitude", -1 + ), + longitude_deg=pc.dao_offset( + payload.longitude_deg, extensions.dao, "longitude", -1 + ), + ) + if payload.compression is not None: + position_wire, extensions = pc.compressed_bytes(payload) + else: + position_wire = ( + pc.coordinate_bytes(payload.latitude_deg, "latitude", payload.ambiguity) + + symbol.table_id.encode() + + pc.coordinate_bytes( + payload.longitude_deg, "longitude", payload.ambiguity + ) + + symbol.code.encode() + ) return ( raw - + encode_coordinate(payload.latitude_deg, "latitude") - + symbol.table_id.encode("ascii") - + encode_coordinate(payload.longitude_deg, "longitude") - + symbol.code.encode("ascii") - + _extensions.write(payload.extensions, symbol) + + position_wire + + _extensions.write(extensions, symbol) + payload.comment.encode("utf-8") ) - if isinstance(payload, Status): - if payload.grid is not None or payload.beam is not None: - raise CodecNotImplementedError("structured status grid/symbol/beam") - raw = b">" - if payload.timestamp is not None: - raw += encode_timestamp(payload.timestamp) - return raw + payload.text.encode("utf-8") if isinstance(payload, (Message, Acknowledgment)): raw = b":" + payload.addressee.ljust(9).encode("ascii") + b":" reply = b"" if payload.reply_ack is None else b"}" + payload.reply_ack.encode() @@ -468,6 +665,13 @@ def _encode_payload( verb = b"rej" if payload.rejected else b"ack" return raw + verb + payload.message_id.encode("ascii") + reply body = payload.text.encode("utf-8") + if ( + payload.message_id is None + and _messages.response(payload.addressee, body) is not None + ): + raise FieldError( + "message text would be interpreted as a query response; use Response" + ) if _special_message(payload.addressee, body): raise CodecNotImplementedError("specialized message") if payload.message_id is not None: diff --git a/packages/aprs/src/hamkit/aprs/_compatibility.py b/packages/aprs/src/hamkit/aprs/_compatibility.py new file mode 100644 index 0000000..f7eb623 --- /dev/null +++ b/packages/aprs/src/hamkit/aprs/_compatibility.py @@ -0,0 +1,760 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Private compatibility views for historical receiver policies. + +The public codec remains loss-conscious and profile-independent. These adapters +express the corpus's older receiver conventions without changing public models, +rewriting archived packets, or consulting expected fixture values. +""" + +from __future__ import annotations + +import re +from dataclasses import replace +from typing import Any + +from . import _data as d +from . import _extensions, _messages, _mic_e +from . import _models as m +from ._codec import parse_packet, parse_payload +from ._errors import APRSError +from ._json import to_json_dict + + +def _relaxed_telemetry(raw: bytes) -> d.Telemetry: + parts = raw[2:].split(b",") + if len(parts) < 2 or not parts[0].isdigit(): + raise ValueError("invalid telemetry sequence") + values: list[float | None] = [None] * 5 + for i, v in enumerate(parts[1:6]): + v = v.strip() + if not v: + continue + if not re.fullmatch(rb"-?(?:\d*\.)?\d+", v): + if v == b"-" or v.endswith(b"."): + raise ValueError("invalid telemetry value") + break + values[i] = float(v) + bits = parts[6].strip()[:8] if len(parts) > 6 else b"" + digital = tuple(c == 49 for c in bits) if re.fullmatch(rb"[01]{8}", bits) else () + return d.Telemetry( + tuple(values), digital, sequence=int(parts[0]), encoding="compatibility" + ) + + +def _mic_e_compat(raw: bytes, header: m.Header, broken: bool): + body = raw[1:] + mangled = False + if ( + broken + and len(body) >= 7 + and body[6:7] in (b"/", b"\\") + and body[7:8] not in (b"/", b"\\") + ): + body = body[:5] + b" " + body[5:] + mangled = True + # The old receiver reads comment telemetry before DAO and accepts a + # short apostrophe hex block as channels 1 and 3. + tail = body[8:] + extra, tail = _extensions.read(tail, d.Symbol(chr(body[7]), chr(body[6]))) + altitude = None + match = re.search(rb"([!-{]{3})\}", tail) + if match: + from ._position_codec import base91 + + altitude = d.Altitude( + d.Measurement(base91(match[1]) - 10000, "meters"), "mic_e" + ) + tail = tail[: match.start()] + tail[match.end() :] + telemetry = extra.telemetry + match = re.match(rb"'([0-9A-Fa-f]{10}|[0-9A-Fa-f]{4})", tail) + short = False + if match: + values = tuple(bytes.fromhex(match[1].decode())) + short = len(values) == 2 + if short: + values = (values[0], 0, values[1]) + telemetry = d.Telemetry(values, encoding="compatibility") + tail = tail[match.end() :].lstrip(b" ") + base = _mic_e.read(raw[:1] + body[:8], header, []) + e = replace( + extra, + motion=None if mangled else base.extensions.motion, + altitude=altitude or extra.altitude, + telemetry=telemetry, + ) + from ._position_codec import dao_offset + + p = replace( + base, + extensions=e, + latitude_deg=dao_offset(base.latitude_deg, e.dao, "latitude"), + longitude_deg=dao_offset(base.longitude_deg, e.dao, "longitude"), + comment=tail.decode("utf8", errors="replace"), + ) + return p, mangled, short + + +def _weather_view(w: dict[str, Any]) -> dict[str, Any]: + w = dict(w) + for name in ( + "wind_speed", + "gust", + "temperature", + "rain_1h", + "rain_24h", + "rain_since_midnight", + "snow_24h", + ): + reading = w.get(name) + if reading is None: + continue + reading = dict(reading) + v = reading["value"] + unit = reading["unit"] + if name in ("wind_speed", "gust"): + if unit in ("mph", "disputed_knots_or_mph"): + factor = 0.44704 + elif unit == "knots": + factor = 1852 / 3600 + elif unit == "km/h": + factor = 1 / 3.6 + else: + factor = 1 + reading.update(value=None if v is None else v * factor, unit="m/s") + elif name == "temperature" and unit == "fahrenheit": + reading.update(value=None if v is None else (v - 32) / 1.8, unit="celsius") + elif unit == "inches": + reading.update(value=None if v is None else v * 25.4, unit="mm") + w[name] = reading + return w + + +def _receiver_rejects(raw: bytes, p: m.Packet | m.Malformed, options: dict) -> bool: + envelope, sep, body = raw.partition(b":") + source, arrow, route = envelope.partition(b">") + fields = route.split(b",") + if not sep or not arrow or not re.fullmatch(rb"[A-Za-z0-9-]{1,9}", source): + return True + if not re.fullmatch(rb"[A-Za-z0-9]{1,6}(?:-(?:[0-9]|1[0-5]))?", fields[0]): + return True + seen_q = False + for hop in fields[1:]: + hop = hop.removesuffix(b"*") + if re.fullmatch(rb"q[A-Z][A-Z]", hop): + seen_q = True + if not re.fullmatch(rb"[A-Za-z0-9-]{1,9}", hop) and not ( + seen_q and re.fullmatch(rb"[A-Za-z0-9-]+", hop) + ): + return True + if body.startswith((b"{", b"$GPVTG")): + return True + if ( + isinstance(p, m.Packet) + and isinstance(p.payload, m.NMEA) + and p.payload.position_usable is False + ): + return True + if isinstance(p, m.Malformed): + return True + if isinstance(p.payload, m.Beacon) and body[:1] not in (b" ", b"h", b"U"): + return True + if options.get("ax25") and any( + x.code == "nonconforming" and ".header" in x.path for x in p.diagnostics + ): + return True + return isinstance(p.payload, m.Opaque) + + +def view( + raw: bytes, profile: str, options: dict | None = None +) -> tuple[dict[str, Any], bool]: + options = options or {} + packet = parse_packet( + raw, + profile=( + "rf" if profile == "strict-envelope" or options.get("ax25") else "monitor" + ), + ) + result: dict[str, Any] = to_json_dict(packet, include_defaults=True) + rejected = ( + isinstance(packet, m.Malformed) + or isinstance(packet, m.Packet) + and any(x.code == "nonconforming" for x in packet.diagnostics) + ) + if profile != "compatibility-fap": + if ( + isinstance(packet, m.Packet) + and isinstance(packet.payload, m.LegacyPosition) + and profile != "historical-1.0" + ): + result["payload"] = to_json_dict( + m.Beacon(raw.partition(b":")[2].decode("latin1")), include_defaults=True + ) + if ( + isinstance(packet, m.Packet) + and isinstance(packet.payload, m.LegacyPosition) + and profile == "historical-1.0" + ): + result["payload"] = to_json_dict( + packet.payload.position, include_defaults=True + ) + return result, rejected + _envelope, _, body = raw.partition(b":") + header = packet.header + if header is None: + return result, True + payload: m.Payload | m.Malformed | None = ( + packet.payload if isinstance(packet, m.Packet) else None + ) + short = False + try: + if body[:1] in (b"`", b"'"): + payload, _mangled, short = _mic_e_compat( + body, header, options.get("accept_broken_mice", False) + ) + elif body.startswith(b"T#"): + payload = _relaxed_telemetry(body) + elif body[:1] == b":" and body[11:16].upper() in ( + b"PARM.", + b"UNIT.", + b"EQNS.", + b"BITS.", + ): + payload = _messages.definition( + body[1:10].decode().rstrip(), body[11:16].upper() + body[16:] + ) + elif isinstance(packet, m.Malformed) and ( + body[:1] in (b"@", b"/", b">") + and body[1:8] == b"000000z" + or body[:1] == b";" + and body[10:11] in (b"*", b"_") + and body[11:18] == b"000000z" + ): + # Invalid timestamps are warnings in FAP; decode the intact fields. + if body[:1] in (b"@", b"/"): + payload = parse_payload((b"=" if body[:1] == b"@" else b"!") + body[8:]) + elif body[:1] == b">": + payload = _messages.status(body[8:], []) + elif body[:1] == b";": + position = parse_payload(b"!" + body[18:]) + if isinstance(position, m.Position): + data = to_json_dict(position, include_defaults=True) + data.update( + type="object", + name=body[1:10].decode().rstrip(), + alive=body[10:11] == b"*", + ) + data.pop("messaging", None) + result = { + "type": "packet", + "header": to_json_dict(header, include_defaults=True), + "payload": data, + "original_wire": raw.decode("latin1"), + } + payload = None + elif isinstance(packet, m.Malformed) and body.startswith(b"$GPGLL,"): + from ._nmea_codec import _coordinates + + values = body.split(b",")[1:] + if len(values) == 4: + coords = _coordinates([v.decode() for v in values]) + assert coords is not None + result = { + "type": "packet", + "header": to_json_dict(header, include_defaults=True), + "payload": { + "type": "nmea", + "sentence": { + "type": "gll", + "coordinates": to_json_dict(coords), + }, + }, + "original_wire": raw.decode("latin1"), + } + payload = None + except (APRSError, ValueError, IndexError): + return result, True + if isinstance(payload, m.Malformed): + return result, True + if payload is not None: + result = { + "type": "packet", + "header": to_json_dict(header, include_defaults=True), + "payload": to_json_dict(payload, include_defaults=True), + "original_wire": raw.decode("latin1"), + } + if result.get("type") != "packet": + return result, True + p = result.get("payload", {}) + if p.get("type") == "legacy_position": + p = result["payload"] = p["position"] + p["type"] = "position" + if p.get("type") == "raw_weather" and p.get("weather"): + p = result["payload"] = p["weather"] + p["type"] = "weather" + if p.get("type") == "nmea": + p["symbol"] = None + if p["sentence"].get("course_deg") is not None: + p["sentence"]["course_deg"] = round(p["sentence"]["course_deg"]) + if p.get("type") == "mic_e": + if short: + assert ( + isinstance(payload, m.MicE) and payload.extensions.telemetry is not None + ) + p["extensions"]["telemetry"]["analog"] = list( + payload.extensions.telemetry.analog + ) + if ( + p.get("extensions", {}).get("telemetry") + and p["extensions"]["telemetry"].get("sequence") is None + ): + p["extensions"]["telemetry"]["sequence"] = 0 + if p.get("type") == "telemetry": + p["comment"] = "" + if "comment" in p: + p["comment"] = p["comment"].strip() + if p.get("extensions", {}).get("phg"): + p["comment"] = re.sub(r"^[A-Za-z]?/", "", p["comment"]).strip() + if p.get("type") == "object": + p["name"] = p["name"].rstrip() + if p.get("extensions", {}).get("telemetry"): + t = p["extensions"]["telemetry"] + if t.get("encoding") == "base91_comment": + t["analog"] += [None] * (5 - len(t["analog"])) + compression = p.get("compression") + if compression: + motion = p.get("extensions", {}).get("motion") + if motion and motion.get("course_deg") == 0: + motion["course_deg"] = 360 + weather = ( + p if p.get("type") == "weather" else p.get("extensions", {}).get("weather") + ) + if weather is not None: + code = (weather.get("software_code") or "") + (weather.get("device_code") or "") + if re.fullmatch(r"[XV]\d{3}", code): + weather["software_code"] = weather["device_code"] = None + tail = p.get("comment", "") + while tail: + match = re.match(r"(Os|[LFXV])([. ]{3,4}|-?\d+(?:\.\d+)?)", tail) + if not match: + break + tag, field = match.groups() + if tag == "Os": + weather["snow_24h"] = { + "value": None if field.strip(". ") == "" else float(field) * 0.01, + "unit": "inches", + } + elif tag == "L": + weather["luminosity"] = { + "value": None if field.strip(". ") == "" else float(field), + "unit": "W/m2", + } + tail = tail[match.end() :] + if re.fullmatch(r"[A-Za-z][A-Za-z0-9]{2,4}", tail): + weather["software_code"], weather["device_code"] = tail[0], tail[1:] + tail = "" + if tail != p.get("comment", ""): + p["comment"] = tail + if p.get("type") == "weather": + weather["comment"] = tail + converted = _weather_view(weather) + if p.get("type") == "weather": + result["payload"] = converted + else: + p["extensions"]["weather"] = converted + if compression: + wind = weather.get("wind_direction") + speed = weather.get("wind_speed") + p["extensions"]["motion"] = ( + {"course_deg": wind["value"], "speed_knots": speed["value"]} + if wind and speed + else None + ) + converted["wind_direction"] = converted["wind_speed"] = None + if ( + isinstance(payload, m.Position) + and payload.symbol.code == "_" + and payload.extensions.weather is None + ): + p["extensions"]["weather"] = {} + p["comment"] = "" + result["header"]["destination"] = result["header"]["destination"].upper() + if options.get("ax25"): + result["header"]["source"] = result["header"]["source"].upper() + rejected = _receiver_rejects(raw, packet, options) + if result.get("type") == "packet" and isinstance(packet, m.Malformed): + rejected = False + return result, rejected + + +def facts(raw: bytes, options: dict | None = None) -> dict[str, Any]: + """Historical receiver facts not represented as stored public-model fields. + + These include display resolution, raw timestamps, and optional vendor sensors. + Kept separate so a receiver policy cannot alter the public JSON contract. + """ + options = options or {} + projected, _ = view(raw, "compatibility-fap", options) + p = projected.get("payload", {}) + packet = parse_packet(raw) + body = raw.partition(b":")[2] + ext = p.get("extensions", {}) + comp = p.get("compression") + dao = ext.get("dao") + sym = p.get("symbol") or {} + result = { + "Capabilities": None, + "ChecksumOK": None, + "DaoDatumByte": ( + dao["datum_byte"].upper() if dao and dao.get("encoding") else None + ), + "GPSFixStatus": None, + "MBits": "", + "MiceMangled": False, + "ObjectName": p.get("name", "") if p.get("type") == "object" else "", + "ItemName": p.get("name", "") if p.get("type") == "item" else "", + "PosResolution": None, + "RawTimestamp": "", + "Warnings": None, + "PosAmbiguity": ( + p.get("ambiguity") if "latitude_deg" in p and comp is None else None + ), + "SymbolCode": sym.get("code"), + } + if p.get("type") == "capabilities": + result["Capabilities"] = {t["name"]: t["value"] or "" for t in p["tokens"]} + if "latitude_deg" in p: + result["PosResolution"] = ( + 0.291 + if comp + else (18.52, 185.2, 1852, 18520, 111120)[p.get("ambiguity", 0)] + ) + if comp and not comp["ignored"]: + result["GPSFixStatus"] = int(comp["fix"] == "current") + if dao and dao.get("encoding"): + result["PosResolution"] = 1.852 if dao["encoding"] == "decimal" else 0.1852 + if body[:1] in (b"`", b"'"): + assert packet.header is not None + dest = packet.header.destination.split("-")[0] + result["MBits"] = "".join( + "1" if "A" <= c <= "K" or "P" <= c <= "Z" else "0" for c in dest[:3] + ) + _, result["MiceMangled"], _ = _mic_e_compat( + body, packet.header, options.get("accept_broken_mice", False) + ) + if options.get("raw_timestamp") and body[:1] in (b"/", b"@"): + result["RawTimestamp"] = body[1:7].decode() + if (body[:1] in (b"/", b"@", b">") and body[1:8] == b"000000z") or ( + body[:1] == b";" and body[11:18] == b"000000z" + ): + result["Warnings"] = [ + { + "Code": "timestamp_inv", + "Msg": "invalid " + + ("object " if body[:1] == b";" else "") + + "timestamp: invalid day: 00", + } + ] + if isinstance(packet, m.Packet) and isinstance(packet.payload, m.NMEA): + n = packet.payload + result["ChecksumOK"] = n.metadata.checksum_valid + fields = n.metadata.fields_raw + from . import _nmea as sentences + + if isinstance(n.sentence, sentences.RMC): + indices = (2, 4) + elif isinstance(n.sentence, sentences.GGA): + indices = (1, 3) + else: + indices = (0, 2) + result["PosResolution"] = max( + 1852 * 10 ** (-len(fields[i].partition(b".")[2])) for i in indices + ) + if isinstance(n.sentence, sentences.RMC) and not options.get("raw_timestamp"): + date = n.sentence.date_ddmmyy + time = n.sentence.time_utc + # The historical receiver uses the conventional 1980 pivot. + year = int(date[4:6]) + year += 1900 if year >= 80 else 2000 + result[ + "Timestamp" + ] = f"{year:04d}-{date[2:4]}-{date[:2]}T{time[:2]}:{time[2:4]}:{time[4:6]}Z" + elif body.startswith(b"$GPGLL,"): + fields = tuple(body.split(b",")[1:]) + result["PosResolution"] = max( + 1852 * 10 ** (-len(fields[i].partition(b".")[2])) for i in (0, 2) + ) + if body.startswith(b":"): + content = body[11:] + result["Message"] = { + "RejID": content[3:].decode() if content.startswith(b"rej") else "" + } + wx = p if p.get("type") == "weather" else ext.get("weather") + if wx is not None: + extra = { + "BatteryVoltage": None, + "HumidityIn": None, + "Radiation": None, + "Software": (wx.get("software_code") or "") + (wx.get("device_code") or ""), + "TempIn": None, + "WaterLevel": None, + } + match = ( + re.search(rb"F(-?\d{3,4})(?![\d.])", body) + if not body.startswith((b"$ULTW", b"!!")) + else None + ) + if match: + extra["WaterLevel"] = int(match[1]) * 0.03048 + match = re.search(rb"X(\d{3})", body) + if match: + code = int(match[1]) + extra["Radiation"] = (code // 10) * 10 ** (code % 10) + match = re.search(rb"V(\d{3})", body) + if match: + extra["BatteryVoltage"] = int(match[1]) / 10 + if body.startswith(b"!!"): + fields = tuple(body[i : i + 4] for i in range(2, len(body), 4)) + if len(fields) > 5 and re.fullmatch(rb"[0-9A-Fa-f]{4}", fields[5]): + value = int(fields[5], 16) + value = value - 65536 if value >= 32768 else value + extra["TempIn"] = round((value / 10 - 32) / 1.8, 1) + if len(fields) > 7 and re.fullmatch(rb"[0-9A-Fa-f]{4}", fields[7]): + value = int(fields[7], 16) // 10 + if 1 <= value <= 100: + extra["HumidityIn"] = value + result["Wx"] = extra + return result + + +def rejected_facts(raw: bytes, options: dict | None = None) -> dict[str, Any]: + """Recover the historical receiver's facts up to its rejecting field. + + Unlike the public Malformed recovery, this view follows the old receiver's + validation order. It preserves useful partial observations without making a + partially valid public dataclass or inventing missing fields. + """ + from datetime import datetime + from functools import reduce + from operator import xor + + from . import _position_codec as pc + from ._fields.position import decode_coordinate + from ._nmea_codec import _coordinate + + options = options or {} + h: dict[str, Any] = {"source": "", "destination": "", "digipeaters": None} + f: dict[str, Any] = { + key: None + for key in ( + "Latitude", + "Longitude", + "PosAmbiguity", + "PosResolution", + "SymbolTable", + "SymbolCode", + "Speed", + "Course", + "Altitude", + "Messaging", + "RadioRange", + "Alive", + "Message", + "Wx", + "TelemetryData", + "Capabilities", + "DaoDatumByte", + "GPSFixStatus", + "ChecksumOK", + "Warnings", + ) + } + f.update( + { + key: "" + for key in ( + "Type", + "Format", + "PHG", + "RawTimestamp", + "ObjectName", + "ItemName", + "Status", + "MBits", + "Comment", + ) + } + ) + f["MiceMangled"] = False + result = {"fap_header": h, "fap_fields": f} + envelope, colon, body = raw.partition(b":") + source, arrow, route = envelope.partition(b">") + if not colon or not arrow: + return result + h["source"] = source.decode("latin1") + ax25 = rb"[A-Z0-9]{1,6}(?:-(?:[0-9]|1[0-5]))?" + if not re.fullmatch(ax25 if options.get("ax25") else rb"[A-Za-z0-9-]{1,9}", source): + return result + fields = route.split(b",") + if options.get("ax25") and len(fields) > 9: + return result + if not re.fullmatch(ax25, fields[0].upper()): + return result + h["destination"] = fields[0].decode().upper() + hops = [] + seen_q = False + for field in fields[1:]: + call = field.removesuffix(b"*") + if not call: + return result + if re.fullmatch(rb"q[A-Z][A-Za-z]", call): + seen_q = True + pattern = ( + ax25 + if options.get("ax25") + else rb"[A-Za-z0-9-]+" + if seen_q + else rb"[A-Za-z0-9-]{1,9}" + ) + if not re.fullmatch(pattern, call): + return result + hops.append({"Call": call.decode(), "WasDigied": field.endswith(b"*")}) + h["digipeaters"] = hops + if not body: + return result + header = m.Header(h["source"], h["destination"]) + if body.startswith(b"$"): + f.update(Type="location", Format="nmea") + if not body.startswith(b"$GP"): + return result + data, star, checksum = body.rstrip().partition(b"*") + if star and re.fullmatch(rb"[0-9A-Fa-f]{2}", checksum): + if reduce(xor, data[1:], 0) != int(checksum, 16): + return result + f["ChecksumOK"] = True + fields = data.split(b",") + kind = fields[0] + if kind not in (b"$GPRMC", b"$GPGGA", b"$GPGLL"): + return result + required = {b"$GPRMC": 10, b"$GPGGA": 15, b"$GPGLL": 5}[kind] + if len(fields) < required: + return result + if kind == b"$GPRMC": + if fields[2] != b"A": + return result + time = fields[1].partition(b".")[0] + date = fields[9] + if not re.fullmatch(rb"\d{6}", time) or not re.fullmatch(rb"\d{6}", date): + return result + year = int(date[4:]) + year += 1900 if year >= 80 else 2000 + try: + stamp = datetime( + year, + int(date[2:4]), + int(date[:2]), + int(time[:2]), + int(time[2:4]), + int(time[4:]), + ) + except ValueError: + return result + f["Timestamp"] = stamp.isoformat() + "Z" + lat_index, lon_index = 3, 5 + elif kind == b"$GPGGA": + if fields[6] == b"0": + return result + lat_index, lon_index = 2, 4 + else: + lat_index, lon_index = 1, 3 + try: + f["Latitude"] = _coordinate( + fields[lat_index].decode(), fields[lat_index + 1].decode(), 2 + ) + f["Longitude"] = _coordinate( + fields[lon_index].decode(), fields[lon_index + 1].decode(), 3 + ) + except (APRSError, UnicodeError): + pass + return result + if body[:1] in (b"`", b"'"): + f.update(Type="location", Format="mice") + data = body[1:] + if ( + options.get("accept_broken_mice") + and len(data) >= 7 + and data[6:7] in (b"/", b"\\") + and data[7:8] not in (b"/", b"\\") + ): + f["MiceMangled"] = True + data = data[:5] + b" " + data[5:] + if len(data) < 8: + return result + try: + p = _mic_e.read(body[:1] + data[:6] + b">/", header, []) + except APRSError: + return result + f.update( + Latitude=p.latitude_deg, + Longitude=p.longitude_deg, + PosAmbiguity=p.ambiguity, + PosResolution=(18.52, 185.2, 1852, 18520, 111120)[p.ambiguity], + SymbolTable=chr(data[7]), + SymbolCode=chr(data[6]), + ) + dest = header.destination.split("-")[0] + f["MBits"] = "".join( + "1" if "A" <= c <= "K" or "P" <= c <= "Z" else "0" for c in dest[:3] + ) + if any(c < 32 for c in data): + return result + motion = p.extensions.motion + assert motion is not None and motion.speed_knots is not None + f.update(Speed=motion.speed_knots * 1.852, Course=motion.course_deg) + return result + if body.startswith(b";"): + f["Type"] = "object" + if len(body) < 31: + return result + f["ObjectName"] = body[1:10].decode("latin1") + if body[10:11] not in (b"*", b"_"): + return result + f["Alive"] = body[10:11] == b"*" + position = body[18:] + elif body[:1] in (b"!", b"=", b"/", b"@"): + f["Type"] = "location" + f["Messaging"] = body[:1] in (b"=", b"@") + position = body[8:] if body[:1] in (b"/", b"@") else body[1:] + else: + if body.startswith(b":"): + f["Type"] = "message" + elif body.startswith(b")"): + f["Type"] = "item" + elif body.startswith(b"T#"): + f["Type"] = "telemetry" + return result + f["Format"] = ( + "compressed" + if position[:1] in b"/\\ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghij" + else "uncompressed" + ) + if f["Format"] == "compressed": + return result + if not re.match(rb"[0-9 ]{4}\.[0-9 ]{2}[NS]", position): + return result + try: + ambiguity = pc.ambiguity(position[:8]) + f["Latitude"] = pc.center( + decode_coordinate(position[:8].replace(b" ", b"0"), "latitude"), ambiguity + ) + f["PosAmbiguity"] = ambiguity + if len(position) > 8: + f["SymbolTable"] = chr(position[8]) + if not re.fullmatch(rb"[/\\0-9A-Z]", position[8:9]): + return result + if len(position) >= 18: + _, f["Longitude"], _ = pc.coordinates(position[:8], position[9:18]) + except APRSError: + pass + return result diff --git a/packages/aprs/src/hamkit/aprs/_conformance.py b/packages/aprs/src/hamkit/aprs/_conformance.py index df74a77..c032a04 100644 --- a/packages/aprs/src/hamkit/aprs/_conformance.py +++ b/packages/aprs/src/hamkit/aprs/_conformance.py @@ -9,6 +9,7 @@ the APRS 1.2 proposed-draft guidance (aprs.org/aprs12/utf-8.txt), adopted for compatibility rather than as a ratified requirement. """ + from __future__ import annotations import re @@ -32,7 +33,7 @@ TelemetryUnits, Weather, ) -from ._errors import CodecNotImplementedError +from ._errors import CodecNotImplementedError, FieldError from ._models import ( Acknowledgment, AutoAnswer, @@ -334,25 +335,33 @@ def _item(v: Item, profile: EnvelopeProfile) -> Iterator[Finding]: yield "$.name", "item names have at least three characters" -@_conformance(Position) +@_conformance(Position, Object, Item) def _position(v: Position, profile: EnvelopeProfile) -> Iterator[Finding]: """The encoded tail must read back as the same extensions and comment.""" - if v.compression is not None or v.ambiguity: - return # No encoder yet; serialization raises CodecNotImplementedError. + if any(_located(v, profile)): + return # Report structural slot errors without secondary comment errors. try: - prefix = _extensions.write(v.extensions, v.symbol) + extensions = v.extensions + if v.compression is not None: + from ._position_codec import compressed_bytes + + _, extensions = compressed_bytes(v) + prefix = _extensions.write(extensions, v.symbol) except CodecNotImplementedError: return except _extensions.Unrepresentable as exc: yield exc.path, exc.message return + except FieldError as exc: + yield "$.extensions", str(exc) + return comment = v.comment.encode("utf-8") if len(prefix) + len(comment) > 43: yield "$.comment", "extensions and comment exceed 43 bytes" try: expected, _ = _extensions.read(prefix, v.symbol) actual, rest = _extensions.read(prefix + comment, v.symbol) - except CodecNotImplementedError: + except (CodecNotImplementedError, FieldError): yield "$.comment", "contains extension syntax this version cannot decode" return if (actual, rest) != (expected, comment): @@ -388,14 +397,14 @@ def _located(v: Any, profile: EnvelopeProfile) -> Iterator[Finding]: if getattr(e, name) is not None and symbol != required: yield "$.symbol", f"{name} requires symbol {''.join(required)}" if e.weather is not None: - if v.symbol.code != "_": + if v.symbol.code not in "_W": yield "$.symbol", "located weather uses the weather symbol" if primary or e.bearing is not None: yield "$.extensions.weather", "weather uses the wind extension slot" yield from _weather_report(e.weather, "$.extensions.weather", positioned=True) if e.telemetry is not None: allowed = ( - ("mic_e_hex", "mic_e_binary") + ("mic_e_hex", "mic_e_binary", "base91_comment") if isinstance(v, MicE) else ("base91_comment",) ) @@ -475,8 +484,10 @@ def _weather(v: Weather, profile: EnvelopeProfile) -> Iterator[Finding]: @_conformance(Telemetry) def _telemetry(v: Telemetry, profile: EnvelopeProfile) -> Iterator[Finding]: - def analog(low: int, high: int) -> Iterator[Finding]: + def analog(low: int, high: int, missing: tuple[int, ...] = ()) -> Iterator[Finding]: for i, value in enumerate(v.analog): + if i in missing and value is None: + continue if ( value is None or not float(value).is_integer() @@ -498,7 +509,14 @@ def analog(low: int, high: int) -> Iterator[Finding]: counts = (2, 5) if v.encoding == "mic_e_hex" else (5,) if len(v.analog) not in counts: yield "$.analog", f"{v.encoding} carries {' or '.join(map(str, counts))} channels" - yield from analog(0, 255) + missing = ( + (1, 3, 4) + if v.encoding == "mic_e_hex" + and len(v.analog) == 5 + and all(v.analog[i] is None for i in (1, 3, 4)) + else () + ) + yield from analog(0, 255, missing) if v.digital: yield "$.digital", "Mic-E telemetry has no digital channels" if v.sequence is not None: diff --git a/packages/aprs/src/hamkit/aprs/_extensions.py b/packages/aprs/src/hamkit/aprs/_extensions.py index d0a693f..725a1c4 100644 --- a/packages/aprs/src/hamkit/aprs/_extensions.py +++ b/packages/aprs/src/hamkit/aprs/_extensions.py @@ -1,18 +1,20 @@ # SPDX-FileCopyrightText: 2024-present Adam Fourney # SPDX-License-Identifier: MIT -"""Uncompressed position data extensions (APRS101 ch. 7) and /A= altitude. +"""APRS position extensions and their shared read/write grammar. -read() and write() share one grammar, so conformance can check that a comment -is read back as the same comment. Valid course/speed, PHG, RNG, DFS, DF bearing -and /A= altitude are decoded. Extension-shaped text with invalid values stays in -the comment (and conformance reports it). Recognized syntax this version cannot -decode yet raises CodecNotImplementedError, so it is never mistaken for comment. +Decode motion, radio/DF fields, weather, storm/area/signpost descriptors, altitude, +DAO and telemetry. Invalid extension-shaped text remains inspectable as comment +with a conformance finding. Wire evidence never overrides semantic fields. """ + from __future__ import annotations import math import re +from dataclasses import replace +from typing import Any, Literal, cast +from . import _data as d from ._data import ( PHG, Altitude, @@ -25,6 +27,7 @@ Symbol, ) from ._errors import CodecNotImplementedError, FieldError +from ._text import token _FIELD = rb"(\d{3}|\.{3}| {3})" _COURSE_SPEED = re.compile(_FIELD + rb"/" + _FIELD) @@ -52,24 +55,6 @@ def _is_df(symbol: Symbol) -> bool: return (symbol.table_id, symbol.code) == ("/", "\\") -def _unsupported(tail: bytes, symbol: Symbol) -> None: - starts_with_motion = _COURSE_SPEED.match(tail) is not None - if symbol.code == "_" and starts_with_motion: - raise CodecNotImplementedError("positioned weather report") - if symbol.code == "@" and symbol.table_id in "/\\" and starts_with_motion: - raise CodecNotImplementedError("storm report") - if (symbol.table_id, symbol.code) == ("\\", "l") and re.match( - rb"T\d\d/C\d\d", tail - ): - raise CodecNotImplementedError("area object descriptor") - if (symbol.table_id, symbol.code) == ("\\", "m") and b"{" in tail: - raise CodecNotImplementedError("signpost label") - if _DAO.search(tail): - raise CodecNotImplementedError("!DAO! precision and datum extension") - if _BASE91_TELEMETRY.search(tail): - raise CodecNotImplementedError("base91 comment telemetry") - - def _height(code: bytes) -> float: return 10.0 * 2 ** (code[0] - ord("0")) @@ -106,9 +91,29 @@ def _motion(match: re.Match[bytes], df: bool) -> Motion | None: def read(tail: bytes, symbol: Symbol) -> tuple[Extensions, bytes]: """Split decoded extensions from the information after an uncompressed symbol.""" - _unsupported(tail, symbol) - found: dict[str, object] = {} - if match := _COURSE_SPEED.match(tail): + + found: dict[str, Any] = {} + if symbol.code in "_W" and ( + _COURSE_SPEED.match(tail) or tail.startswith((b"g", b"t", b"c")) + ): + from . import _weather + + weather, tail = _weather.read( + tail, positioned=True, compressed=not bool(_COURSE_SPEED.match(tail)) + ) + found["weather"] = weather + elif (symbol.table_id, symbol.code) == ("\\", "l") and ( + match := re.match(rb"(\d)(\d{2})(/[0-9]|1[0-5])(\d{2})(?:\{([0-9.]+)\})?", tail) + ): + found["area"] = d.Area( + int(match[1]), + int(match[3].lstrip(b"/")), + int(match[2]), + int(match[4]), + corridor_half_width_miles=float(match[5]) if match[5] else None, + ) + tail = tail[match.end() :] + elif match := _COURSE_SPEED.match(tail): if (motion := _motion(match, _is_df(symbol))) is not None: found["motion"] = motion tail = tail[7:] @@ -131,6 +136,9 @@ def read(tail: bytes, symbol: Symbol) -> tuple[Extensions, bytes]: raw=match[0][3:], ) tail = tail[7:] + if re.match(rb"[0-9](?:/|$)", tail): + found["phg"] = replace(found["phg"], rate_per_hour=int(tail[:1])) + tail = tail[1:] elif match := _RNG.match(tail): found["range"] = Range(int(match[1]), raw=match[0]) tail = tail[7:] @@ -143,13 +151,78 @@ def read(tail: bytes, symbol: Symbol) -> tuple[Extensions, bytes]: raw=match[0], ) tail = tail[7:] + if symbol.code == "@" and ( + match := re.match( + rb"/(HC|TS|TD)/(\d{3})\^(\d{3})/(\d{4})>(\d{3})&(\d{3})(?:%(\d{3}))?", tail + ) + ): + found["storm"] = d.Storm( + cast(Literal["HC", "TS", "TD"], match[1].decode()), + predicted=symbol.table_id == "/", + sustained_wind_knots=int(match[2]), + peak_gust_knots=int(match[3]), + central_pressure_hpa=int(match[4]), + hurricane_radius_nm=int(match[5]), + tropical_storm_radius_nm=int(match[6]), + whole_gale_radius_nm=int(match[7]) if match[7] else None, + ) + tail = tail[match.end() :] + if (symbol.table_id, symbol.code) == ("\\", "m") and ( + match := re.search(rb"\{([^{}]{1,3})\}", tail) + ): + found["signpost"] = d.Signpost(token(match[1], "$.extensions.signpost.label")) + tail = tail[: match.start()] + tail[match.end() :] + if match := _BASE91_TELEMETRY.search(tail): + from ._position_codec import base91 + + raw = match[0][1:-1] + values = [base91(raw[i : i + 2]) for i in range(0, len(raw), 2)] + digital = ( + tuple(bool(values[-1] & (1 << i)) for i in range(8)) + if len(values) == 7 + else () + ) + found["telemetry"] = d.Telemetry( + tuple(values[1:6]), + digital, + sequence=values[0], + encoding="base91_comment", + raw=match[0], + ) + tail = tail[: match.start()] + tail[match.end() :] + if match := re.search(rb"!([A-Za-z])([\x20-\x7b]{2})!", tail): + datum = match[1].decode() + pair = match[2] + if pair == b" ": + dao = d.DAO(datum, raw=match[0]) + elif datum.isupper() and pair.isdigit(): + dao = d.DAO( + datum, + latitude_precision=int(chr(pair[0])), + longitude_precision=int(chr(pair[1])), + encoding="decimal", + raw=match[0], + ) + elif datum.islower() and all(33 <= c <= 123 for c in pair): + dao = d.DAO( + datum, + latitude_precision=pair[0] - 33, + longitude_precision=pair[1] - 33, + encoding="base91", + raw=match[0], + ) + else: + dao = None + if dao: + found["dao"] = dao + tail = tail[: match.start()] + tail[match.end() :] if match := _ALTITUDE.search(tail): feet = int(match[1]) found["altitude"] = Altitude( Measurement(feet, "feet", raw=match[1]), "feet_extension" ) tail = tail[: match.start()] + tail[match.end() :] - return Extensions(**found), tail # type: ignore[arg-type] + return Extensions(**found), tail def lookalikes( @@ -220,7 +293,7 @@ def _motion_bytes(m: Motion) -> bytes: return b"%03d/%03d" % (course, speed) -def write(extensions: Extensions, symbol: Symbol) -> bytes: +def _write_primary(extensions: Extensions, symbol: Symbol) -> bytes: """The bytes read() would split back into these extensions.""" e = extensions for name in ("dao", "area", "signpost", "weather", "storm", "telemetry"): @@ -230,8 +303,6 @@ def write(extensions: Extensions, symbol: Symbol) -> bytes: raise CodecNotImplementedError(f"{e.altitude.encoding} altitude encoding") if e.altitude is not None and e.altitude.reference != "unspecified": raise CodecNotImplementedError("altitude reference cannot be encoded in /A=") - if e.phg is not None and e.phg.rate_per_hour is not None: - raise CodecNotImplementedError("PHG rate extension encoding") if e.bearing is not None and ( e.bearing.usable is not None or e.bearing.accuracy_less_than_deg is not None ): @@ -299,3 +370,116 @@ def write(extensions: Extensions, symbol: Symbol) -> bytes: ) raw += b"/A=-%05d" % -feet if feet < 0 else b"/A=%06d" % feet return raw + + +def write(extensions: Extensions, symbol: Symbol) -> bytes: + e = extensions + extra = b"" + if e.weather: + from . import _weather + + extra += _weather.write( + e.weather, + positioned=True, + compressed=e.weather.wind_direction is None + and e.weather.wind_speed is None, + ) + if e.area: + a = e.area + extra += ( + b"%d%02d" % (a.shape_code, a.latitude_offset_code) + + (b"/%d" % a.color_code if a.color_code < 10 else b"%02d" % a.color_code) + + b"%02d" % a.longitude_offset_code + ) + if a.corridor_half_width_miles is not None: + extra += b"{" + f"{a.corridor_half_width_miles:g}".encode() + b"}" + if e.storm: + s = e.storm + extra += ( + b"/" + + s.kind.encode() + + b"/%03d^%03d/%04d>%03d&%03d" + % ( + _rounded( + "$.extensions.storm.sustained_wind_knots", + s.sustained_wind_knots, + 0, + 999, + ), + _rounded( + "$.extensions.storm.peak_gust_knots", s.peak_gust_knots, 0, 999 + ), + _rounded( + "$.extensions.storm.central_pressure_hpa", + s.central_pressure_hpa, + 0, + 9999, + ), + _rounded( + "$.extensions.storm.hurricane_radius_nm", + s.hurricane_radius_nm, + 0, + 999, + ), + _rounded( + "$.extensions.storm.tropical_storm_radius_nm", + s.tropical_storm_radius_nm, + 0, + 999, + ), + ) + ) + if s.whole_gale_radius_nm is not None: + extra += b"%%%03d" % _rounded( + "$.extensions.storm.whole_gale_radius_nm", + s.whole_gale_radius_nm, + 0, + 999, + ) + if e.signpost: + extra += b"{" + e.signpost.label.encode() + b"}" + if e.dao: + dao = e.dao + if not dao.datum_byte.isascii() or not dao.datum_byte.isalpha(): + raise Unrepresentable( + "$.extensions.dao.datum_byte", "DAO requires a datum letter" + ) + if dao.encoding is not None and ( + dao.latitude_precision is None or dao.longitude_precision is None + ): + raise FieldError("DAO precision is required") + pair = ( + b" " + if dao.encoding is None + else bytes( + [ + cast(int, dao.latitude_precision) + + (48 if dao.encoding == "decimal" else 33), + cast(int, dao.longitude_precision) + + (48 if dao.encoding == "decimal" else 33), + ] + ) + ) + extra += b"!" + dao.datum_byte.encode() + pair + b"!" + if e.telemetry: + from ._position_codec import pack91 + + t = e.telemetry + if t.encoding != "base91_comment" or not isinstance(t.sequence, int): + raise FieldError("comment telemetry requires base91 encoding and sequence") + values = [t.sequence, *t.analog] + if t.digital: + if len(t.analog) != 5: + raise FieldError("digital comment telemetry requires five analog slots") + values.append(sum(int(bool(v)) << i for i, v in enumerate(t.digital))) + if any(v is None or v != int(v) for v in values): + raise FieldError("base91 telemetry requires integer channels") + extra += b"|" + b"".join(pack91(int(cast(float, v)), 2) for v in values) + b"|" + primary = replace( + e, dao=None, area=None, signpost=None, weather=None, storm=None, telemetry=None + ) + if primary.phg and primary.phg.rate_per_hour is not None: + rate = primary.phg.rate_per_hour + primary = replace(primary, phg=replace(primary.phg, rate_per_hour=None)) + return _write_primary(primary, symbol) + str(rate).encode() + extra + return _write_primary(primary, symbol) + extra diff --git a/packages/aprs/src/hamkit/aprs/_fields/timestamp.py b/packages/aprs/src/hamkit/aprs/_fields/timestamp.py index 65af130..99b0634 100644 --- a/packages/aprs/src/hamkit/aprs/_fields/timestamp.py +++ b/packages/aprs/src/hamkit/aprs/_fields/timestamp.py @@ -2,15 +2,17 @@ # # SPDX-License-Identifier: MIT -"""Seven-byte APRS DHM and HMS timestamps (APRS101 pp. 22–23).""" +"""APRS DHM, HMS and eight-byte MDHM weather timestamps.""" from .._data import Timestamp -from .._errors import CodecNotImplementedError, FieldError +from .._errors import FieldError def encode_timestamp(value: Timestamp) -> bytes: if value.kind == "mdhm_utc": - raise CodecNotImplementedError("MDHM weather timestamp") + return ( + f"{value.month:02}{value.day:02}{value.hour:02}{value.minute:02}".encode() + ) if value.month is not None: raise FieldError("month is only valid in MDHM timestamps") if not all(type(n) is int for n in (value.hour, value.minute)): @@ -39,7 +41,7 @@ def encode_timestamp(value: Timestamp) -> bytes: def decode_timestamp(raw: bytes) -> Timestamp: if len(raw) == 8 and raw.isdigit(): - raise CodecNotImplementedError("MDHM weather timestamp") + return Timestamp.mdhm(int(raw[:2]), int(raw[2:4]), int(raw[4:6]), int(raw[6:8])) if len(raw) != 7 or not raw[:6].isdigit(): raise FieldError("timestamp must contain six digits and a suffix") a, b, c = int(raw[:2]), int(raw[2:4]), int(raw[4:6]) diff --git a/packages/aprs/src/hamkit/aprs/_messages.py b/packages/aprs/src/hamkit/aprs/_messages.py new file mode 100644 index 0000000..9399e2e --- /dev/null +++ b/packages/aprs/src/hamkit/aprs/_messages.py @@ -0,0 +1,403 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Addressed APRS applications, queries, status, and telemetry definitions.""" + +from __future__ import annotations + +import re +from typing import Any, cast + +from . import _data as d +from . import _models as m +from ._errors import FieldError +from ._fields import decode_timestamp, encode_timestamp +from ._text import free_text, token + + +def query(body: bytes, address: str | None = None) -> m.Query: + match = re.match(rb"\?([A-Z][A-Z0-9]*)(\??)(.*)", body, re.DOTALL) + if not match: + raise FieldError("invalid query") + name = match[1].decode() + rest = match[3] + footprint = None + heard = None + if address is None and name == "APRS" and rest: + values = rest.strip().split(b",") + if len(values) == 3: + try: + footprint = d.Footprint( + d.Coordinates(float(values[0]), float(values[1])), float(values[2]) + ) + rest = b"" + except ValueError as exc: + raise FieldError("invalid query footprint") from exc + elif name == "APRSH" and rest: + heard = token(rest.strip(), "$.heard_station") + rest = b"" + return m.Query( + name, + addressee=address, + footprint=footprint, + heard_station=heard, + arguments=rest, + ) + + +def status(body: bytes, diagnostics: list) -> m.Status: + timestamp = None + grid = None + symbol = None + beam = None + if re.match(rb"\d{6}z", body): + timestamp = decode_timestamp(body[:7]) + body = body[7:] + else: + match = re.match( + rb"([A-Ra-r]{2}\d{2}(?:[A-Xa-x]{2})?)([/\\0-9A-Z])([!-~])", body + ) + if match: + grid = d.Grid(match[1].decode().upper()) + symbol = d.Symbol(match[2].decode(), match[3].decode()) + body = body[match.end() :] + match = re.search(rb"\^([0-9A-Z])([0-K])$", body) + if match: + heading = int(chr(match[1][0]), 36) * 10 + beam = d.Beam(heading, 10 * (match[2][0] - 48) ** 2, raw=match[0]) + body = body[: match.start()] + return m.Status( + free_text(body, "$.text", diagnostics), + timestamp=timestamp, + grid=grid, + symbol=symbol, + beam=beam, + ) + + +def definition(address: str, body: bytes) -> m.TelemetryDefinition: + tag = body[:5] + values = token(body[5:], "$.definition").split(",") + value: d.TelemetryDefinitionValue + if tag in (b"PARM.", b"UNIT."): + value = (d.TelemetryParameters if tag == b"PARM." else d.TelemetryUnits)( + tuple(v or None for v in values) + (None,) * max(0, 13 - len(values)) + ) + elif tag == b"EQNS.": + if len(values) % 3: + raise FieldError("EQNS requires complete triples") + triples = [] + for i in range(0, len(values), 3): + v = values[i : i + 3] + try: + triples.append( + None if v == ["", "", ""] else d.Calibration(*map(float, v)) + ) + except ValueError as exc: + raise FieldError("invalid EQNS coefficient") from exc + value = d.TelemetryEquations(tuple(triples)) + else: + if not re.fullmatch("[01]{8}", values[0]): + raise FieldError("BITS requires eight bits") + value = d.TelemetryBits( + cast(Any, tuple(v == "1" for v in values[0])), + project_title=",".join(values[1:]), + ) + return m.TelemetryDefinition(address, value) + + +def specialized(address: str, body: bytes, diagnostics: list): + if body.startswith((b"PARM.", b"UNIT.", b"EQNS.", b"BITS.")): + return definition(address, body) + if body.startswith(b"?"): + return query(body, address) + if body.startswith(b"AA:"): + text, sep, ack = body[3:].rpartition(b"}") + return m.AutoAnswer( + address, + free_text(text if sep else body[3:], "$.text", diagnostics), + previous_ack=token(ack, "$.previous_ack") if sep else None, + ) + if address.startswith("BLN"): + if len(address) < 4: + raise FieldError("bulletin requires identifier") + return m.Bulletin( + address[3], + free_text(body, "$.text", diagnostics), + group=address[4:] or None, + ) + if address.startswith("NWS-"): + text, sep, ref = body.partition(b"{") + return m.NWSBulletin( + address, + free_text(text, "$.text", diagnostics), + reference_id=token(ref, "$.reference_id") if sep else None, + ) + if re.match(rb"N[#AP1-6SR]\\", body): + content, sep, identifier = body.partition(b"{") + values = token(content, "$.record").split("\\") + tag = values.pop(0) + if values and values[-1] == "": + values.pop() + record: d.NTSRecord + try: + if tag == "N#": + if len(values) != 8: + raise ValueError("NTS header requires eight fields") + record = d.NTSHeader( + **dict( + zip( + ( + "number", + "precedence", + "handling", + "originator", + "check", + "place", + "time", + "date", + ), + values, + ) + ) + ) + elif tag == "NA": + record = d.NTSAddress(cast(Any, tuple(values))) + elif tag == "NP": + record = d.NTSPhone(*values) + elif tag == "NS": + record = d.NTSSignature(*values) + elif tag == "NR": + if len(values) != 4: + raise ValueError("NTS routing requires four fields") + record = d.NTSRouting( + **dict( + zip( + ("received_from", "received_at", "sent_to", "sent_at"), + values, + ) + ) + ) + else: + record = d.NTSText(cast(Any, int(tag[1])), *values) + except (ValueError, TypeError) as exc: + raise FieldError("invalid NTS record") from exc + return m.Radiogram( + address, + record, + message_id=token(identifier, "$.message_id") if sep else None, + ) + return None + + +def response(address: str, body: bytes): + """Recognize the three documented directed-query response grammars.""" + if body.startswith(b"Directs= "): + return m.Response( + address, + m.DirectStations(tuple(token(body[9:], "$.response.stations").split())), + ) + match = re.fullmatch( + rb"([A-Za-z0-9-]+) HEARD: ((?:[0-9]+|\.)(?: (?:[0-9]+|\.)){7})", body + ) + if match: + return m.Response( + address, + m.HeardStation( + match[1].decode(), + tuple(None if c == b"." else int(c) for c in match[2].split()), + ), + ) + if re.fullmatch(rb"[A-Za-z0-9-]+>[A-Za-z0-9,*-]+:", body): + return m.Response(address, m.Trace(m.Header.parse(body[:-1].decode()))) + return None + + +def telemetry(raw: bytes, diagnostics: list) -> d.Telemetry: + match = re.match(rb"T#(MIC|\d+),?", raw) + if not match: + raise FieldError("invalid telemetry sequence") + sequence = match[1] + if len(sequence) > 32: + raise FieldError("telemetry sequence exceeds numeric field budget") + fields = raw[match.end() :].split(b",", 5) + if len(fields) != 6: + raise FieldError("telemetry requires five analog channels and digital bits") + analog = [] + try: + for value in fields[:5]: + analog.append(None if not value else float(value)) + except ValueError as exc: + raise FieldError("invalid telemetry channel") from exc + bits = fields[5][:8] + if len(bits) != 8 or any(v not in b"01" for v in bits): + raise FieldError("telemetry requires eight binary digits") + return d.Telemetry( + tuple(analog), + tuple(v == 49 for v in bits), + sequence="MIC" if sequence == b"MIC" else int(sequence), + sequence_raw=sequence, + comment=free_text(fields[5][8:], "$.comment", diagnostics), + ) + + +def write(payload): + p = payload + if isinstance(p, m.Status): + raw = b">" + (encode_timestamp(p.timestamp) if p.timestamp else b"") + if p.grid: + raw += ( + p.grid.locator.encode() + + p.symbol.table_id.encode() + + p.symbol.code.encode() + ) + raw += p.text.encode() + if p.beam: + h = round(p.beam.heading_deg / 10) % 36 + power = round((p.beam.erp_w / 10) ** 0.5) + if ( + not 0 <= h <= 35 + or not 0 <= power <= 27 + or abs(power**2 * 10 - p.beam.erp_w) > 1e-6 + ): + raise FieldError("beam/ERP not representable") + raw += ( + b"^" + + b"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[h : h + 1] + + bytes([48 + power]) + ) + decoded = status(raw[1:], []) + if ( + decoded.text, + decoded.timestamp, + decoded.grid, + decoded.symbol, + bool(decoded.beam), + ) != (p.text, p.timestamp, p.grid, p.symbol, bool(p.beam)): + raise FieldError("status text would be interpreted as structured fields") + return raw + if isinstance(p, m.Query): + raw = ( + b"?" + + p.name.encode() + + (b"?" if p.addressee is None or p.name == "PING" else b"") + ) + if p.footprint: + raw += f" {p.footprint.center.latitude_deg:g},{p.footprint.center.longitude_deg:g},{p.footprint.radius_miles:g}".encode() + if p.heard_station: + raw += b" " + p.heard_station.encode() + raw += p.arguments + return ( + b":" + p.addressee.ljust(9).encode() + b":" if p.addressee else b"" + ) + raw + if isinstance(p, m.Capabilities): + return b"<" + b",".join( + c.name.encode() + (b"=" + c.value.encode() if c.value is not None else b"") + for c in p.tokens + ) + if isinstance(p, d.Telemetry): + if p.encoding not in ("classic", "compatibility"): + raise FieldError("telemetry encoding requires an enclosing position") + seq = b"MIC" if p.sequence in (None, "MIC") else f"{p.sequence:03d}".encode() + values = b",".join( + ( + b"" + if v is None + else (f"{int(v):03d}" if v == int(v) else f"{v:g}").encode() + ) + for v in p.analog + ) + return ( + b"T#" + + seq + + b"," + + values + + b"," + + bytes(49 if v else 48 for v in p.digital) + + p.comment.encode() + ) + if isinstance(p, m.Bulletin): + address = "BLN" + p.identifier + (p.group or "") + body = p.text.encode() + elif isinstance(p, m.AutoAnswer): + address = p.addressee + body = ( + b"AA:" + + p.text.encode() + + (b"}" + p.previous_ack.encode() if p.previous_ack else b"") + ) + elif isinstance(p, m.NWSBulletin): + address = p.addressee + body = p.text.encode() + ( + b"{" + p.reference_id.encode() if p.reference_id else b"" + ) + elif isinstance(p, m.TelemetryDefinition): + address = p.addressee + v = p.definition + if isinstance(v, (d.TelemetryParameters, d.TelemetryUnits)): + body = ( + b"PARM." if isinstance(v, d.TelemetryParameters) else b"UNIT." + ) + ",".join(x or "" for x in v.channels).encode() + elif isinstance(v, d.TelemetryEquations): + body = ( + b"EQNS." + + ",".join( + ",," if x is None else ",".join(f"{a:g}" for a in (x.a, x.b, x.c)) + for x in v.coefficients + ).encode() + ) + else: + body = ( + b"BITS." + + bytes(49 if x else 48 for x in v.sense) + + b"," + + v.project_title.encode() + ) + elif isinstance(p, m.Radiogram): + address = p.addressee + v = p.record + if isinstance(v, d.NTSHeader): + tag = "N#" + values = [ + v.number, + v.precedence, + v.handling or "", + v.originator, + v.check, + v.place, + v.time or "", + v.date, + ] + elif isinstance(v, d.NTSAddress): + tag = "NA" + values = v.lines + elif isinstance(v, d.NTSPhone): + tag = "NP" + values = [v.number] + elif isinstance(v, d.NTSText): + tag = f"N{v.line}" + values = [v.text] + elif isinstance(v, d.NTSSignature): + tag = "NS" + values = [v.text] + else: + tag = "NR" + values = [v.received_from, v.received_at, v.sent_to, v.sent_at] + body = (tag + "\\" + "\\".join(values)).encode() + ( + b"{" + p.message_id.encode() if p.message_id else b"" + ) + elif isinstance(p, m.Response): + address = p.addressee + v = p.response + if isinstance(v, m.DirectStations): + body = ("Directs= " + " ".join(v.stations)).encode() + elif isinstance(v, m.HeardStation): + body = ( + v.station + + " HEARD: " + + " ".join("." if c is None else str(c) for c in v.counts) + ).encode() + else: + body = str(v.header).encode() + b":" + else: + return None + return b":" + address.ljust(9).encode() + b":" + body diff --git a/packages/aprs/src/hamkit/aprs/_mic_e.py b/packages/aprs/src/hamkit/aprs/_mic_e.py new file mode 100644 index 0000000..b740733 --- /dev/null +++ b/packages/aprs/src/hamkit/aprs/_mic_e.py @@ -0,0 +1,254 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Mic-E joint destination/information codec (APRS101 chapter 10).""" + +from __future__ import annotations + +import math +import re +from dataclasses import replace +from typing import cast + +from ._data import Altitude, Measurement, Motion, Symbol, Telemetry +from ._errors import FieldError +from ._models import Header, MicE +from ._position_codec import base91, center, dao_offset, pack91 +from ._text import free_text + +_MESSAGES = ( + "emergency", + "priority", + "special", + "committed", + "returning", + "in_service", + "en_route", + "off_duty", +) + + +def destination(raw: str): + raw = raw.split("-")[0] + if not re.fullmatch(r"[0-9A-LP-Z]{3}[0-9LP-Z]{3}", raw): + raise FieldError("invalid Mic-E destination") + digits = "".join( + ( + c + if c.isdigit() + else ( + str(ord(c) - 65) + if "A" <= c <= "J" + else str(ord(c) - 80) + if "P" <= c <= "Y" + else " " + ) + ) + for c in raw + ) + n = len(digits) - len(digits.rstrip()) + if n > 4 or " " in digits[: -n or None]: + raise FieldError("invalid Mic-E latitude ambiguity") + d = digits.replace(" ", "0") + if int(d[2:4]) >= 60: + raise FieldError("invalid Mic-E latitude minutes") + lat = center(int(d[:2]) + int(d[2:]) / 6000, n) + if raw[3] < "P": + lat = -lat + bits = sum( + (1 << (2 - i)) + for i, c in enumerate(raw[:3]) + if "A" <= c <= "K" or "P" <= c <= "Z" + ) + custom = any("A" <= c <= "K" for c in raw[:3]) + standard = any("P" <= c <= "Z" for c in raw[:3]) + message = ( + "unknown" + if custom and standard + else f"custom_{7-bits}" + if custom and bits + else _MESSAGES[bits] + ) + return lat, n, message, raw[4] >= "P", raw[5] >= "P" + + +def read(information: bytes, header: Header, diagnostics: list) -> MicE: + lat, n, message, offset, west = destination(header.destination) + b = information[1:] + if len(b) < 8 or any(not 28 <= c <= 127 for c in b[:6]): + raise FieldError("truncated or invalid Mic-E information") + degrees = b[0] - 28 + (100 if offset else 0) + if 180 <= degrees <= 189: + degrees -= 80 + elif 190 <= degrees <= 199: + degrees -= 190 + minutes = b[1] - 28 + if minutes >= 60: + minutes -= 60 + hundredths = b[2] - 28 + if minutes >= 60 or hundredths > 99: + raise FieldError("invalid Mic-E longitude minutes") + lon = center(degrees + (minutes + hundredths / 100) / 60, n) + if west: + lon = -lon + speed = (b[3] - 28) * 10 + (b[4] - 28) // 10 + if speed >= 800: + speed -= 800 + course = ((b[4] - 28) % 10) * 100 + b[5] - 28 + if course >= 400: + course -= 400 + motion = Motion(course, speed, course_code=course, speed_code=speed) + symbol = Symbol(chr(b[7]), chr(b[6])) + tail = b[8:] + device = None + altitude = None + telemetry = None + if tail[:1] in (b"]", b">"): + device = tail[:1].decode() + tail = tail[1:] + if len(tail) >= 4 and tail[3:4] == b"}": + altitude = Altitude(Measurement(base91(tail[:3]) - 10000, "meters"), "mic_e") + tail = tail[4:] + if tail[:1] in (b"`", b"'"): + width = 4 if tail[:1] == b"`" else 10 + if len(tail) < width + 1 or not re.fullmatch( + rb"[0-9A-Fa-f]+", tail[1 : width + 1] + ): + raise FieldError("invalid Mic-E hex telemetry") + values: tuple[int | None, ...] = tuple( + bytes.fromhex(tail[1 : width + 1].decode()) + ) + if width == 4: + values = (values[0], None, values[1], None, None) + telemetry = Telemetry(values, encoding="mic_e_hex") + tail = tail[width + 1 :] + elif tail[:1] == b"\x1d": + if len(tail) < 6: + raise FieldError("truncated Mic-E binary telemetry") + telemetry = Telemetry(tuple(tail[1:6]), encoding="mic_e_binary") + tail = tail[6:] + # The legacy grid/status prefix has no coordinate authority; retain its + # bytes in the device code so composing does not discard that information. + grid = re.match(rb"[A-R]{2}[0-9]{2}[A-X]{2}/[A-Za-z]", tail) + if grid and device: + device += grid[0].decode() + tail = tail[grid.end() :] + from . import _extensions + + extra, tail = _extensions.read(tail, symbol) + e = replace( + extra, + motion=motion, + altitude=altitude or extra.altitude, + telemetry=telemetry or extra.telemetry, + ) + return MicE( + dao_offset(lat, e.dao, "latitude"), + dao_offset(lon, e.dao, "longitude"), + symbol, + message=message, + fix="current" if information[:1] in (b"`", b"\x1c") else "old", + ambiguity=n, + device_code=device, + extensions=e, + comment=free_text(tail, "$.comment", diagnostics), + ) + + +def write(p: MicE, header: Header) -> bytes: + p = replace( + p, + latitude_deg=dao_offset(p.latitude_deg, p.extensions.dao, "latitude", -1), + longitude_deg=dao_offset(p.longitude_deg, p.extensions.dao, "longitude", -1), + ) + lat, n, message, offset, west = destination(header.destination) + if ( + abs(lat - center(p.latitude_deg, p.ambiguity)) > 1 / 12000 + or n != p.ambiguity + or message != p.message + or west != (math.copysign(1, p.longitude_deg) < 0) + ): + raise FieldError( + "Mic-E destination does not match latitude, ambiguity, message, or longitude hemisphere" + ) + units = round(abs(p.longitude_deg) * 6000) + degrees, minutes = divmod(units, 6000) + minutes, hundredths = divmod(minutes, 100) + # Find a legal wire longitude byte for the caller-supplied destination bit. + candidates = [] + for byte in range(28, 128): + value = byte - 28 + (100 if offset else 0) + if 180 <= value <= 189: + value -= 80 + elif 190 <= value <= 199: + value -= 190 + if value == degrees: + candidates.append(byte) + if not candidates: + raise FieldError("Mic-E destination longitude offset does not match longitude") + m = p.extensions.motion + if m is None or m.course_deg is None or m.speed_knots is None: + raise FieldError("Mic-E requires course and speed") + speed, course = round(m.speed_knots), round(m.course_deg) + if not 0 <= speed <= 799 or not 0 <= course <= 360: + raise FieldError("Mic-E motion outside wire range") + body = ( + bytes( + [ + candidates[0], + minutes + (88 if minutes < 10 else 28), + hundredths + 28, + speed // 10 + 28, + speed % 10 * 10 + course // 100 + 28, + course % 100 + 28, + ] + ) + + p.symbol.code.encode() + + p.symbol.table_id.encode() + ) + if p.device_code: + if not re.fullmatch( + r"[>\]](?:[A-R]{2}[0-9]{2}[A-X]{2}/[A-Za-z])?", p.device_code + ): + raise FieldError("unsupported Mic-E device marker") + body += p.device_code.encode() + e = replace(p.extensions, motion=None) + if e.altitude and e.altitude.encoding == "mic_e": + if e.altitude.reference != "unspecified": + raise FieldError( + "Mic-E altitude reference is not an independent wire field" + ) + a = e.altitude.measurement + if a.unit != "meters" or a.value is None: + raise FieldError("Mic-E altitude requires meters") + body += pack91(round(a.value) + 10000, 3) + b"}" + e = replace(e, altitude=None) + if e.telemetry and e.telemetry.encoding in ("mic_e_hex", "mic_e_binary"): + t = e.telemetry + values = t.analog + if len(values) == 2 and t.encoding == "mic_e_hex": + values = (values[0], None, values[1], None, None) + if len(values) != 5 or t.digital: + raise FieldError("invalid Mic-E telemetry channels") + if t.encoding == "mic_e_binary": + body += b"\x1d" + bytes(int(cast(float, v)) for v in values) + elif values[1] is None and values[3:] == (None, None): + body += ( + b"`" + + bytes([int(cast(float, values[0])), int(cast(float, values[2]))]) + .hex() + .upper() + .encode() + ) + else: + body += ( + b"'" + bytes(int(cast(float, v)) for v in values).hex().upper().encode() + ) + e = replace(e, telemetry=None) + from . import _extensions + + return ( + (b"`" if p.fix == "current" else b"'") + + body + + _extensions.write(e, p.symbol) + + p.comment.encode() + ) diff --git a/packages/aprs/src/hamkit/aprs/_nmea_codec.py b/packages/aprs/src/hamkit/aprs/_nmea_codec.py new file mode 100644 index 0000000..3f8b4ef --- /dev/null +++ b/packages/aprs/src/hamkit/aprs/_nmea_codec.py @@ -0,0 +1,255 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""NMEA sentence codecs. Checksums and fix validity do not imply each other.""" + +from __future__ import annotations + +import functools +import math +import operator +import re +from typing import Literal, cast + +from . import _nmea as n +from ._data import Coordinates, Symbol +from ._errors import CodecNotImplementedError, FieldError +from ._models import NMEA, Diagnostic, Header +from ._text import free_text, token + + +def _coordinate(number: str, hemisphere: str, width: int) -> float: + if ( + not re.fullmatch(r"\d{" + str(width + 2) + r"}(?:\.\d+)?", number) + or hemisphere not in ("NS" if width == 2 else "EW") + or len(hemisphere) != 1 + ): + raise FieldError("invalid NMEA coordinate") + deg = int(number[:width]) + minutes = float(number[width:]) + if minutes >= 60: + raise FieldError("NMEA coordinate minutes exceed 60") + value = deg + minutes / 60 + return -value if hemisphere in "SW" else value + + +def _coordinates(fields: list[str]) -> Coordinates | None: + if not any(fields): + return None + return Coordinates( + _coordinate(fields[0], fields[1], 2), _coordinate(fields[2], fields[3], 3) + ) + + +def header_symbol(header: Header | None) -> Symbol | None: + if header is None: + return None + dest = header.destination.split("-")[0] + match = re.fullmatch(r"(?:GPS|SPC|SYM)([CE])(\d{2})", dest) + if match and 1 <= int(match[2]) <= 94: + return Symbol("/" if match[1] == "C" else "\\", chr(32 + int(match[2]))) + # APRS symbol XY codes: B/P are punctuation; M/N are vehicles and + # the remaining primary/alternate groups follow the APRS symbol table. + match = re.fullmatch(r"(?:GPS|SPC|SYM)([BPMNOAHS DQJL])([A-Z])([0-9A-Z]?)", dest) + if match: + group, letter, overlay = match.groups() + groups = { + "B": (32, "/"), + "P": (32, "\\"), + "M": (41, "/"), + "N": (41, "\\"), + "O": (64, "/"), + "A": (64, "\\"), + "H": (96, "/"), + "D": (96, "\\"), + } + if group in groups: + offset, table = groups[group] + code = chr(offset + ord(letter) - 65) + if 33 <= ord(code) <= 126: + return Symbol(overlay or table, code) + suffix = header.source.rpartition("-")[2] + if dest in ("GPS", "APRS") and suffix.isdigit() and 1 <= int(suffix) <= 15: + return Symbol("/", "aUfbYX's> NMEA: + match = re.match(rb"\$([A-Z]{2})([A-Z]{3}),(.*)", raw, re.DOTALL) + if not match: + raise FieldError("invalid NMEA sentence identifier") + talker, kind = match[1].decode(), match[2].decode() + data, star, trailer = match[3].partition(b"*") + supplied = None + valid = None + comment = b"" + if star: + if len(trailer) < 2 or not re.fullmatch(rb"[0-9a-fA-F]{2}", trailer[:2]): + raise FieldError("invalid NMEA checksum field") + supplied = trailer[:2].decode() + comment = trailer[2:] + actual = functools.reduce(operator.xor, raw[1 : raw.index(b"*")], 0) + valid = actual == int(supplied, 16) + if not valid: + diagnostics.append( + Diagnostic( + "nonconforming", + "NMEA checksum mismatch", + "$.metadata.checksum_valid", + ) + ) + fields_raw = tuple(data.split(b",")) + f = [token(v, "$.sentence") for v in fields_raw] + number = lambda i: float(f[i]) if f[i] else None + s: n.NMEASentence + try: + if kind == "GGA": + if len(f) < 14: + raise FieldError("GGA requires fourteen fields") + if f[9] != "M" or f[11] != "M": + raise FieldError("GGA height units must be meters") + s = n.GGA( + f[0], + _coordinates(f[1:5]), + int(f[5]), + satellites=int(f[6]) if f[6] else None, + hdop=number(7), + altitude_msl_m=number(8), + geoid_separation_m=number(10), + dgps_age=f[12] or None, + dgps_station=f[13] or None, + ) + usable = s.fix_quality > 0 + elif kind == "GLL": + if len(f) < 6: + raise FieldError("GLL requires six fields") + s = n.GLL(_coordinates(f[:4]), f[4], cast(Literal["A", "V"], f[5])) + usable = s.fix_status == "A" + elif kind == "RMC": + if len(f) < 11: + raise FieldError("RMC requires eleven fields") + s = n.RMC( + f[0], + f[8], + cast(Literal["A", "V"], f[1]), + _coordinates(f[2:6]), + speed_knots=number(6), + course_deg=number(7), + magnetic_variation=number(9), + magnetic_variation_direction=cast( + Literal["E", "W"] | None, f[10] or None + ), + ) + usable = s.fix_status == "A" + elif kind == "VTG": + if len(f) < 8 or [f[i] for i in (1, 3, 5, 7)] != ["T", "M", "N", "K"]: + raise FieldError("invalid VTG fields or units") + s = n.VTG( + course_true_deg=number(0), + course_magnetic_deg=number(2), + speed_knots=number(4), + speed_kmh_reported=number(6), + ) + usable = False + elif kind == "WPL": + if len(f) < 5: + raise FieldError("WPL requires five fields") + coords = _coordinates(f[:4]) + if coords is None: + raise FieldError("WPL requires coordinates") + s = n.WPL(coords, f[4]) + usable = True + else: + raise CodecNotImplementedError("unknown NMEA sentence " + kind) + except CodecNotImplementedError: + raise + except (ValueError, IndexError) as exc: + raise FieldError("invalid NMEA field") from exc + if not usable and kind in ("GGA", "GLL", "RMC"): + diagnostics.append( + Diagnostic( + "nonconforming", "NMEA reports no valid fix", "$.position_usable" + ) + ) + return NMEA( + s, + n.NMEAMetadata( + talker, + checksum_supplied=supplied, + checksum_valid=valid, + fields_raw=fields_raw, + ), + position_usable=usable and valid is not False, + symbol=header_symbol(header), + comment=free_text(comment, "$.comment", diagnostics), + ) + + +def _coord_fields(c: Coordinates | None) -> list[str]: + if c is None: + return [""] * 4 + result = [] + for value, width, hemispheres in ( + (c.latitude_deg, 2, "NS"), + (c.longitude_deg, 3, "EW"), + ): + # Seven decimal minutes preserve sub-millimeter precision without + # borrowing lexical fields from the original sentence. + total = round(abs(value) * 60, 7) + degrees = int(total // 60) + minutes = total - degrees * 60 + result.extend( + [ + f"{degrees:0{width}d}{minutes:010.7f}".rstrip("0").rstrip("."), + hemispheres[math.copysign(1, value) < 0], + ] + ) + return result + + +def write(p: NMEA) -> bytes: + s = p.sentence + num = lambda v: "" if v is None else f"{v:.12g}" + if isinstance(s, n.GGA): + f = [ + s.time_utc, + *_coord_fields(s.coordinates), + str(s.fix_quality), + num(s.satellites), + num(s.hdop), + num(s.altitude_msl_m), + "M", + num(s.geoid_separation_m), + "M", + s.dgps_age or "", + s.dgps_station or "", + ] + elif isinstance(s, n.GLL): + f = [*_coord_fields(s.coordinates), s.time_utc, s.fix_status] + elif isinstance(s, n.RMC): + f = [ + s.time_utc, + s.fix_status, + *_coord_fields(s.coordinates), + num(s.speed_knots), + num(s.course_deg), + s.date_ddmmyy, + num(s.magnetic_variation), + s.magnetic_variation_direction or "", + ] + elif isinstance(s, n.VTG): + f = [ + num(s.course_true_deg), + "T", + num(s.course_magnetic_deg), + "M", + num(s.speed_knots), + "N", + num(s.speed_kmh_reported), + "K", + ] + else: + f = [*_coord_fields(s.coordinates), s.name] + raw = (p.metadata.talker + type(s).__name__ + "," + ",".join(f)).encode() + if p.metadata.checksum_supplied is not None: + raw += b"*" + f"{functools.reduce(operator.xor,raw,0):02X}".encode() + return b"$" + raw + p.comment.encode() diff --git a/packages/aprs/src/hamkit/aprs/_position_codec.py b/packages/aprs/src/hamkit/aprs/_position_codec.py new file mode 100644 index 0000000..5b610cf --- /dev/null +++ b/packages/aprs/src/hamkit/aprs/_position_codec.py @@ -0,0 +1,174 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Position wire primitives, including ambiguity and base-91 compression.""" + +from __future__ import annotations + +import math +from dataclasses import replace + +from ._data import Altitude, Compression, Extensions, Measurement, Motion, Range, Symbol +from ._errors import FieldError +from ._fields.position import CoordinateAxis, decode_coordinate, encode_coordinate + + +def base91(raw: bytes) -> int: + if not raw or any(not 33 <= c <= 123 for c in raw): + raise FieldError("invalid base-91 field") + value = 0 + for c in raw: + value = value * 91 + c - 33 + return value + + +def pack91(value: int, width: int) -> bytes: + if not 0 <= value < 91**width: + raise FieldError("value outside base-91 field range") + result = bytearray(width) + for i in range(width - 1, -1, -1): + value, digit = divmod(value, 91) + result[i] = digit + 33 + return bytes(result) + + +def ambiguity(raw: bytes) -> int: + digits = raw[:-1].replace(b".", b"") + n = len(digits) - len(digits.rstrip(b" ")) + if n > 4 or b" " in digits[: -n or None]: + raise FieldError("ambiguity must hide trailing minute digits") + return n + + +def center(value: float, n: int) -> float: + if not n: + return value + cell = (0.1, 1, 10, 60)[n - 1] + return math.copysign( + (math.floor(abs(value) * 60 / cell + 1e-9) + 0.5) * cell / 60, value + ) + + +def coordinates(lat: bytes, lon: bytes) -> tuple[float, float, int]: + n, m = ambiguity(lat), ambiguity(lon) + if m > n: + raise FieldError("longitude cannot be more ambiguous than latitude") + return ( + center(decode_coordinate(lat.replace(b" ", b"0"), "latitude"), n), + center(decode_coordinate(lon.replace(b" ", b"0"), "longitude"), n), + n, + ) + + +def coordinate_bytes(value: float, axis: CoordinateAxis, n: int) -> bytes: + raw = bytearray(encode_coordinate(value, axis)) + for i in (len(raw) - 2, len(raw) - 3, len(raw) - 5, len(raw) - 6)[:n]: + raw[i] = 32 + return bytes(raw) + + +def compressed( + raw: bytes, +) -> tuple[float, float, Symbol, Compression, Extensions, bytes]: + if len(raw) < 13: + raise FieldError("truncated compressed position") + if raw[0] not in b"/\\ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghij": + raise FieldError("invalid compressed symbol table") + lat, lon = 90 - base91(raw[1:5]) / 380926, -180 + base91(raw[5:9]) / 190463 + symbol = Symbol(chr(raw[0]), chr(raw[9])) + cs = raw[10:13] + e = Extensions() + if cs[0] == 32: + compression = Compression(ignored=True, raw=cs) + else: + c, s, t = (base91(bytes([b])) for b in cs) + t &= 63 + compression = Compression( + fix="current" if t & 32 else "old", + nmea_source=("other", "GLL", "GGA", "RMC")[(t >> 3) & 3], + origin_code=t & 7, + raw=cs, + ) + if t & 24 == 16: + e = Extensions( + altitude=Altitude( + Measurement(1.002 ** (c * 91 + s), "feet"), "compressed" + ) + ) + elif c == 90: + e = Extensions(range=Range(2 * 1.08**s)) + else: + e = Extensions(motion=Motion(c * 4, 1.08**s - 1)) + return lat, lon, symbol, compression, e, raw[13:] + + +def compressed_bytes(p) -> tuple[bytes, Extensions]: + c = p.compression + e = p.extensions + if c.ignored: + cs = b" " + elif e.altitude is not None and e.altitude.encoding == "compressed": + if e.altitude.reference != "unspecified": + raise FieldError( + "compressed altitude reference is not an independent wire field" + ) + a = e.altitude.measurement + if ( + a.unit != "feet" + or a.value is None + or a.value <= 0 + or c.nmea_source != "GGA" + ): + raise FieldError( + "compressed altitude requires positive feet and GGA source" + ) + cs = pack91(round(math.log(a.value, 1.002)), 2) + pack91(c.type_value, 1) + e = replace(e, altitude=None) + elif e.range is not None: + if e.range.miles < 2: + raise FieldError("compressed range must be at least two miles") + cs = ( + b"{" + + pack91(round(math.log(e.range.miles / 2, 1.08)), 1) + + pack91(c.type_value, 1) + ) + e = replace(e, range=None) + else: + m = e.motion + if e.weather is not None: + from ._weather import _value + + w = e.weather + m = Motion( + w.wind_direction.value if w.wind_direction else None, + _value(w.wind_speed, "knots") if w.wind_speed else None, + ) + e = replace(e, weather=replace(w, wind_direction=None, wind_speed=None)) + if m is None or m.course_deg is None or m.speed_knots is None: + raise FieldError("active compression requires motion, range, or altitude") + if c.nmea_source == "GGA": + raise FieldError("GGA compression encodes altitude, not motion") + course = round(m.course_deg / 4) + if course == 90: + course = 0 + cs = ( + pack91(course, 1) + + pack91(round(math.log(m.speed_knots + 1, 1.08)), 1) + + pack91(c.type_value, 1) + ) + e = replace(e, motion=None) + raw = ( + p.symbol.table_id.encode() + + pack91(round((90 - p.latitude_deg) * 380926), 4) + + pack91(round((180 + p.longitude_deg) * 190463), 4) + + p.symbol.code.encode() + + cs + ) + return raw, e + + +def dao_offset(value: float, dao, axis: str, direction=1) -> float: + if dao is None or dao.encoding is None: + return value + precision = getattr(dao, axis + "_precision") + increment = precision / (60000 if dao.encoding == "decimal" else 91 * 6000) + return math.copysign(abs(value) + direction * increment, value) diff --git a/packages/aprs/src/hamkit/aprs/_weather.py b/packages/aprs/src/hamkit/aprs/_weather.py new file mode 100644 index 0000000..da7dcd0 --- /dev/null +++ b/packages/aprs/src/hamkit/aprs/_weather.py @@ -0,0 +1,241 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Weather token grammar; absent and unavailable observations remain distinct.""" + +from __future__ import annotations + +import re +from typing import Any + +from ._data import Measurement, WaterHeight, Weather +from ._errors import FieldError +from ._fields import decode_timestamp, encode_timestamp +from ._text import free_text + +_FIELDS: dict[str, tuple[str, Any, int, float]] = { + "c": ("wind_direction", "degrees", 3, 1), + "s": ("wind_speed", "mph", 3, 1), + "g": ("gust", "mph", 3, 1), + "t": ("temperature", "fahrenheit", 3, 1), + "r": ("rain_1h", "inches", 3, 0.01), + "p": ("rain_24h", "inches", 3, 0.01), + "P": ("rain_since_midnight", "inches", 3, 0.01), + "h": ("humidity", "percent", 2, 1), + "b": ("pressure", "hPa", 5, 0.1), + "L": ("luminosity", "W/m2", 3, 1), + "l": ("luminosity", "W/m2", 3, 1), + "#": ("rain_counter", "count", 3, 1), +} + + +def read( + raw: bytes, *, positioned=False, compressed=False, diagnostics=None +) -> tuple[Weather, bytes]: + original = raw + values: dict[str, Any] = {} + timestamp = None + if not positioned: + if len(raw) < 8: + raise FieldError("truncated weather timestamp") + timestamp = decode_timestamp(raw[:8]) + raw = raw[8:] + elif not compressed: + match = re.match(rb"([0-9. ]{3})/([0-9. ]{3})", raw) + if match: + c, s = match[1], match[2] + unavailable = c == s == b"000" + values["wind_direction"] = Measurement( + int(c) if c.isdigit() and not unavailable else None, "degrees", raw=c + ) + values["wind_speed"] = Measurement( + int(s) if s.isdigit() and not unavailable else None, + "disputed_knots_or_mph", + raw=s, + ) + raw = raw[7:] + while raw: + tag = chr(raw[0]) + if tag in "Ff": + match = re.match(rb"[Ff](-?\d+(?:\.\d+)?)", raw) + if match: + values["water_height"] = WaterHeight( + Measurement(float(match[1]), "feet" if tag == "F" else "meters") + ) + raw = raw[match.end() :] + continue + if tag not in _FIELDS: + break + name, unit, width, scale = _FIELDS[tag] + if tag == "s" and (positioned or "wind_speed" in values): + name, unit = "snow_24h", "inches" + field = raw[1 : width + 1] + if len(field) != width or not ( + field in (b"." * width, b" " * width) + or re.fullmatch(rb"-?\d+(?:\.\d+)?", field) + ): + if diagnostics is not None: + from ._models import Diagnostic + + diagnostics.append( + Diagnostic( + "nonconforming", + "invalid weather field width or value", + "$.comment", + ) + ) + break + value = None if field in (b"." * width, b" " * width) else float(field) * scale + if value is not None: + if tag == "h" and value == 0: + value = 100 + if tag == "l": + value += 1000 + values[name] = Measurement(value, unit, raw=field) + raw = raw[width + 1 :] + # APRS software + two/three-character weather device code is a suffix. + if re.fullmatch(rb"[A-Za-z][A-Za-z0-9]{2,4}", raw): + values["software_code"] = chr(raw[0]) + values["device_code"] = raw[1:].decode() + raw = b"" + if not positioned: + values["comment"] = free_text( + raw, "$.comment", diagnostics if diagnostics is not None else [] + ) + raw = b"" + return Weather(**values, timestamp=timestamp, raw=original), raw + + +def _value(m: Measurement, unit: str) -> float | None: + v = m.value + if v is None or m.unit == unit: + return v + if unit == "fahrenheit" and m.unit == "celsius": + return v * 1.8 + 32 + if unit == "inches" and m.unit == "mm": + return v / 25.4 + if unit == "knots": + if m.unit == "m/s": + return v * 3600 / 1852 + if m.unit == "mph": + return v * 1.609344 / 1.852 + if m.unit == "km/h": + return v / 1.852 + if unit == "mph": + if m.unit == "m/s": + return v / 0.44704 + if m.unit == "knots": + return v * 1.852 / 1.609344 + if m.unit == "km/h": + return v / 1.609344 + raise FieldError("weather measurement unit cannot be encoded in this field") + + +def _number(value: float | None, width: int, scale: float = 1) -> bytes: + if value is None: + return b"." * width + number = round(value / scale) + raw = f"{number:0{width}d}".encode() + if len(raw) != width: + raise FieldError("weather value exceeds field width") + return raw + + +def write(w: Weather, *, positioned=False, compressed=False) -> bytes: + raw = b"" + if not positioned: + if w.timestamp is None: + raise FieldError("positionless weather requires timestamp") + raw = b"_" + encode_timestamp(w.timestamp) + if positioned and not compressed: + if w.wind_direction is None or w.wind_speed is None: + raise FieldError("positioned weather requires wind fields") + speed = w.wind_speed + value = ( + speed.value + if speed.unit == "disputed_knots_or_mph" + else _value(speed, "mph") + ) + raw += _number(w.wind_direction.value, 3) + b"/" + _number(value, 3) + for tag, (name, unit, width, scale) in _FIELDS.items(): + if tag == "l" or positioned and tag in "cs": + continue + reading = getattr(w, name) + if reading is None: + continue + v = _value(reading, unit) + if tag == "h" and v == 100: + v = 0 + if tag == "L" and v is not None and v >= 1000: + tag = "l" + v -= 1000 + raw += tag.encode() + _number(v, width, scale) + if w.snow_24h: + v = _value(w.snow_24h, "inches") + if v is not None and v != int(v): + field = f"{v:.1f}".encode() + if len(field) != 3: + raise FieldError("snow value exceeds field width") + else: + field = _number(v, 3) + raw += b"s" + field + if w.water_height: + if w.water_height.reference_datum is not None: + raise FieldError("water-height datum has no wire field") + m = w.water_height.measurement + if m.value is None: + raise FieldError("water height requires a value") + raw += (b"F" if m.unit == "feet" else b"f") + f"{m.value:g}".encode() + raw += ( + (w.software_code or "").encode() + + (w.device_code or "").encode() + + w.comment.encode() + ) + return raw + + +def vendor(raw: bytes) -> Weather | None: + """Decode the documented Ultimeter 2000 numeric fields; keep raw separately.""" + if not raw.startswith((b"$ULTW", b"!!")): + return None + logging = raw.startswith(b"!!") + data = raw[2:] if logging else raw[5:] + values: list[int | None] = [] + for i in range(0, len(data) - 3, 4): + token = data[i : i + 4] + if token == b"----": + values.append(None) + continue + if not re.fullmatch(rb"[0-9A-Fa-f]{4}", token): + break + value = int(token, 16) + values.append(value - 65536 if value >= 32768 else value) + if not values: + return None + + def get(i): + return values[i] if i < len(values) else None + + found = {} + + def add(name, index, unit, convert): + value = get(index) + if value is not None: + found[name] = Measurement(convert(value), unit) + + add("wind_speed" if logging else "gust", 0, "m/s", lambda x: round(x / 36, 1)) + add("wind_direction", 1, "degrees", lambda x: round((x & 255) * 1.41176)) + add("temperature", 2, "celsius", lambda x: round((x / 10 - 32) / 1.8, 1)) + add("rain_since_midnight", 3, "mm", lambda x: round(x * 0.254, 1)) + if get(4) is not None and get(4) >= 10: + add("pressure", 4, "hPa", lambda x: x / 10) + humidity = 6 if logging else 8 + if get(humidity) is not None and 1 <= get(humidity) // 10 <= 100: + add("humidity", humidity, "percent", lambda x: x // 10) + add( + "rain_since_midnight", + 10 if logging else 11, + "mm", + lambda x: round(x * 0.254, 1), + ) + add("wind_speed", 11 if logging else 12, "m/s", lambda x: round(x / 36, 1)) + return Weather(**found, raw=raw) diff --git a/packages/aprs/tests/generate_vectors.py b/packages/aprs/tests/generate_vectors.py index bc58894..c7bbe36 100644 --- a/packages/aprs/tests/generate_vectors.py +++ b/packages/aprs/tests/generate_vectors.py @@ -5,6 +5,7 @@ Run from any directory. Unmapped assertions remain verbatim beside the projection; they are deliberately not claimed as tested public-model fields. """ + from __future__ import annotations import copy @@ -69,9 +70,11 @@ def header(data: JSON) -> JSON: def stamp(data: JSON) -> JSON: kind = { - "DHM": "dhm_local" - if str(data.get("zone")).lower() in ("local", "sender-local") - else "dhm_utc", + "DHM": ( + "dhm_local" + if str(data.get("zone")).lower() in ("local", "sender-local") + else "dhm_utc" + ), "HMS": "hms_utc", "MDHM": "mdhm_utc", }[data["format"]] @@ -89,6 +92,8 @@ def telemetry(data: JSON) -> JSON: if "digital_bits" in data: result["digital"] = [c == "1" for c in data["digital_bits"]] result["encoding"] = data.get("encoding", "classic").replace("-", "_") + if result.get("sequence_raw") == "MIC": + result["sequence"] = "MIC" return result @@ -109,6 +114,15 @@ def weather(data: JSON) -> JSON: for key, (name, unit) in units.items(): if key in data: result[name] = {"value": data[key], "unit": unit} + if "water_height" in data: + w = data["water_height"] + result["water_height"] = { + "measurement": { + "value": w["value"], + "unit": {"ft": "feet", "m": "meters"}[w["unit"]], + }, + "reference_datum": w["reference_datum"], + } # Rain is sent in hundredths of an inch. Project that wire unit, like every # other reading; the source's millimetre conversions stay unmapped. for name in ("rain_1h", "rain_24h", "rain_since_midnight"): @@ -183,6 +197,10 @@ def translate(e: JSON) -> JSON: } if m.get("position_comment") in names: p["message"] = names[m["position_comment"]] + if str(m.get("position_comment", "")).startswith("Custom-"): + p["message"] = m["position_comment"].lower().replace("-", "_") + if str(m.get("position_comment")).lower() == "unknown": + p["message"] = "unknown" if m.get("dti_fix") in ("current", "old"): p["fix"] = m["dti_fix"] ext: JSON = {} @@ -204,7 +222,7 @@ def translate(e: JSON) -> JSON: ( "area", "area", - "shape_code color_code latitude_offset_code longitude_offset_code", + "shape_code color_code latitude_offset_code longitude_offset_code corridor_half_width_miles", ), ("signpost", "signpost", "label"), ): @@ -274,6 +292,8 @@ def translate(e: JSON) -> JSON: if kind == "query": q = e["query"] p["name"] = q["type"] + if "heard_station" in q: + p["heard_station"] = q["heard_station"] if "message" in e: p["addressee"] = e["message"]["addressee"] if "radius_miles" in q: @@ -294,7 +314,8 @@ def translate(e: JSON) -> JSON: } definition: JSON = {"type": tags[d["type"]]} if "channels" in d: - definition["channels"] = d["channels"] + channels = d["channels"] + definition["channels"] = channels + [None] * (13 - len(channels)) if "coefficients_abc" in d: definition["coefficients"] = [ dict(zip(("a", "b", "c"), x)) for x in d["coefficients_abc"] @@ -335,7 +356,13 @@ def translate(e: JSON) -> JSON: "dgps_age_raw": "dgps_age", "dgps_station_raw": "dgps_station", } - sentence.update({v: n[k] for k, v in renames.items() if k in n}) + sentence.update( + { + v: (n[k] or None) if k.startswith("dgps_") else n[k] + for k, v in renames.items() + if k in n + } + ) sentence.update( select( n, @@ -356,7 +383,12 @@ def translate(e: JSON) -> JSON: if "altitude" in e: sentence["altitude_msl_m"] = e["altitude"]["meters"] if "motion" in e: - sentence.update(select(e["motion"], "speed_knots course_deg")) + sentence.update( + select( + e["motion"], + "speed_knots course_deg course_true_deg course_magnetic_deg speed_kmh_reported", + ) + ) p.pop("extensions", None) p.update( sentence=sentence, @@ -406,6 +438,35 @@ def translate(e: JSON) -> JSON: "record": record, "message_id": e["message"].get("message_id"), } + if p.get("type") == "message" and p.get("message_id") is None: + text = p.get("text", "") + response = None + if text.startswith("Directs= "): + response = {"type": "direct_stations", "stations": text[9:].split()} + elif match := re.fullmatch( + r"([A-Za-z0-9-]+) HEARD: ((?:[0-9]+|\.)(?: (?:[0-9]+|\.)){7})", text + ): + response = { + "type": "heard_station", + "station": match[1], + "counts": [None if c == "." else int(c) for c in match[2].split()], + } + elif re.fullmatch(r"[A-Za-z0-9-]+>[A-Za-z0-9,*-]+:", text): + source, route = text[:-1].split(">") + dest, *hops = route.split(",") + response = { + "type": "trace", + "header": { + "source": source, + "destination": dest, + "path": [ + {"address": h.rstrip("*"), "repeated": h.endswith("*")} + for h in hops + ], + }, + } + if response is not None: + p = {"type": "response", "addressee": p["addressee"], "response": response} result["payload"] = p return result @@ -438,9 +499,11 @@ def fap_projection(e: JSON, packet: str) -> JSON: "Status": "status_text", } normal.update({v: f[k] for k, v in renames.items() if f.get(k) is not None}) + if normal.get("format") == "mice": + normal["format"] = "mic-e" name_key = "ObjectName" if normal["kind"] == "object" else "ItemName" if f.get(name_key): - normal["name"] = f[name_key] + normal["name"] = f[name_key].rstrip(" ") if f.get("Latitude") is not None or f.get("Longitude") is not None: normal["position"] = { v: f[k] @@ -546,11 +609,13 @@ def fap_projection(e: JSON, packet: str) -> JSON: "uncompressed", "compressed", "mic-e", + "mice", ): encoding = { "uncompressed": "feet_extension", "compressed": "compressed", "mic-e": "mic_e", + "mice": "mic_e", }[f["Format"]] unit = "meters" if encoding == "mic_e" else "feet" altitude = f["Altitude"] if unit == "meters" else f["Altitude"] / 0.3048 @@ -622,10 +687,8 @@ def records() -> list[JSON]: if key in case: row[key] = case[key] if "steps" in case: - row["expected"] = None - row[ - "unresolved" - ] = "State assertions are not decoded packet outputs; a packet-model expectation needs separate review." + row["expected"] = {"type": "packet"} + row["state_expected"] = copy.deepcopy(step["expected"]) elif row["outcome"].startswith("reject"): row["expected"] = {"original_wire": row["packet"]} row[ @@ -645,14 +708,6 @@ def records() -> list[JSON]: "unresolved" ] = "Source has no mapped payload expectation; retain the original assertions for adapter completion." result.append(row) - gaps = json.loads((ROOT / "tests/vector_gaps.json").read_text()) - by_id = {r["id"]: r for r in result} - for group in gaps: - for identity, allowed in group["cases"].items(): - assert "gap" not in by_id[identity], identity - by_id[identity]["gap"] = {"kind": group["kind"], "reason": group["reason"]} - if allowed: - by_id[identity]["gap"]["allowed_actual"] = allowed return result diff --git a/packages/aprs/tests/packets/test_codec.py b/packages/aprs/tests/packets/test_codec.py index 5376c59..7fea973 100644 --- a/packages/aprs/tests/packets/test_codec.py +++ b/packages/aprs/tests/packets/test_codec.py @@ -141,13 +141,9 @@ def test_status_round_trip(self) -> None: def test_unsupported_preserved(self) -> None: for information in ( - b"`\x1c\x7f\xff", - b";object", - b"T#001,1,2,3,4,5,00000000", - b"!4903.5 N/07201.7 W-", - b"!/5L!!<*e7>7P[", - b":BLN0 :Notice", - b":NWS-WARN :Warning{123", + b"~unknown", + b"&reserved", + b"$GPXYZ,unknown", ): with self.subTest(information=information): packet = parse_packet(b"N0CALL>APRS:" + information) @@ -163,7 +159,7 @@ def test_bad_envelopes(self) -> None: b">APRS:>x", b"N0CALL>APRS,:>x", b"N0CALL>APRS,D1**:>x", - b"N0CALL>APRS>BAD:>x", + b"N0CALL>APRS>>BAD:>x", b"N0CALL >APRS:>x", ): with self.subTest(wire=wire): diff --git a/packages/aprs/tests/packets/test_codec_regressions.py b/packages/aprs/tests/packets/test_codec_regressions.py new file mode 100644 index 0000000..8485236 --- /dev/null +++ b/packages/aprs/tests/packets/test_codec_regressions.py @@ -0,0 +1,169 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Composition and malformed-input regressions beyond fixture projections.""" +from __future__ import annotations + +import dataclasses +import random + +import pytest +from packets.test_corpus import rows +from packets.test_roundtrip_corpus import same_semantics, without_evidence +from receiver import Receiver + +from hamkit import aprs as a + + +def packet(raw): + value = a.parse_packet(raw) + assert isinstance(value, a.Packet) + return value + + +def test_editing_nmea_recomputes_checksum_and_ignores_lexical_evidence(): + original = packet(b"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*31") + n = original.payload + assert isinstance(n, a.NMEA) and isinstance(n.sentence, a.GLL) + changed = dataclasses.replace( + original, + payload=dataclasses.replace( + n, + sentence=dataclasses.replace(n.sentence, coordinates=a.Coordinates(51, -1)), + ), + ) + wire = a.serialize_packet(changed) + assert b"5100,N,00100,W" in wire and wire != original.original_wire + decoded = packet(wire).payload + assert isinstance(decoded, a.NMEA) + assert decoded.sentence.coordinates == a.Coordinates(51, -1) + assert decoded.metadata.checksum_valid is True + + +def test_dao_is_not_applied_twice_when_composing(): + original = packet(b"N0CALL>APRS:!4903.50N/07201.75W>!W12!") + clean = without_evidence(original) + for _ in range(5): + clean = packet(a.serialize_packet(clean)) + same_semantics(original, clean) + p = original.payload + changed = dataclasses.replace( + original, payload=dataclasses.replace(p, latitude_deg=p.latitude_deg + 1) + ) + assert b"5003.50N" in a.serialize_packet(changed) + + +def test_mic_e_uses_edited_semantics_and_checks_destination(): + original = packet(b"N0CALL>490S5P:`123456>/") + p = original.payload + assert isinstance(p, a.MicE) + modified = dataclasses.replace( + original, + payload=dataclasses.replace( + p, extensions=dataclasses.replace(p.extensions, motion=a.Motion(270, 42)) + ), + ) + decoded = packet(a.serialize_packet(modified)) + assert decoded.payload.extensions.motion == a.Motion(270, 42) + invalid = dataclasses.replace(modified, header=a.Header("N0CALL", "APRS")) + with pytest.raises(a.FieldError, match="destination"): + a.serialize_packet(invalid) + + +@pytest.mark.parametrize( + "response", + [ + a.DirectStations(("W1AW", "W2ABC")), + a.HeardStation("W1AW", (1, None, 3, 0, 0, 0, 0, 0)), + a.Trace(a.Header("N0CALL", "APRS", (a.Hop("WIDE1-1", True),))), + ], +) +def test_structured_query_response_roundtrip(response): + p = a.Response("W1AW", response) + assert a.parse_payload(a.serialize_payload(p)) == p + + +def test_station_weather_association_survives_interleaved_station(): + receiver = Receiver() + receiver.receive(packet(b"N0CALL>APRS:!4903.50N/07201.75W_")) + receiver.receive(packet(b"W1AW>APRS:!5100.00N/00100.00W_")) + state = receiver.receive(packet(b"N0CALL>APRS:_10151800c220s004g005t077")) + assert state["weather_latitude_deg"] == pytest.approx(49.058333333333) + assert state["weather_longitude_deg"] == pytest.approx(-72.029166666667) + + +def test_truncation_and_mutation_do_not_escape_recovery(): + rng = random.Random(4) + for raw in sorted({r["packet"].encode("latin1") for r in rows()}): + candidates = [raw[:i] for i in range(len(raw))] + for _ in range(8): + if raw: + i = rng.randrange(len(raw)) + candidates.append(raw[:i] + bytes([rng.randrange(256)]) + raw[i + 1 :]) + for candidate in candidates: + try: + result = a.parse_packet(candidate) + except (a.ContextRequiredError, a.ResourceLimitError): + continue + assert isinstance(result, (a.Packet, a.Malformed)), repr(candidate) + assert result.original_wire == candidate + + +def test_weather_metric_units_are_converted_before_compression(): + weather = a.Weather( + wind_direction=a.Measurement(180, "degrees"), + wind_speed=a.Measurement(10, "m/s"), + gust=a.Measurement(12, "m/s"), + temperature=a.Measurement(20, "celsius"), + ) + p = a.Position( + 49, + -72, + a.Symbol("/", "_"), + compression=a.Compression(fix="current", nmea_source="RMC", origin_code=0), + extensions=a.Extensions(weather=weather), + ) + decoded = a.parse_payload(a.serialize_payload(p)) + assert isinstance(decoded, a.Position) and decoded.extensions.weather is not None + w = decoded.extensions.weather + assert w.wind_speed.unit == "knots" + assert w.wind_speed.value == pytest.approx(10 * 3600 / 1852, rel=0.05) + assert w.temperature == a.Measurement(68, "fahrenheit") + + +def test_unrepresentable_annotations_and_field_overflow_are_not_dropped(): + storm = a.Storm( + "HC", + predicted=False, + sustained_wind_knots=1000, + peak_gust_knots=100, + central_pressure_hpa=990, + hurricane_radius_nm=20, + tropical_storm_radius_nm=50, + ) + p = a.Position( + 49, + -72, + a.Symbol("\\", "@"), + extensions=a.Extensions(motion=a.Motion(90, 10), storm=storm), + ) + with pytest.raises(a.ConformanceError, match="sustained_wind"): + a.serialize_payload(p) + with pytest.raises(a.FieldError, match="structured fields"): + a.serialize_payload(a.Status("IO91/- House")) + with pytest.raises(a.FieldError, match="query response"): + a.serialize_payload(a.Message("W1AW", "Directs= N0CALL")) + report = a.NMEA( + a.GLL(a.Coordinates(49, -72), "120000", "A"), + a.NMEAMetadata("GP"), + symbol=a.Symbol("/", "-"), + ) + with pytest.raises(a.FieldError, match="symbol"): + a.serialize_packet(a.Packet(a.Header("N0CALL", "APRS"), report)) + + +def test_invalid_signpost_token_and_oversized_sequence_are_malformed(): + for wire in ( + b"N0CALL>APRS:!4903.50N\\07201.75Wm{\xff}", + b"N0CALL>APRS:T#" + b"1" * 5000 + b",1,2,3,4,5,00000000", + ): + assert isinstance(a.parse_packet(wire), a.Malformed) diff --git a/packages/aprs/tests/packets/test_corpus.py b/packages/aprs/tests/packets/test_corpus.py index 9c109ac..7a94a2f 100644 --- a/packages/aprs/tests/packets/test_corpus.py +++ b/packages/aprs/tests/packets/test_corpus.py @@ -1,6 +1,7 @@ # SPDX-FileCopyrightText: 2024-present Adam Fourney # SPDX-License-Identifier: MIT -"""Every JSONL row is independently collected; only reviewed gaps may xfail.""" +"""Every JSONL row is independently collected, without expected-failure escapes.""" + from __future__ import annotations import json @@ -15,10 +16,6 @@ DIRECTORY = Path(__file__).parents[1] / "vectors" -class KnownGap(AssertionError): - """A specifically enumerated missing capability, never a generic mismatch.""" - - def differences(actual: Any, expected: Any, path: str = "$") -> list[str]: if isinstance(expected, dict): if not isinstance(actual, dict): @@ -53,86 +50,51 @@ def differences(actual: Any, expected: Any, path: str = "$") -> list[str]: ) +def rows(): + return [ + json.loads(line) + for file in sorted(DIRECTORY.glob("*.jsonl")) + for line in file.read_text().splitlines() + ] + + def load() -> list[Any]: - params = [] - for file in sorted(DIRECTORY.glob("*.jsonl")): - for line, text in enumerate(file.read_text().splitlines(), 1): - row = json.loads(text) - label = f"{file.name}:{line}:{row['id']}" - marks = [] - if row.get("gap"): - marks = [ - pytest.mark.xfail( - strict=True, raises=KnownGap, reason=row["gap"]["reason"] - ) - ] - params.append(pytest.param(row, id=label, marks=marks)) - assert params, "no vectors found" - return params + return [pytest.param(row, id=row["id"]) for row in rows()] def check(row: dict[str, Any]) -> None: + from hamkit.aprs._compatibility import view + raw = row["packet"].encode("latin-1") - packet = aprs.parse_packet( - raw, - profile="rf" - if row["profile"] == "strict-envelope" or row.get("options", {}).get("ax25") - else "monitor", - ) - actual = aprs.to_json_dict(packet, include_defaults=True) + actual, rejected = view(raw, row["profile"], row.get("options")) assert actual["original_wire"] == row["packet"], "original bytes changed" - if row.get("unresolved"): - raise KnownGap(row["unresolved"]) - expected = row["expected"] - errors = differences(actual, expected) + assert not row.get("gap") and not row.get("unresolved") + errors = differences(actual, row["expected"]) + if row.get("rejection") and not rejected: + errors.append("$: expected malformed/nonconforming input") if row.get("rejection"): - rejected = isinstance(packet, aprs.Malformed) or any( - d.code == "nonconforming" for d in packet.diagnostics + from source_details import check_rejection + + errors.extend(check_rejection(row)) + if row.get("unmapped"): + from source_details import check_core, check_fap + + errors.extend( + (check_fap if row["profile"] == "compatibility-fap" else check_core)(row) ) - if not rejected: - errors.append("$: expected malformed/nonconforming input") - if not errors: - return - gap = row.get("gap", {}) - if ( - gap.get("kind") == "opaque" - and isinstance(packet, aprs.Packet) - and isinstance(packet.payload, aprs.Opaque) - ): - if "header" in expected: - assert not differences( - actual["header"], expected["header"] - ), "opaque header changed" - assert ( - packet.payload.information == raw.partition(b":")[2] - ), "opaque bytes changed" - assert packet.payload.diagnostic is not None - assert ( - gap["reason"] - == "Unimplemented decoding: " + packet.payload.diagnostic.message - ), "different unsupported capability" - raise KnownGap(gap["reason"] + "\n" + "\n".join(errors)) - if gap.get("kind") == "fields": - allowed = gap["allowed_actual"] - paths = {error.split(": ", 1)[0] for error in errors} - if paths <= allowed.keys(): - for path in paths: - if path == "$": - assert allowed[path] == "rejection" and isinstance( - packet, aprs.Packet - ) - continue - current: Any = actual - for key in path[2:].split("."): - if not isinstance(current, dict) or key not in current: - current = {"missing": True} - break - current = current[key] - assert ( - current == allowed[path] - ), f"{path}: changed beyond the documented gap" - raise KnownGap(gap["reason"] + "\n" + "\n".join(errors)) - raise AssertionError("\n".join(errors)) + if row.get("sequence"): + from receiver import Receiver + + receiver = Receiver() + for step in rows(): + if step.get("sequence") == row["sequence"]: + state = receiver.receive( + aprs.parse_packet(step["packet"].encode("latin1")) + ) + if step["id"] == row["id"]: + errors.extend(differences(state, row["state_expected"])) + break + assert not errors, "\n".join(errors) @pytest.mark.parametrize("row", load()) diff --git a/packages/aprs/tests/packets/test_policies.py b/packages/aprs/tests/packets/test_policies.py index 37dcd1b..149a046 100644 --- a/packages/aprs/tests/packets/test_policies.py +++ b/packages/aprs/tests/packets/test_policies.py @@ -8,32 +8,25 @@ class PolicyTests(unittest.TestCase): - def test_unimplemented_families_have_explicit_failure(self) -> None: - for information in ( - b"!/5L!!<*e7>7P[", - b";OBJECT *", - b")ITEM!", - b"_10171230", - b"T#001,1,2,3,4,5,00000000", - b":BLN0 :Notice", - b":N0CALL :PARM.Temp", - b"?APRS?", - b" None: + for information, cls in ( + (b"!/5L!!<*e7>7P[", a.Position), + (b"T#001,1,2,3,4,5,00000000", a.Telemetry), + (b":BLN0 :Notice", a.Bulletin), + (b":N0CALL :PARM.Temp", a.TelemetryDefinition), + (b"?APRS?", a.Query), + (b" None: raw = b"N0CALL>APRS:!9000.01N/07201.75W-" @@ -99,11 +92,11 @@ def test_third_party_boundary_and_inner_context(self) -> None: a.parse_packet(wire, max_third_party_depth=1) with self.assertRaises(a.ResourceLimitError): a.parse_payload(b"}W1AW>APRS:>Ready", max_third_party_depth=0) - parsed = a.parse_packet(b"N0CALL>APRS:}W1AW>490S5P:`12345678") + parsed = a.parse_packet(b"N0CALL>APRS:}W1AW>490S5P:`123456>/") assert isinstance(parsed, a.Packet) assert isinstance(parsed.payload, a.ThirdParty) self.assertEqual(parsed.payload.packet.header.destination, "490S5P") - self.assertIsInstance(parsed.payload.packet.payload, a.Opaque) + self.assertIsInstance(parsed.payload.packet.payload, a.MicE) def test_third_party_findings_carry_their_path(self) -> None: parsed = a.parse_packet(b"N0CALL>APRS:}W1AW>APRS:>Caf\xe9|") @@ -135,19 +128,13 @@ def test_status_non_utc_timestamp_looking_text(self) -> None: self.assertEqual(a.parse_payload(b">" + text.encode()), a.Status(text)) self.assertEqual(a.serialize_payload(a.Status(text)), b">" + text.encode()) - def test_new_fields_never_imply_working_codecs(self) -> None: + def test_mdhm_and_dao_codecs(self) -> None: from hamkit.aprs._fields import decode_timestamp, encode_timestamp - with self.assertRaises(a.CodecNotImplementedError): - encode_timestamp(a.Timestamp.mdhm(10, 17, 12, 30)) - with self.assertRaises(a.CodecNotImplementedError): - decode_timestamp(b"10171230") - with self.assertRaises(a.CodecNotImplementedError): - a.serialize_payload( - a.Position( - 49, - -72, - a.Symbol("/", "-"), - extensions=a.Extensions(dao=a.DAO("W")), - ) - ) + stamp = a.Timestamp.mdhm(10, 17, 12, 30) + self.assertEqual(encode_timestamp(stamp), b"10171230") + self.assertEqual(decode_timestamp(b"10171230"), stamp) + p = a.Position( + 49, -72, a.Symbol("/", "-"), extensions=a.Extensions(dao=a.DAO("W")) + ) + self.assertEqual(a.parse_payload(a.serialize_payload(p)), p) diff --git a/packages/aprs/tests/packets/test_roundtrip_corpus.py b/packages/aprs/tests/packets/test_roundtrip_corpus.py new file mode 100644 index 0000000..98eb347 --- /dev/null +++ b/packages/aprs/tests/packets/test_roundtrip_corpus.py @@ -0,0 +1,118 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Every vector is encoded from semantic fields or has a reviewed refusal reason.""" +from __future__ import annotations + +import dataclasses +import json +import math +from pathlib import Path +from typing import Any + +import pytest +from packets.test_corpus import load, rows + +from hamkit import aprs as a + +EXCEPTIONS = json.loads( + (Path(__file__).parents[1] / "roundtrip_exceptions.json").read_text() +) + + +def without_evidence(value: Any) -> Any: + if dataclasses.is_dataclass(value) and not isinstance(value, type): + return dataclasses.replace( + value, + **{ + f.name: without_evidence(getattr(value, f.name)) + if f.compare + else f.default + for f in dataclasses.fields(value) + }, + ) + if isinstance(value, tuple): + return tuple(without_evidence(v) for v in value) + return value + + +def same_semantics(x: Any, y: Any, path="$") -> None: + assert ( + type(x) is type(y) + or isinstance(x, (int, float)) + and isinstance(y, (int, float)) + ), path + if dataclasses.is_dataclass(x): + for f in dataclasses.fields(x): + # Checksum characters describe the original lexemes, which the + # encoder can normalize. Their validity is checked separately. + if f.compare and not ( + isinstance(x, a.NMEAMetadata) and f.name == "checksum_supplied" + ): + same_semantics( + getattr(x, f.name), getattr(y, f.name), path + "." + f.name + ) + elif isinstance(x, tuple): + assert len(x) == len(y), path + for i, (v, w) in enumerate(zip(x, y)): + same_semantics(v, w, f"{path}[{i}]") + elif isinstance(x, (float, int)) and not isinstance(x, bool): + assert math.isclose(x, y, abs_tol=1e-8, rel_tol=1e-9), (path, x, y) + if x == y == 0: + assert math.copysign(1, x) == math.copysign(1, y), ( + path, + "hemisphere changed", + ) + else: + assert x == y, (path, x, y) + + +@pytest.mark.parametrize("row", load()) +def test_vector_roundtrip(row): + packet = a.parse_packet(row["packet"].encode("latin1")) + # JSON is lossless even for malformed or nonconforming received packets. + assert a.to_json_dict(a.from_json(a.to_json(packet))) == a.to_json_dict(packet) + exception = EXCEPTIONS.get(row["id"]) + if isinstance(packet, a.Malformed): + assert exception is not None and exception["kind"] == "malformed" + assert [d.message for d in packet.diagnostics] == exception["reasons"] + return + clean = without_evidence(packet) + if exception: + assert exception["kind"] == "conformance" + with pytest.raises(a.ConformanceError) as caught: + a.serialize_packet(clean) + assert [d.message for d in caught.value.diagnostics] == exception["reasons"] + return + wire = a.serialize_packet(clean) + decoded = a.parse_packet(wire) + assert isinstance(decoded, a.Packet) + if isinstance(clean.payload, a.NMEA): + n = clean.payload + if n.metadata.checksum_supplied is not None: + assert isinstance(decoded.payload, a.NMEA) + assert decoded.payload.metadata.checksum_valid is True + if n.metadata.checksum_valid is False: + # Three deliberately bad checksums are repaired, not replayed. + s = n.sentence + usable = ( + s.fix_quality > 0 + if isinstance(s, a.GGA) + else s.fix_status == "A" + if isinstance(s, (a.GLL, a.RMC)) + else isinstance(s, a.WPL) + ) + clean = dataclasses.replace( + clean, + payload=dataclasses.replace( + n, + metadata=dataclasses.replace(n.metadata, checksum_valid=True), + position_usable=usable, + ), + ) + same_semantics(clean, decoded) + # Canonical bytes stabilize after one pass, including checksum and rounding. + assert a.serialize_packet(without_evidence(decoded)) == wire + + +def test_no_stale_exception_ids(): + assert EXCEPTIONS.keys() <= {r["id"] for r in rows()} diff --git a/packages/aprs/tests/receiver.py b/packages/aprs/tests/receiver.py new file mode 100644 index 0000000..dea65ed --- /dev/null +++ b/packages/aprs/tests/receiver.py @@ -0,0 +1,140 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Small application receiver exercising sequence semantics through public models. + +State belongs to the consuming application; the codec API remains stateless. +""" + +from hamkit import aprs as a + + +class Receiver: + def __init__(self, local="N0CALL"): + self.local = local + self.entities = {} + self.delivered = set() + self.bulletins = {} + self.status = {} + self.fallback = {} + self.positions = {} + self.definitions = {} + + def receive(self, packet): + assert isinstance(packet, a.Packet) + p, source = packet.payload, packet.header.source + if isinstance(p, (a.Object, a.Item)): + name = p.name.rstrip(" ") + self.entities[name] = p + return dict( + name=name, + owner=source, + alive=p.alive, + visible=p.alive, + latitude_deg=p.latitude_deg, + record_retained=name in self.entities, + entity_key=name, + entity_count=len(self.entities), + **{ + "type_of_" + key: "item" if isinstance(v, a.Item) else "object" + for key, v in self.entities.items() + }, + ) + if isinstance(p, a.Message): + if p.addressee != self.local: + return {"message_id": p.message_id, "piggyback_ack": p.reply_ack} + self.delivered.add((source, p.message_id, p.text)) + ack = a.Acknowledgment(source, p.message_id, reply_ack=p.reply_ack) + return dict( + deliveries=len(self.delivered), + ack_to=source, + ack_payload=a.serialize_payload(ack).decode(), + pending_reply_ack=p.message_id, + **( + {"outbound_message_" + p.reply_ack + "_acked": True} + if p.reply_ack + else {} + ), + ) + if isinstance(p, a.TelemetryDefinition): + definitions = self.definitions.setdefault(p.addressee, {}) + d = p.definition + definitions[type(d)] = d + if isinstance(d, (a.TelemetryParameters, a.TelemetryUnits)): + names = [f"A{i+1}" for i in range(5)] + [f"B{i+1}" for i in range(8)] + return { + name + + ( + "" + if isinstance(d, a.TelemetryParameters) + else "_unit" + if i < 5 + else "_label" + ): v + for i, (name, v) in enumerate(zip(names, d.channels)) + } + if isinstance(d, a.TelemetryEquations): + return { + f"A{i+1}_coefficients": [v.a, v.b, v.c] + for i, v in enumerate(d.coefficients) + if v is not None + } + return { + "sense_bits": "".join("1" if b else "0" for b in d.sense), + "project": d.project_title, + } + if isinstance(p, a.Telemetry): + definitions = self.definitions.get(source, {}) + result = {"raw_analog": list(p.analog)} + eq = definitions.get(a.TelemetryEquations) + units = definitions.get(a.TelemetryUnits) + bits = definitions.get(a.TelemetryBits) + if eq: + for i, (v, c) in enumerate(zip(p.analog, eq.coefficients)): + if v is None or c is None: + continue + value = c.a * v * v + c.b * v + c.c + result[f"A{i+1}_calibrated"] = value + if units and units.channels[i] == "v/100": + result[f"A{i+1}_volts"] = value / 100 + if units and units.channels[i] == "deg.F": + result[f"A{i+1}_fahrenheit"] = value + if bits: + result.update( + { + f"B{i+1}_label_active": b == sense + for i, (b, sense) in enumerate(zip(p.digital, bits.sense)) + if b is not None + } + ) + return result + if isinstance(p, a.Bulletin): + self.bulletins[source + "/" + p.identifier] = p.text + return {"bulletins": dict(self.bulletins)} + if isinstance(p, a.Status): + self.status[source] = p.text + return {"status": p.text} + if isinstance(p, a.Beacon): + self.fallback[source] = p.text + return { + "fallback_status": p.text, + "status": self.status.get(source, p.text), + "fallback_status_does_not_replace_explicit": source in self.status, + } + if isinstance(p, a.Position): + self.positions[source] = p.coordinates + return { + "station_latitude_deg": p.latitude_deg, + "station_longitude_deg": p.longitude_deg, + } + if isinstance(p, a.Weather): + c = self.positions.get(source) + t = p.temperature + return { + "weather_latitude_deg": c.latitude_deg if c else None, + "weather_longitude_deg": c.longitude_deg if c else None, + "temperature_c": ( + (t.value - 32) / 1.8 if t.unit == "fahrenheit" else t.value + ), + "position_inherited_not_transmitted": True, + } + raise AssertionError(type(p)) diff --git a/packages/aprs/tests/roundtrip_exceptions.json b/packages/aprs/tests/roundtrip_exceptions.json new file mode 100644 index 0000000..7b25cbd --- /dev/null +++ b/packages/aprs/tests/roundtrip_exceptions.json @@ -0,0 +1,1262 @@ +{ + "BAD-001": { + "kind": "malformed", + "reasons": [ + "missing information separator", + "missing source separator", + "empty or invalid address token" + ] + }, + "BAD-002": { + "kind": "malformed", + "reasons": ["missing information separator"] + }, + "BAD-003": { + "kind": "malformed", + "reasons": ["missing source separator"] + }, + "BAD-004": { + "kind": "malformed", + "reasons": ["empty or invalid address token"] + }, + "BAD-005": { + "kind": "malformed", + "reasons": ["empty or invalid address token"] + }, + "BAD-006": { + "kind": "malformed", + "reasons": ["information field is empty"] + }, + "BAD-007": { + "kind": "malformed", + "reasons": ["empty or invalid address token"] + }, + "BAD-008": { + "kind": "malformed", + "reasons": ["empty or invalid address token"] + }, + "BAD-014": { + "kind": "malformed", + "reasons": ["empty or invalid address token"] + }, + "BAD-015": { + "kind": "malformed", + "reasons": ["coordinate out of range", "coordinate out of range"] + }, + "BAD-016": { + "kind": "malformed", + "reasons": ["coordinate out of range", "coordinate out of range"] + }, + "BAD-017": { + "kind": "malformed", + "reasons": ["coordinate out of range", "coordinate out of range"] + }, + "BAD-018": { + "kind": "malformed", + "reasons": ["coordinate out of range", "coordinate out of range"] + }, + "BAD-019": { + "kind": "malformed", + "reasons": ["coordinate out of range", "coordinate out of range"] + }, + "BAD-020": { + "kind": "malformed", + "reasons": ["coordinate out of range", "coordinate out of range"] + }, + "BAD-021": { + "kind": "malformed", + "reasons": ["invalid coordinate syntax", "invalid coordinate syntax"] + }, + "BAD-022": { + "kind": "malformed", + "reasons": ["invalid coordinate syntax", "invalid coordinate syntax"] + }, + "BAD-023": { + "kind": "malformed", + "reasons": ["invalid coordinate syntax", "invalid coordinate syntax"] + }, + "BAD-024": { + "kind": "malformed", + "reasons": [ + "ambiguity must hide trailing minute digits", + "position ambiguity is not implemented" + ] + }, + "BAD-025": { + "kind": "malformed", + "reasons": [ + "longitude cannot be more ambiguous than latitude", + "position ambiguity is not implemented" + ] + }, + "BAD-026": { + "kind": "malformed", + "reasons": [ + "truncated uncompressed position", + "missing or truncated field", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-027": { + "kind": "malformed", + "reasons": [ + "truncated uncompressed position", + "missing or truncated field", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-028": { + "kind": "malformed", + "reasons": [ + "truncated uncompressed position", + "missing or truncated field", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-029": { + "kind": "malformed", + "reasons": [ + "truncated uncompressed position", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-030": { + "kind": "malformed", + "reasons": [ + "truncated uncompressed position", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-031": { + "kind": "malformed", + "reasons": [ + "truncated uncompressed position", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-032": { + "kind": "malformed", + "reasons": ["truncated uncompressed position", "missing or truncated field"] + }, + "BAD-033": { + "kind": "conformance", + "reasons": ["begins with an invalid data extension"] + }, + "BAD-036": { + "kind": "conformance", + "reasons": ["begins with an invalid data extension"] + }, + "BAD-037": { + "kind": "conformance", + "reasons": ["begins with an invalid data extension"] + }, + "BAD-038": { + "kind": "conformance", + "reasons": ["begins with an invalid data extension"] + }, + "BAD-039": { + "kind": "conformance", + "reasons": ["contains an invalid /A= altitude"] + }, + "BAD-040": { + "kind": "conformance", + "reasons": ["contains an invalid /A= altitude"] + }, + "BAD-041": { + "kind": "malformed", + "reasons": [ + "truncated uncompressed position", + "missing or truncated field", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-042": { + "kind": "malformed", + "reasons": [ + "truncated compressed position", + "missing or truncated field", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-043": { + "kind": "malformed", + "reasons": [ + "truncated compressed position", + "missing or truncated field", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-044": { + "kind": "malformed", + "reasons": [ + "truncated compressed position", + "missing or truncated field", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-045": { + "kind": "malformed", + "reasons": [ + "truncated compressed position", + "missing or truncated field", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-046": { + "kind": "malformed", + "reasons": [ + "truncated compressed position", + "missing or truncated field", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-047": { + "kind": "malformed", + "reasons": [ + "truncated compressed position", + "missing or truncated field", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-048": { + "kind": "malformed", + "reasons": [ + "truncated compressed position", + "missing or truncated field", + "missing or truncated field", + "missing or truncated field" + ] + }, + "BAD-049": { + "kind": "malformed", + "reasons": [ + "truncated compressed position", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-050": { + "kind": "malformed", + "reasons": [ + "truncated compressed position", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-051": { + "kind": "malformed", + "reasons": [ + "truncated compressed position", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-052": { + "kind": "malformed", + "reasons": [ + "truncated compressed position", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-053": { + "kind": "malformed", + "reasons": [ + "truncated compressed position", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-054": { + "kind": "malformed", + "reasons": [ + "invalid base-91 field", + "missing or truncated field", + "missing or truncated field", + "position ambiguity is not implemented" + ] + }, + "BAD-055": { + "kind": "malformed", + "reasons": [ + "invalid base-91 field", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-056": { + "kind": "malformed", + "reasons": [ + "invalid base-91 field", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-057": { + "kind": "malformed", + "reasons": [ + "invalid base-91 field", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-058": { + "kind": "malformed", + "reasons": [ + "invalid base-91 field", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-059": { + "kind": "malformed", + "reasons": [ + "invalid base-91 field", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-060": { + "kind": "malformed", + "reasons": [ + "invalid compressed symbol table", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-061": { + "kind": "malformed", + "reasons": [ + "invalid compressed symbol table", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-062": { + "kind": "malformed", + "reasons": [ + "invalid compressed symbol table", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-063": { + "kind": "malformed", + "reasons": [ + "invalid compressed symbol table", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-064": { + "kind": "malformed", + "reasons": [ + "invalid compressed symbol table", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-065": { + "kind": "malformed", + "reasons": [ + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-066": { + "kind": "malformed", + "reasons": [ + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "BAD-067": { + "kind": "malformed", + "reasons": ["invalid Mic-E destination"] + }, + "BAD-068": { + "kind": "malformed", + "reasons": ["invalid Mic-E destination"] + }, + "BAD-069": { + "kind": "malformed", + "reasons": ["invalid Mic-E destination"] + }, + "BAD-070": { + "kind": "malformed", + "reasons": ["invalid Mic-E destination"] + }, + "BAD-071": { + "kind": "malformed", + "reasons": ["invalid Mic-E destination"] + }, + "BAD-072": { + "kind": "malformed", + "reasons": ["invalid Mic-E destination"] + }, + "BAD-073": { + "kind": "malformed", + "reasons": ["information field is empty"] + }, + "BAD-074": { + "kind": "malformed", + "reasons": ["truncated or invalid Mic-E information"] + }, + "BAD-075": { + "kind": "malformed", + "reasons": ["truncated or invalid Mic-E information"] + }, + "BAD-076": { + "kind": "malformed", + "reasons": ["truncated or invalid Mic-E information"] + }, + "BAD-077": { + "kind": "malformed", + "reasons": ["truncated or invalid Mic-E information"] + }, + "BAD-078": { + "kind": "malformed", + "reasons": ["truncated or invalid Mic-E information"] + }, + "BAD-079": { + "kind": "malformed", + "reasons": ["truncated or invalid Mic-E information"] + }, + "BAD-080": { + "kind": "malformed", + "reasons": ["truncated or invalid Mic-E information"] + }, + "BAD-081": { + "kind": "malformed", + "reasons": ["truncated or invalid Mic-E information"] + }, + "BAD-082": { + "kind": "malformed", + "reasons": ["invalid object name or alive marker"] + }, + "BAD-083": { + "kind": "malformed", + "reasons": ["invalid object name or alive marker"] + }, + "BAD-084": { + "kind": "malformed", + "reasons": ["invalid object name or alive marker"] + }, + "BAD-085": { + "kind": "malformed", + "reasons": ["timestamp must contain six digits and a suffix"] + }, + "BAD-086": { + "kind": "conformance", + "reasons": ["item names have at least three characters"] + }, + "BAD-087": { + "kind": "malformed", + "reasons": ["invalid item name or marker"] + }, + "BAD-088": { + "kind": "malformed", + "reasons": ["invalid item name or marker"] + }, + "BAD-089": { + "kind": "conformance", + "reasons": ["exceeds 67 bytes"] + }, + "BAD-090": { + "kind": "malformed", + "reasons": ["message requires a nine-byte addressee and colon"] + }, + "BAD-091": { + "kind": "malformed", + "reasons": ["message requires a nine-byte addressee and colon"] + }, + "BAD-092": { + "kind": "malformed", + "reasons": ["requires 1..5 alphanumeric characters"] + }, + "BAD-093": { + "kind": "malformed", + "reasons": ["requires 1..5 alphanumeric characters"] + }, + "BAD-094": { + "kind": "malformed", + "reasons": ["requires 1..5 alphanumeric characters"] + }, + "BAD-095": { + "kind": "malformed", + "reasons": ["requires 1..5 alphanumeric characters"] + }, + "BAD-096": { + "kind": "conformance", + "reasons": ["contains a reserved character (| ~)"] + }, + "BAD-097": { + "kind": "conformance", + "reasons": ["contains a reserved character (| ~)"] + }, + "BAD-098": { + "kind": "conformance", + "reasons": ["classic telemetry requires 0..999 or MIC"] + }, + "BAD-099": { + "kind": "conformance", + "reasons": ["requires an integer in 0..255"] + }, + "BAD-100": { + "kind": "conformance", + "reasons": ["requires an integer in 0..255"] + }, + "BAD-101": { + "kind": "conformance", + "reasons": ["requires an integer in 0..255"] + }, + "BAD-102": { + "kind": "malformed", + "reasons": ["telemetry requires five analog channels and digital bits"] + }, + "BAD-103": { + "kind": "malformed", + "reasons": ["telemetry requires eight binary digits"] + }, + "BAD-104": { + "kind": "malformed", + "reasons": ["telemetry requires eight binary digits"] + }, + "BAD-105": { + "kind": "conformance", + "reasons": [ + "required report slot; use Measurement(None, unit) if unavailable" + ] + }, + "BAD-106": { + "kind": "malformed", + "reasons": ["must be in 1..12"] + }, + "BAD-107": { + "kind": "conformance", + "reasons": ["reading outside the quantity's range"] + }, + "BAD-109": { + "kind": "malformed", + "reasons": [ + "missing information separator", + "missing source separator", + "empty or invalid address token" + ] + }, + "BAD-110": { + "kind": "malformed", + "reasons": ["missing information separator"] + }, + "BAD-111": { + "kind": "malformed", + "reasons": ["information field is empty"] + }, + "BAD-112": { + "kind": "malformed", + "reasons": ["missing information separator", "missing source separator"] + }, + "BAD-113": { + "kind": "malformed", + "reasons": ["user-defined payload needs user ID and type"] + }, + "BAD-114": { + "kind": "malformed", + "reasons": ["user-defined payload needs user ID and type"] + }, + "BAD-115": { + "kind": "conformance", + "reasons": ["status exceeds 62 bytes"] + }, + "BAD-116": { + "kind": "conformance", + "reasons": ["status exceeds 62 bytes"] + }, + "BAD-117": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "BAD-121": { + "kind": "malformed", + "reasons": ["invalid symbol table or overlay"] + }, + "BAD-122": { + "kind": "malformed", + "reasons": ["numeric overlays a-j exist only in compressed form"] + }, + "BAD-123": { + "kind": "malformed", + "reasons": ["invalid symbol table or overlay"] + }, + "BAD-124": { + "kind": "malformed", + "reasons": ["protocol token must be printable ASCII"] + }, + "BAD-125": { + "kind": "malformed", + "reasons": ["protocol token must be printable ASCII"] + }, + "FAP-018": { + "kind": "malformed", + "reasons": [ + "invalid coordinate syntax", + "invalid coordinate syntax", + "invalid coordinate syntax" + ] + }, + "FAP-019": { + "kind": "malformed", + "reasons": ["invalid object name or alive marker"] + }, + "FAP-021": { + "kind": "malformed", + "reasons": ["invalid symbol table or overlay"] + }, + "FAP-030": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-031": { + "kind": "malformed", + "reasons": [ + "truncated compressed position", + "missing or truncated field", + "missing or truncated field", + "invalid coordinate syntax" + ] + }, + "FAP-032": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-033": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-038": { + "kind": "malformed", + "reasons": ["missing information separator"] + }, + "FAP-039": { + "kind": "malformed", + "reasons": ["missing source separator"] + }, + "FAP-040": { + "kind": "malformed", + "reasons": ["missing information separator"] + }, + "FAP-041": { + "kind": "malformed", + "reasons": ["information field is empty"] + }, + "FAP-042": { + "kind": "malformed", + "reasons": ["missing source separator"] + }, + "FAP-043": { + "kind": "malformed", + "reasons": ["empty or invalid address token"] + }, + "FAP-046": { + "kind": "malformed", + "reasons": ["empty or invalid address token"] + }, + "FAP-049": { + "kind": "malformed", + "reasons": ["empty or invalid address token"] + }, + "FAP-050": { + "kind": "malformed", + "reasons": ["empty or invalid address token"] + }, + "FAP-057": { + "kind": "malformed", + "reasons": ["invalid item name or marker"] + }, + "FAP-060": { + "kind": "malformed", + "reasons": ["truncated uncompressed position"] + }, + "FAP-061": { + "kind": "malformed", + "reasons": ["invalid item name or marker"] + }, + "FAP-062": { + "kind": "conformance", + "reasons": ["exceeds 67 bytes"] + }, + "FAP-064": { + "kind": "conformance", + "reasons": ["text contains control characters", "exceeds 67 bytes"] + }, + "FAP-065": { + "kind": "conformance", + "reasons": ["exceeds 67 bytes"] + }, + "FAP-162": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-163": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-164": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-165": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-166": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-167": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-168": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-169": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-170": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-171": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-172": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-173": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-174": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-175": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-176": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-177": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-178": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-179": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-180": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-181": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-182": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-183": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-184": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-185": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-186": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-187": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-188": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-189": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-190": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-191": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-192": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-193": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-297": { + "kind": "conformance", + "reasons": ["reply-ack ID and ack exceed five characters"] + }, + "FAP-299": { + "kind": "conformance", + "reasons": ["reply-ack ID and ack exceed five characters"] + }, + "FAP-300": { + "kind": "conformance", + "reasons": ["reply-ack ID and ack exceed five characters"] + }, + "FAP-301": { + "kind": "conformance", + "reasons": ["reply-ack ID and ack exceed five characters"] + }, + "FAP-302": { + "kind": "conformance", + "reasons": ["reply-ack ID and ack exceed five characters"] + }, + "FAP-303": { + "kind": "conformance", + "reasons": ["reply-ack ID and ack exceed five characters"] + }, + "FAP-304": { + "kind": "conformance", + "reasons": ["reply-ack ID and ack exceed five characters"] + }, + "FAP-305": { + "kind": "conformance", + "reasons": ["reply-ack ID and ack exceed five characters"] + }, + "FAP-306": { + "kind": "conformance", + "reasons": ["reply-ack ID and ack exceed five characters"] + }, + "FAP-343": { + "kind": "malformed", + "reasons": ["message requires a nine-byte addressee and colon"] + }, + "FAP-344": { + "kind": "malformed", + "reasons": ["message requires a nine-byte addressee and colon"] + }, + "FAP-348": { + "kind": "malformed", + "reasons": ["invalid Mic-E hex telemetry"] + }, + "FAP-349": { + "kind": "malformed", + "reasons": ["invalid symbol table or overlay"] + }, + "FAP-350": { + "kind": "malformed", + "reasons": ["invalid Mic-E destination"] + }, + "FAP-351": { + "kind": "malformed", + "reasons": ["truncated or invalid Mic-E information"] + }, + "FAP-352": { + "kind": "malformed", + "reasons": ["invalid Mic-E destination"] + }, + "FAP-353": { + "kind": "malformed", + "reasons": ["invalid symbol table or overlay"] + }, + "FAP-354": { + "kind": "malformed", + "reasons": ["invalid Mic-E destination"] + }, + "FAP-355": { + "kind": "malformed", + "reasons": ["protocol token must be printable ASCII"] + }, + "FAP-356": { + "kind": "malformed", + "reasons": ["invalid Mic-E destination"] + }, + "FAP-362": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-365": { + "kind": "malformed", + "reasons": ["invalid NMEA sentence identifier"] + }, + "FAP-367": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-369": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-370": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-371": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-372": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-373": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-375": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-376": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-377": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-378": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-379": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-380": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-381": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-382": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-383": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-384": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-385": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-386": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-387": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-388": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-389": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-390": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-391": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-392": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-393": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-394": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-395": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-396": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-397": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-398": { + "kind": "malformed", + "reasons": ["invalid NMEA field"] + }, + "FAP-399": { + "kind": "malformed", + "reasons": ["invalid object name or alive marker"] + }, + "FAP-403": { + "kind": "malformed", + "reasons": ["invalid object name or alive marker"] + }, + "FAP-404": { + "kind": "malformed", + "reasons": ["invalid object name or alive marker"] + }, + "FAP-410": { + "kind": "malformed", + "reasons": ["truncated uncompressed position"] + }, + "FAP-411": { + "kind": "malformed", + "reasons": ["truncated compressed position"] + }, + "FAP-412": { + "kind": "malformed", + "reasons": ["invalid compressed symbol table"] + }, + "FAP-415": { + "kind": "conformance", + "reasons": ["would be read back as a data extension"] + }, + "FAP-419": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-430": { + "kind": "malformed", + "reasons": ["invalid Mic-E hex telemetry"] + }, + "FAP-432": { + "kind": "conformance", + "reasons": [ + "requires an integer in 0..255", + "requires an integer in 0..255" + ] + }, + "FAP-433": { + "kind": "conformance", + "reasons": [ + "requires an integer in 0..255", + "requires an integer in 0..255", + "requires an integer in 0..255", + "requires an integer in 0..255", + "requires an integer in 0..255" + ] + }, + "FAP-434": { + "kind": "malformed", + "reasons": ["telemetry requires five analog channels and digital bits"] + }, + "FAP-435": { + "kind": "malformed", + "reasons": ["telemetry requires five analog channels and digital bits"] + }, + "FAP-436": { + "kind": "malformed", + "reasons": ["telemetry requires five analog channels and digital bits"] + }, + "FAP-437": { + "kind": "malformed", + "reasons": ["telemetry requires five analog channels and digital bits"] + }, + "FAP-438": { + "kind": "malformed", + "reasons": ["telemetry requires five analog channels and digital bits"] + }, + "FAP-439": { + "kind": "conformance", + "reasons": ["exceeds 4 bytes"] + }, + "FAP-448": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-449": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-450": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-451": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-453": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-454": { + "kind": "malformed", + "reasons": ["must be in 1..31"] + }, + "FAP-455": { + "kind": "malformed", + "reasons": ["must be in 1..31"] + }, + "FAP-456": { + "kind": "malformed", + "reasons": ["must be in 1..31"] + }, + "FAP-462": { + "kind": "malformed", + "reasons": ["longitude cannot be more ambiguous than latitude"] + }, + "FAP-466": { + "kind": "conformance", + "reasons": ["text contains control characters"] + }, + "FAP-469": { + "kind": "conformance", + "reasons": ["begins with an invalid data extension"] + }, + "FAP-471": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-472": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-475": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-476": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-477": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-479": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-496": { + "kind": "conformance", + "reasons": [ + "requires an integer in 0..255", + "requires an integer in 0..255" + ] + }, + "FAP-497": { + "kind": "conformance", + "reasons": ["extensions and comment exceed 43 bytes"] + }, + "FAP-500": { + "kind": "malformed", + "reasons": ["invalid object name or alive marker"] + }, + "NME-011": { + "kind": "malformed", + "reasons": ["invalid NMEA checksum field"] + }, + "OBJ-053": { + "kind": "malformed", + "reasons": ["names cannot have leading or trailing spaces"] + }, + "TIM-011": { + "kind": "malformed", + "reasons": ["must be in 1..31"] + }, + "TIM-012": { + "kind": "malformed", + "reasons": ["must be in 1..31"] + }, + "TIM-013": { + "kind": "malformed", + "reasons": ["must be in 0..23"] + }, + "TIM-014": { + "kind": "malformed", + "reasons": ["must be in 0..59"] + }, + "TIM-015": { + "kind": "malformed", + "reasons": ["must be in 0..23"] + }, + "TIM-016": { + "kind": "malformed", + "reasons": ["must be in 0..59"] + }, + "TIM-017": { + "kind": "malformed", + "reasons": ["must be in 0..59"] + }, + "TIM-018": { + "kind": "malformed", + "reasons": ["unknown timestamp suffix"] + } +} diff --git a/packages/aprs/tests/source_details.py b/packages/aprs/tests/source_details.py new file mode 100644 index 0000000..f7df9a9 --- /dev/null +++ b/packages/aprs/tests/source_details.py @@ -0,0 +1,469 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Assert source facts outside JSON fields using models, evidence and receiver policy. + +No expected fixture value is used to compute the actual view. These are derived +units, presentation conventions and historical interpretations, not extra API. +""" + +import re + +from hamkit import aprs as a + + +def symbol(s): + return { + "table": s.table, + "overlay": s.overlay, + "code": s.code, + "table_id_raw": s.table_id, + } + + +def grid(g): + return { + "locator": g.locator, + "bounds_deg": { + "latitude": list(g.bounds.latitude), + "longitude": list(g.bounds.longitude), + }, + "center_deg": [g.center.latitude_deg, g.center.longitude_deg], + } + + +def weather(w): + r = {} + + def convert(name, key, factor=1, offset=0): + m = getattr(w, name) + if m is not None: + r[key] = None if m.value is None else m.value * factor + offset + + convert("temperature", "temperature_c", 1 / 1.8, -32 / 1.8) + convert("gust", "gust_mps", 0.44704) + convert("pressure", "pressure_tenth_hpa", 10) + for name in ("rain_1h", "rain_24h", "rain_since_midnight", "snow_24h"): + convert(name, name + "_mm", 25.4) + if w.wind_speed: + if w.wind_speed.unit == "disputed_knots_or_mph": + v = w.wind_speed.value + r["wind_speed_mps_interpretations"] = { + k: None if v is None else v * f + for k, f in [("APRS101_p27_knots", 1852 / 3600), ("FAP_mph", 0.44704)] + } + else: + convert( + "wind_speed", + "wind_speed_mps", + 1852 / 3600 if w.wind_speed.unit == "knots" else 0.44704, + ) + if w.water_height: + m = w.water_height.measurement + r["water_height"] = { + "field": "F" if m.unit == "feet" else "f", + "raw": f"{m.value:g}", + "meters": m.value * (0.3048 if m.unit == "feet" else 1), + } + if w.wind_direction and w.wind_speed and w.wind_direction.raw and w.wind_speed.raw: + r["wind_raw"] = (w.wind_direction.raw + b"/" + w.wind_speed.raw).decode() + return r + + +def core(packet, raw, profile): + assert isinstance(packet, a.Packet) + p = packet.payload + if isinstance(p, a.LegacyPosition): + p = ( + p.position + if profile == "historical-1.0" + else a.Beacon(raw.partition(b":")[2].decode("latin1")) + ) + body = raw.partition(b":")[2] + h = packet.header + r = {} + if hasattr(p, "symbol") and p.symbol is not None: + r["symbol"] = symbol(p.symbol) + if hasattr(p, "extensions"): + e = p.extensions + if e.motion: + v = e.motion + r["motion"] = { + "speed_kmh": None if v.speed_knots is None else v.speed_knots * 1.852, + "raw": v.raw.decode() if v.raw else None, + "station_fixed": v.zero_pair == "fixed", + "zero_pair_meaning": ( + "unknown-or-not-relevant" + if v.zero_pair == "unavailable" + else v.zero_pair + ), + } + if e.altitude: + v = e.altitude + r["altitude"] = { + "meters": v.measurement.value + * (0.3048 if v.measurement.unit == "feet" else 1), + "reference": v.reference, + } + if e.phg: + v = e.phg + r["phg"] = { + "range_miles_1_0": v.range_miles, + "display_radius_miles_1_1": v.display_radius_miles, + "omnidirectional": v.directivity_deg is None, + } + if e.range: + r["radio_range"] = {"km": e.range.miles * 1.609344} + if e.bearing: + v = e.bearing + r["df_bearing"] = { + "manual": v.manual, + "range_miles": v.range_miles, + "usable": v.quality_code > 0, + "accuracy_less_than_deg": (None, 240, 120, 64, 32, 16, 8, 4, 2, 1)[ + v.quality_code + ], + "nrq_raw": f"{v.hits_code}{v.range_code}{v.quality_code}", + "nrq_meaningful": bool(v.hits_code or v.range_code or v.quality_code), + } + if e.area: + v = e.area + r["area"] = { + "shape": ( + "open-circle", + "line-down-right", + "open-ellipse", + "open-triangle", + "open-box", + "filled-circle", + "line-down-left", + "filled-ellipse", + "filled-triangle", + "filled-box", + )[v.shape_code], + "color": ( + "black", + "blue", + "green", + "cyan", + "red", + "violet", + "yellow", + "gray", + )[v.color_code % 8], + "intensity": "low" if v.color_code >= 8 else "high", + "latitude_offset_deg": v.latitude_offset_deg, + "longitude_offset_deg": v.longitude_offset_deg, + "transmitted_anchor": ( + "center" + if v.transmitted_anchor == "circle_center" + else "lower-left" + if v.shape_code == 6 + else "lower-right" + ), + } + if e.weather: + r["weather"] = weather(e.weather) + if e.telemetry: + r["telemetry"] = { + "digital_channels_B1_to_B8": [ + int(b) if b is not None else None for b in e.telemetry.digital + ] + } + if isinstance(p, a.Weather): + r["weather"] = weather(p) + if isinstance(p, a.Telemetry): + r["telemetry"] = { + "digital_channels_B1_to_B8": [ + int(b) if b is not None else None for b in p.digital + ] + } + if hasattr(p, "compression") and p.compression: + r["compression"] = {"type_value": p.compression.type_value} + if hasattr(p, "ambiguity_extent"): + extent = p.ambiguity_extent + r["position"] = { + "is_null_position": getattr(p, "is_null_position", False), + "representative": "cell-center", + } + if extent: + r["position"]["cell_bounds_deg"] = { + "latitude": list(extent.latitude), + "longitude": list(extent.longitude), + } + if isinstance(p, (a.Object, a.Item)): + r["name_raw"] = body[1:10].decode() if isinstance(p, a.Object) else p.name + if hasattr(p, "timestamp") and p.timestamp: + from hamkit.aprs._fields import encode_timestamp + + r["timestamp"] = {"raw": encode_timestamp(p.timestamp).decode()} + if isinstance(p, a.MicE): + dest = h.destination.split("-")[0] + bits = "".join( + "1" if "A" <= c <= "K" or "P" <= c <= "Z" else "0" for c in dest[:3] + ) + custom = any("A" <= c <= "K" for c in dest[:3]) + standard = any("P" <= c <= "Z" for c in dest[:3]) + r["mic_e"] = { + "position_comment_bits": bits, + "position_comment_set": ( + "mixed" if custom and standard else "custom" if custom else "standard" + ), + "longitude_offset": 100 if dest[4] >= "P" else 0, + "type_marker": p.device_code[:1] if p.device_code else None, + } + if p.device_code and len(p.device_code) > 1: + r["grid_locator"] = p.device_code[1:7] + r["grid_symbol"] = symbol(a.Symbol(p.device_code[7], p.device_code[8])) + if isinstance(p, a.NMEA): + r["position_usable"] = p.position_usable + if isinstance(p.sentence, a.GGA): + r["altitude"] = {"reference": "mean-sea-level"} + if isinstance(p.sentence, a.RMC): + r["motion"] = { + "speed_kmh": ( + p.sentence.speed_knots * 1.852 + if p.sentence.speed_knots is not None + else None + ) + } + elif isinstance(p, a.RawWeather): + r["decoded_measurements"] = None + r["position_usable"] = False + elif isinstance(p, (a.Maidenhead, a.Beacon)): + r["position_usable"] = False + else: + r["position_usable"] = hasattr(p, "latitude_deg") + if isinstance(p, (a.Status, a.Maidenhead)) and p.grid: + r["grid"] = grid(p.grid) + if re.fullmatch(r"[A-R]{2}\d{2}[A-X]{2}", h.destination): + r["destination_grid"] = grid(a.Grid(h.destination)) + r["status_fallback_permitted"] = isinstance(p, a.Beacon) + paths = [hop.address for hop in h.path] + r["policy"] = { + "forward_to_aprs_is": not any(x in ("RFONLY", "NOGATE") for x in paths), + "archive_allowed": b"!x!" not in body and "NOARCH" not in paths, + } + for i, hop in enumerate(paths): + if re.fullmatch("q[A-Z][A-Za-z]", hop): + r["aprs_is"] = {"q_construct_raw": hop, "following_path": paths[i + 1 :]} + break + r["normalized_tnc2"] = str(h) + ":" + body.decode("latin1") + r["destination_semantics"] = ( + "APRS-address" + if h.destination.startswith(("AP", "GPS", "SPC", "SYM", "AIR", "DF", "ZIP")) + or h.destination + in { + "ALL", + "BEACON", + "CQ", + "DGPS", + "DRILL", + "DX", + "ID", + "JAVA", + "MAIL", + "MICE", + "QST", + "QTH", + "RTCM", + "SKY", + "SPACE", + "TEL", + "TEST", + "TLM", + "WX", + } + else "alternate-net" + ) + ssid = h.destination.rpartition("-")[2] + if ssid.isdigit(): + v = int(ssid) + r["destination_ssid"] = v + r["historical_generic_path"] = ( + "VIA", + *[f"WIDE{i}-{i}" for i in range(1, 8)], + "North", + "South", + "East", + "West", + "North + WIDE", + "South + WIDE", + "East + WIDE", + "West + WIDE", + )[v] + if isinstance(p, a.ThirdParty): + r["inner"] = core(p.packet, body[1:], profile) + r["inner_packet"] = body[1:].decode("latin1") + r["message_origin"] = p.packet.header.source + if body.startswith(b":"): + address = body[1:10].decode() + content = body[11:].decode("latin1") + text, sep, identifier = content.partition("{") + number, _brace, _ack = identifier.partition("}") + m = { + "addressee_raw": address, + "addressee": address.rstrip(), + "message_id": number if sep else None, + "text": text, + "ack_requested": bool(sep) and not isinstance(p, a.NWSBulletin), + "message_id_raw": identifier if sep else None, + "group_address": address.rstrip() in ("CQ", "ALL", "QST"), + } + if content.startswith(("ack", "rej")): + v = content[3:] + m.update(ack_id_raw=v, embedded_reply_ack_id=v.partition("}")[2] or None) + if address.startswith("NWS-"): + m["reference_id"] = identifier or None + r["message"] = m + if isinstance(p, a.TelemetryDefinition): + r["telemetry_definition"] = {"values_raw": content[5:].split(",")} + if isinstance(p, a.Query): + r["query"] = { + "directed": p.addressee is not None, + "recognized": p.name + in { + "APRS", + "IGATE", + "WX", + "APRSD", + "APRSH", + "APRSM", + "APRSO", + "APRSP", + "APRSS", + "APRST", + "PING", + }, + "ack_requested": False, + } + if p.footprint: + r["query"]["radius_km"] = p.footprint.radius_miles * 1.609344 + return r + + +def at(value, path): + for key in path.removeprefix("$.").split("."): + value = value[key] + return value + + +def check_core(row): + from packets.test_corpus import differences + + raw = row["packet"].encode("latin1") + actual = core(a.parse_packet(raw), raw, row["profile"]) + errors = [] + for path in row.get("unmapped", []): + try: + value = at(actual, path) + except (KeyError, TypeError): + errors.append(path + ": no derived assertion") + continue + errors.extend(differences(value, at(row["source_expected"], path), path)) + return errors + + +def check_fap(row): + from packets.test_corpus import differences + + from hamkit.aprs._compatibility import facts, view + + raw = row["packet"].encode("latin1") + f = facts(raw, row.get("options")) + actual = {"fap_fields": f} + errors = [] + for path in row.get("unmapped", []): + try: + value = at(actual, path) + except (KeyError, TypeError): + errors.append(path + ": no derived assertion") + continue + errors.extend(differences(value, at(row["source_expected"], path), path)) + # FAP flattens NMEA sentences; the JSON schema keeps them typed. Check the + # flattened observations too, not just that an NMEA family was recognized. + expected = row["source_expected"]["fap_fields"] + if expected.get("Format") == "nmea": + projected, _ = view(raw, "compatibility-fap", row.get("options")) + p = projected["payload"] + s = p["sentence"] + coords = s.get("coordinates") or {} + values = { + "Latitude": coords.get("latitude_deg"), + "Longitude": coords.get("longitude_deg"), + "Altitude": s.get("altitude_msl_m"), + "Speed": ( + s.get("speed_knots") * 1.852 + if s.get("speed_knots") is not None + else None + ), + "Course": s.get("course_deg"), + "SymbolTable": (p.get("symbol") or {}).get("table_id"), + "SymbolCode": (p.get("symbol") or {}).get("code"), + } + errors.extend( + differences(values, {k: expected[k] for k in values}, "$.fap_fields") + ) + return errors + + +def check_rejection(row): + from generate_vectors import header, translate + from packets.test_corpus import differences + + from hamkit.aprs._compatibility import rejected_facts + + raw = row["packet"].encode("latin1") + source = row["source_expected"] + if row["profile"] == "compatibility-fap": + actual = rejected_facts(raw, row.get("options")) + return differences(actual, {k: source[k] for k in ("fap_header", "fap_fields")}) + p = a.parse_packet(raw) + errors = [] + if "header" in source: + assert p.header is not None + errors.extend( + differences( + a.to_json_dict(p.header, include_defaults=True), + header(source["header"]), + "$.header", + ) + ) + if "kind" in source: + expected = translate(source) + # Empty NMEA optional variation direction has the existing None form. + n = expected.get("payload", {}).get("sentence", {}) + if n.get("magnetic_variation_direction") == "": + n["magnetic_variation_direction"] = None + errors.extend(differences(a.to_json_dict(p, include_defaults=True), expected)) + if "partial" in source: + assert isinstance(p, a.Malformed) + recovered = p.recovered["payload"] + from hamkit.aprs._position_codec import ambiguity + + partial = { + "position": { + "latitude_deg": recovered.get("latitude_deg"), + "longitude_deg": recovered.get("longitude_deg"), + "ambiguity_digits": ambiguity(raw.partition(b":")[2][8:16]), + } + } + errors.extend(differences(partial, source["partial"], "$.partial")) + if "compression_type_value" in source: + assert isinstance(p, a.Packet) and p.payload.compression is not None + assert p.payload.compression.raw[-1] - 33 == source["compression_type_value"] + # These booleans describe receiver usability, not fabricated measurements. + for flag in ( + "position_usable", + "message_valid", + "telemetry_valid", + "weather_valid", + "inner_packet_valid", + ): + if flag in source: + invalid = isinstance(p, a.Malformed) or any( + d.code == "nonconforming" for d in p.diagnostics + ) + if isinstance(p, a.Packet) and isinstance(p.payload, a.NMEA): + invalid = p.payload.position_usable is False + errors.extend(differences(not invalid, source[flag], "$." + flag)) + return errors diff --git a/packages/aprs/tests/test_api_contract.py b/packages/aprs/tests/test_api_contract.py index 119a752..75be567 100644 --- a/packages/aprs/tests/test_api_contract.py +++ b/packages/aprs/tests/test_api_contract.py @@ -20,7 +20,14 @@ def test_every_payload_has_construction_and_codec_example(self) -> None: self.assertEqual({c.model for c in a.codec_support()}, set(get_args(a.Payload))) for payload in examples: with self.subTest(model=type(payload).__name__): - packet = a.Packet(HEADER, payload) + packet = a.Packet( + ( + a.Header("N0CALL", "TY0P0P") + if isinstance(payload, a.MicE) + else HEADER + ), + payload, + ) self.assertIs(packet.payload, payload) self.assertEqual(a.check_packet(packet), ()) if a.codec_support_for(payload).encode == "unimplemented": @@ -183,18 +190,12 @@ def test_mic_e_requires_context(self) -> None: ) with self.assertRaises(a.ContextRequiredError): a.serialize_payload(mic_e) - with self.assertRaises(a.CodecNotImplementedError): + with self.assertRaises(a.FieldError): a.serialize_packet(a.Packet(HEADER, mic_e)) - with self.assertRaises(a.CodecNotImplementedError): - a.parse_payload( - b"`12345678", - header=a.Header("N0CALL", "490S5P"), - unsupported="raise", - ) - parsed = a.parse_packet(b"N0CALL>490S5P:`12345678") - assert isinstance(parsed, a.Packet) + parsed = a.parse_packet(b"N0CALL>490S5P:`123456>/") + assert isinstance(parsed, a.Packet) and isinstance(parsed.payload, a.MicE) self.assertEqual(parsed.header.destination, "490S5P") - self.assertIsInstance(parsed.payload, a.Opaque) + self.assertEqual(a.parse_packet(a.serialize_packet(parsed)), parsed) def test_option_values_are_checked(self) -> None: for kwargs in ( diff --git a/packages/aprs/tests/test_conformance.py b/packages/aprs/tests/test_conformance.py index 27c57ae..27bcfe3 100644 --- a/packages/aprs/tests/test_conformance.py +++ b/packages/aprs/tests/test_conformance.py @@ -1,6 +1,7 @@ # SPDX-FileCopyrightText: 2024-present Adam Fourney # SPDX-License-Identifier: MIT """APRS rules a well-formed model can break: reported, and never sent.""" + from __future__ import annotations import unittest @@ -269,10 +270,18 @@ def test_motion_encoding_preserves_known_values_and_zero_meaning(self) -> None: value = a.Position(1, 2, symbol, extensions=a.Extensions(motion=motion)) self.assertEqual(a.parse_payload(a.serialize_payload(value)), value) + def test_phg_rate_roundtrip(self) -> None: + for rate in (0, 5): + value = a.Position( + 1, + 2, + SYMBOL, + extensions=a.Extensions(phg=a.PHG(25, 80, 3, rate_per_hour=rate)), + ) + self.assertEqual(a.parse_payload(a.serialize_payload(value)), value) + def test_unencoded_extension_fields_are_explicitly_unsupported(self) -> None: for extensions, symbol in ( - (a.Extensions(phg=a.PHG(25, 80, 3, rate_per_hour=5)), SYMBOL), - (a.Extensions(phg=a.PHG(25, 80, 3, rate_per_hour=0)), SYMBOL), ( a.Extensions( altitude=a.Altitude( @@ -394,7 +403,7 @@ def test_mic_e_motion_and_telemetry(self) -> None: extensions=a.Extensions(motion=a.Motion(), telemetry=telemetry), ) ), - {"$.payload.extensions.telemetry.encoding"}, + set(), ) diff --git a/packages/aprs/tests/test_json.py b/packages/aprs/tests/test_json.py index 0eeb22e..099cf13 100644 --- a/packages/aprs/tests/test_json.py +++ b/packages/aprs/tests/test_json.py @@ -255,8 +255,8 @@ def test_shared_weather_and_telemetry(self) -> None: self.round_trip(model) self.round_trip(a.Packet(HEADER, model)) self.assertEqual(a.to_json_dict(model)["type"], tag) - with self.assertRaises(a.CodecNotImplementedError): - a.serialize_packet(a.Packet(HEADER, model)) + packet = a.Packet(HEADER, model) + self.assertEqual(a.parse_packet(a.serialize_packet(packet)), packet) extensions = a.Extensions( weather=dataclasses.replace(weather, timestamp=None), telemetry=a.Telemetry((1, 2), sequence=1, encoding="base91_comment"), @@ -267,7 +267,7 @@ def test_shared_weather_and_telemetry(self) -> None: self.assertNotIn("type", cast(dict[str, a.JSONValue], nested[field])) self.round_trip(a.Position(49, -72, a.Symbol("/", "_"), extensions=extensions)) - def test_json_does_not_require_working_wire_codec(self) -> None: + def test_json_does_not_require_encodable_header(self) -> None: mic_e = a.MicE( 49, -72, @@ -276,7 +276,7 @@ def test_json_does_not_require_working_wire_codec(self) -> None: extensions=a.Extensions(motion=a.Motion()), ) self.round_trip(mic_e) - with self.assertRaises(a.CodecNotImplementedError): + with self.assertRaises(a.FieldError): a.serialize_packet(a.Packet(HEADER, mic_e)) diff --git a/packages/aprs/tests/test_message_invariants.py b/packages/aprs/tests/test_message_invariants.py index c5b3179..764f072 100644 --- a/packages/aprs/tests/test_message_invariants.py +++ b/packages/aprs/tests/test_message_invariants.py @@ -1,6 +1,7 @@ # SPDX-FileCopyrightText: 2024-present Adam Fourney # SPDX-License-Identifier: MIT """Message-family constructor rules apply before the wire codecs exist.""" + import unittest from typing import Any @@ -34,8 +35,8 @@ def test_status_grid_dependencies(self) -> None: a.Status("", grid=grid, symbol=symbol, timestamp=a.Timestamp.dhm(1, 1, 2)) valid = a.Status(" House", grid=grid, symbol=symbol) self.assertEqual(a.from_json(a.to_json(valid)), valid) - with self.assertRaises(a.CodecNotImplementedError): - a.serialize_packet(a.Packet(a.Header("N0CALL", "APRS"), valid)) + packet = a.Packet(a.Header("N0CALL", "APRS"), valid) + self.assertEqual(a.parse_packet(a.serialize_packet(packet)), packet) def test_reply_ack_is_one_suffix(self) -> None: for fields in ( @@ -80,8 +81,8 @@ def test_query_tokens(self) -> None: self.assert_invalid(a.Query, fields, "query") query = a.Query("CUSTOM", arguments=b"\xff") self.assertEqual(a.from_json(a.to_json(query)), query) - with self.assertRaises(a.CodecNotImplementedError): - a.serialize_packet(a.Packet(a.Header("N0CALL", "APRS"), query)) + packet = a.Packet(a.Header("N0CALL", "APRS"), query) + self.assertEqual(a.parse_packet(a.serialize_packet(packet)), packet) with self.assertRaises(a.ModelError): a.Footprint(a.Coordinates(0, 0), -1) diff --git a/packages/aprs/tests/test_nmea_invariants.py b/packages/aprs/tests/test_nmea_invariants.py index b2a53e5..01207ae 100644 --- a/packages/aprs/tests/test_nmea_invariants.py +++ b/packages/aprs/tests/test_nmea_invariants.py @@ -1,6 +1,7 @@ # SPDX-FileCopyrightText: 2024-present Adam Fourney # SPDX-License-Identifier: MIT """Semantic NMEA validation applies equally to Python and JSON construction.""" + import json import unittest from typing import Any @@ -117,8 +118,8 @@ def test_usability_cannot_contradict_sentence(self) -> None: ) report = a.NMEA(valid, a.NMEAMetadata("GP"), position_usable=True) self.assertEqual(a.from_json(a.to_json(report)), report) - with self.assertRaises(a.CodecNotImplementedError): - a.serialize_packet(a.Packet(a.Header("N0CALL", "APRS"), report)) + packet = a.Packet(a.Header("N0CALL", "APRS"), report) + self.assertEqual(a.parse_packet(a.serialize_packet(packet)), packet) def test_receiver_specific_rules_are_not_invented(self) -> None: # No received precision is available to establish a speed tolerance. diff --git a/packages/aprs/tests/test_readme_examples.py b/packages/aprs/tests/test_readme_examples.py index f1ec37f..88ab8a6 100644 --- a/packages/aprs/tests/test_readme_examples.py +++ b/packages/aprs/tests/test_readme_examples.py @@ -47,14 +47,18 @@ def setUpClass(cls) -> None: raise AssertionError("Only one JSON input per block") cls.examples.append( ( - "json" - if literals - else ( - "continuation" - if source[2] == "print(aprs.to_json(packet, indent=2))" - else "repair" - if source[2].startswith("import copy\n") - else "python" + ( + "json" + if literals + else ( + "continuation" + if source[2] == "print(aprs.to_json(packet, indent=2))" + else ( + "repair" + if source[2].startswith("import copy\n") + else "python" + ) + ) ), literals[0] if literals else source[2], source[2], @@ -180,16 +184,12 @@ def test_every_family_has_equivalent_python_and_json_construction(self) -> None: dataclasses.asdict(python_packet), dataclasses.asdict(json_packet) ) families.add(type(json_packet.payload)) - # Model-only examples really are unencodable. Working ones must emit - # the displayed TNC2 line, not a hypothetical future encoding. - if a.codec_support_for(json_packet.payload).encode == "unimplemented": - with self.assertRaises(a.CodecNotImplementedError): - a.serialize_packet(json_packet) - else: - self.assertEqual( - a.serialize_packet(json_packet).decode("utf-8") + "\n", - self.examples[index][3], - ) + wire = a.serialize_packet(json_packet) + # Construction examples print the model name; wire examples print + # the encoded line. Both must be valid compositions now. + if self.examples[index][3] != type(json_packet.payload).__name__ + "\n": + self.assertEqual(wire.decode("utf-8") + "\n", self.examples[index][3]) + self.assertEqual(families, set(get_args(a.Payload))) def test_successful_parsing_shows_both_object_and_pretty_json(self) -> None: diff --git a/packages/aprs/tests/test_recovery.py b/packages/aprs/tests/test_recovery.py index 2d79f81..6bd8389 100644 --- a/packages/aprs/tests/test_recovery.py +++ b/packages/aprs/tests/test_recovery.py @@ -2,6 +2,7 @@ # SPDX-License-Identifier: MIT """Received input: lenient where usable, Malformed only where undecodable.""" + import copy import dataclasses import json @@ -91,7 +92,7 @@ def test_invalid_extension_text_stays_comment_with_a_finding(self) -> None: with self.assertRaises(a.ConformanceError): a.serialize_packet(packet) - def test_recognized_but_undecoded_extensions_are_unsupported(self) -> None: + def test_recognized_extensions_decode(self) -> None: for information in ( b"!4903.50N/07201.75W>hi !W12!", b"!4903.50N/07201.75W>|!!!!|", @@ -101,9 +102,8 @@ def test_recognized_but_undecoded_extensions_are_unsupported(self) -> None: with self.subTest(information=information): packet = a.parse_packet(b"N0CALL>APRS:" + information) assert isinstance(packet, a.Packet) - self.assertIsInstance(packet.payload, a.Opaque) - with self.assertRaises(a.CodecNotImplementedError): - a.parse_packet(b"N0CALL>APRS:" + information, unsupported="raise") + self.assertIsInstance(packet.payload, a.Position) + self.assertEqual(a.parse_packet(a.serialize_packet(packet)), packet) def test_invalid_df_bearing_is_inspectable_but_not_sendable(self) -> None: raw = b"N0CALL>APRS:!4903.50N/07201.75W\\088/036/999/729" @@ -205,17 +205,15 @@ def test_binary_is_lossless(self) -> None: self.assertEqual(a.from_json(a.to_json(binary)), binary) def test_unknown_codec_is_not_a_malformed_diagnosis(self) -> None: - for raw in ( - b"N0CALL>APRS:_not-yet-interpreted", - b"N0CALL>APRS:T#incomplete", - b"N0CALL>APRS:~\xff", - ): + for raw in (b"N0CALL>APRS:~\xff",): result = a.parse_packet(raw) assert isinstance(result, a.Packet) assert isinstance(result.payload, a.Opaque) self.assertEqual(a.serialize_packet(result), raw) with self.assertRaises(a.CodecNotImplementedError): a.parse_packet(raw, unsupported="raise") + for raw in (b"N0CALL>APRS:_not-a-timestamp", b"N0CALL>APRS:T#incomplete"): + self.assertIsInstance(a.parse_packet(raw), a.Malformed) result = a.parse_packet(b">490S5P:`12345678") assert isinstance(result, a.Malformed) self.assertEqual( diff --git a/packages/aprs/tests/test_vector_corpus_contract.py b/packages/aprs/tests/test_vector_corpus_contract.py index c1b67f4..88d493e 100644 --- a/packages/aprs/tests/test_vector_corpus_contract.py +++ b/packages/aprs/tests/test_vector_corpus_contract.py @@ -1,6 +1,7 @@ # SPDX-FileCopyrightText: 2024-present Adam Fourney # SPDX-License-Identifier: MIT """Fixture provenance and regression guards, independent of codec progress.""" + from __future__ import annotations import json @@ -10,7 +11,7 @@ import pytest from generate_vectors import records -from packets.test_corpus import KnownGap, check, differences +from packets.test_corpus import check, differences from hamkit import aprs as a @@ -44,31 +45,17 @@ def test_comparator_checks_missing_null_lists_and_tolerances() -> None: assert not differences(1.0, 1.0000000001, "$.latitude_deg") -def test_known_gap_does_not_hide_an_unrelated_regression( - monkeypatch: pytest.MonkeyPatch, -) -> None: +def test_mismatch_cannot_be_hidden(monkeypatch: pytest.MonkeyPatch) -> None: + from hamkit.aprs import _compatibility + row = next(r for r in all_rows() if r["id"] == "STA-008") + check(row) packet = a.parse_packet(row["packet"].encode("latin-1")) - assert isinstance(packet, a.Packet) and isinstance(packet.payload, a.Status) - with pytest.raises(KnownGap): - check(row) + assert isinstance(packet, a.Packet) bad = replace(packet, header=a.Header("WRONG", "APRS")) - monkeypatch.setattr(a, "parse_packet", lambda *args, **kwargs: bad) - with pytest.raises(AssertionError) as error: + monkeypatch.setattr(_compatibility, "parse_packet", lambda *args, **kwargs: bad) + with pytest.raises(AssertionError, match="header.source"): check(row) - assert not isinstance(error.value, KnownGap) - - -def test_completed_gap_returns_success_for_strict_xpass( - monkeypatch: pytest.MonkeyPatch, -) -> None: - row = next(r for r in all_rows() if r["id"] == "STA-008") - packet = a.parse_packet(row["packet"].encode("latin-1")) - assert isinstance(packet, a.Packet) and isinstance(packet.payload, a.Status) - status = a.Status(" Home", grid=a.Grid("IO91"), symbol=a.Symbol("/", "-")) - fixed = replace(packet, payload=status) - monkeypatch.setattr(a, "parse_packet", lambda *args, **kwargs: fixed) - check(row) # The parametrized test's strict mark turns this into XPASS/failure. def test_parser_exception_is_not_an_expected_failure( @@ -79,7 +66,9 @@ def test_parser_exception_is_not_an_expected_failure( def broken(*args: Any, **kwargs: Any) -> Any: raise RuntimeError("unexpected parser crash") - monkeypatch.setattr(a, "parse_packet", broken) + from hamkit.aprs import _compatibility + + monkeypatch.setattr(_compatibility, "parse_packet", broken) with pytest.raises(RuntimeError, match="unexpected parser crash"): check(row) @@ -138,3 +127,29 @@ def validate(value: Any, annotation: Any, path: str) -> None: for row in all_rows(): if row["expected"] is not None: validate(row["expected"], a.Packet, row["id"]) + + +def test_original_vector_bytes_expectations_and_provenance_are_unchanged() -> None: + """Frozen at PR #4 head b97beb7970c6b6fec2c0b6e30200f348bb87d96c.""" + import hashlib + + keys = [ + "id", + "title", + "profile", + "source", + "packet", + "outcome", + "source_expected", + "options", + "note", + "scope_note", + "extension_tags", + "sequence", + ] + original = [{k: r[k] for k in keys if k in r} for r in all_rows()] + encoded = json.dumps(original, sort_keys=True, separators=(",", ":")).encode() + assert ( + hashlib.sha256(encoded).hexdigest() + == "2db005c07f133aa738ccf3ec65b6364bf57d48cceff447a72c63e659c612573e" + ) diff --git a/packages/aprs/tests/test_weather_invariants.py b/packages/aprs/tests/test_weather_invariants.py index 51cb9a4..22984c8 100644 --- a/packages/aprs/tests/test_weather_invariants.py +++ b/packages/aprs/tests/test_weather_invariants.py @@ -1,6 +1,7 @@ # SPDX-FileCopyrightText: 2024-present Adam Fourney # SPDX-License-Identifier: MIT """Weather and telemetry values: absence, units and channel shapes.""" + from __future__ import annotations import unittest @@ -20,7 +21,7 @@ def test_components_absence_unavailability_and_zero(self) -> None: packet = a.Packet(a.Header("N0CALL", "APRS"), empty) self.assertEqual(a.from_json(a.to_json(packet)), packet) self.assertTrue(a.check_packet(packet)) - with self.assertRaises(a.CodecNotImplementedError): + with self.assertRaises(a.ConformanceError): a.serialize_packet(packet) def test_units_describe_the_quantity(self) -> None: diff --git a/packages/aprs/tests/vector_gaps.json b/packages/aprs/tests/vector_gaps.json deleted file mode 100644 index ac3846d..0000000 --- a/packages/aprs/tests/vector_gaps.json +++ /dev/null @@ -1,1157 +0,0 @@ -[ - { - "kind": "opaque", - "reason": "Unimplemented decoding: position ambiguity is not implemented", - "cases": { - "BAD-024": {}, - "BAD-025": {}, - "FAP-460": {}, - "FAP-461": {}, - "FAP-463": {}, - "FAP-507": {}, - "FAP-508": {}, - "FAP-509": {}, - "FAP-510": {}, - "POS-014": {}, - "POS-015": {}, - "POS-016": {}, - "POS-017": {}, - "POS-018": {}, - "POS-019": {}, - "POS-020": {}, - "POS-021": {}, - "POS-022": {}, - "POS-023": {}, - "POS-024": {}, - "POS-025": {} - } - }, - { - "kind": "opaque", - "reason": "Unimplemented decoding: compressed positions", - "cases": { - "BAD-042": {}, - "BAD-043": {}, - "BAD-044": {}, - "BAD-045": {}, - "BAD-046": {}, - "BAD-047": {}, - "BAD-048": {}, - "BAD-049": {}, - "BAD-050": {}, - "BAD-051": {}, - "BAD-052": {}, - "BAD-053": {}, - "BAD-054": {}, - "BAD-055": {}, - "BAD-056": {}, - "BAD-057": {}, - "BAD-058": {}, - "BAD-059": {}, - "BAD-065": {}, - "BAD-066": {}, - "BAD-118": {}, - "BAD-119": {}, - "BAD-120": {}, - "CMP-001": {}, - "CMP-002": {}, - "CMP-003": {}, - "CMP-004": {}, - "CMP-005": {}, - "CMP-006": {}, - "CMP-007": {}, - "CMP-008": {}, - "CMP-009": {}, - "CMP-010": {}, - "CMP-011": {}, - "CMP-012": {}, - "CMP-013": {}, - "CMP-014": {}, - "CMP-015": {}, - "CMP-016": {}, - "CMP-017": {}, - "CMP-018": {}, - "CMP-019": {}, - "CMP-020": {}, - "CMP-021": {}, - "CMP-022": {}, - "CMP-023": {}, - "CMP-024": {}, - "CMP-025": {}, - "CMP-026": {}, - "CMP-027": {}, - "CMP-028": {}, - "CMP-029": {}, - "CMP-030": {}, - "CMP-031": {}, - "CMP-032": {}, - "CMP-033": {}, - "CMP-034": {}, - "CMP-035": {}, - "CMP-036": {}, - "CMP-037": {}, - "CMP-038": {}, - "CMP-039": {}, - "CMP-040": {}, - "CMP-041": {}, - "CMP-042": {}, - "CMP-043": {}, - "CMP-044": {}, - "CMP-045": {}, - "CMP-046": {}, - "CMP-047": {}, - "CMP-048": {}, - "CMP-049": {}, - "CMP-050": {}, - "CMP-051": {}, - "CMP-052": {}, - "CMP-053": {}, - "CMP-054": {}, - "CMP-055": {}, - "CMP-056": {}, - "CMP-057": {}, - "CMP-058": {}, - "CMP-059": {}, - "CMP-060": {}, - "CMP-061": {}, - "CMP-062": {}, - "CMP-063": {}, - "CMP-064": {}, - "CMP-065": {}, - "CMP-066": {}, - "CMP-067": {}, - "CMP-068": {}, - "CMP-069": {}, - "CMP-070": {}, - "CMP-071": {}, - "CMP-072": {}, - "CMP-073": {}, - "CMP-074": {}, - "CMP-075": {}, - "CMP-076": {}, - "CMP-077": {}, - "CMP-078": {}, - "CMP-079": {}, - "CMP-080": {}, - "CMP-081": {}, - "CMP-082": {}, - "CMP-083": {}, - "CMP-084": {}, - "CMP-085": {}, - "CMP-086": {}, - "CMP-087": {}, - "CMP-088": {}, - "CMP-089": {}, - "CMP-090": {}, - "CMP-091": {}, - "CMP-092": {}, - "CMP-093": {}, - "CMP-094": {}, - "CMP-095": {}, - "CMP-096": {}, - "CMP-097": {}, - "CMP-098": {}, - "CMP-099": {}, - "CMP-100": {}, - "CMP-101": {}, - "CMP-102": {}, - "CMP-103": {}, - "CMP-104": {}, - "CMP-105": {}, - "CMP-106": {}, - "CMP-107": {}, - "CMP-108": {}, - "CMP-109": {}, - "CMP-110": {}, - "CMP-111": {}, - "CMP-112": {}, - "CMP-113": {}, - "CMP-114": {}, - "CMP-115": {}, - "CMP-116": {}, - "CMP-117": {}, - "CMP-118": {}, - "CMP-119": {}, - "CMP-120": {}, - "CMP-121": {}, - "CMP-122": {}, - "FAP-020": {}, - "FAP-029": {}, - "FAP-030": {}, - "FAP-031": {}, - "FAP-032": {}, - "FAP-033": {}, - "FAP-035": {}, - "FAP-416": {}, - "FAP-419": {}, - "WX-051": {} - } - }, - { - "kind": "opaque", - "reason": "Unimplemented decoding: compressed or unsupported position format", - "cases": { - "BAD-060": {}, - "BAD-061": {} - } - }, - { - "kind": "opaque", - "reason": "Unimplemented decoding: Mic-E destination and information decoding", - "cases": { - "BAD-067": {}, - "BAD-068": {}, - "BAD-069": {}, - "BAD-070": {}, - "BAD-071": {}, - "BAD-072": {}, - "BAD-074": {}, - "BAD-075": {}, - "BAD-076": {}, - "BAD-077": {}, - "BAD-078": {}, - "BAD-079": {}, - "BAD-080": {}, - "BAD-081": {}, - "FAP-005": {}, - "FAP-036": {}, - "FAP-345": {}, - "FAP-346": {}, - "FAP-347": {}, - "FAP-348": {}, - "FAP-349": {}, - "FAP-350": {}, - "FAP-351": {}, - "FAP-352": {}, - "FAP-353": {}, - "FAP-354": {}, - "FAP-355": {}, - "FAP-356": {}, - "FAP-428": {}, - "FAP-429": {}, - "FAP-430": {}, - "FAP-431": {}, - "MIC-001": {}, - "MIC-002": {}, - "MIC-003": {}, - "MIC-004": {}, - "MIC-005": {}, - "MIC-006": {}, - "MIC-007": {}, - "MIC-008": {}, - "MIC-009": {}, - "MIC-010": {}, - "MIC-011": {}, - "MIC-012": {}, - "MIC-013": {}, - "MIC-014": {}, - "MIC-015": {}, - "MIC-016": {}, - "MIC-017": {}, - "MIC-018": {}, - "MIC-019": {}, - "MIC-020": {}, - "MIC-021": {}, - "MIC-022": {}, - "MIC-023": {}, - "MIC-024": {}, - "MIC-025": {}, - "MIC-026": {}, - "MIC-027": {}, - "MIC-028": {}, - "MIC-029": {}, - "MIC-030": {}, - "MIC-031": {}, - "MIC-032": {}, - "MIC-033": {}, - "MIC-034": {}, - "MIC-035": {}, - "MIC-036": {}, - "MIC-037": {}, - "MIC-038": {}, - "MIC-039": {}, - "MIC-040": {}, - "MIC-041": {}, - "MIC-042": {}, - "MIC-043": {}, - "MIC-044": {}, - "MIC-045": {}, - "MIC-046": {}, - "MIC-047": {}, - "MIC-048": {}, - "MIC-049": {}, - "MIC-050": {}, - "MIC-051": {}, - "MIC-052": {}, - "MIC-053": {}, - "MIC-054": {}, - "MIC-055": {}, - "MIC-056": {}, - "MIC-057": {}, - "MIC-058": {}, - "MIC-059": {}, - "MIC-060": {}, - "MIC-061": {}, - "MIC-062": {}, - "MIC-063": {}, - "MIC-064": {}, - "MIC-065": {}, - "MIC-066": {}, - "MIC-067": {}, - "MIC-068": {}, - "MIC-069": {}, - "MIC-070": {}, - "MIC-071": {}, - "MIC-072": {}, - "MIC-073": {}, - "MIC-074": {}, - "MIC-075": {}, - "MIC-076": {}, - "MIC-077": {}, - "MIC-078": {}, - "MIC-079": {}, - "MIC-080": {}, - "MIC-081": {}, - "MIC-082": {}, - "MIC-083": {}, - "MIC-084": {}, - "MIC-085": {}, - "MIC-086": {}, - "MIC-087": {}, - "MIC-088": {}, - "MIC-089": {}, - "MIC-090": {}, - "MIC-091": {}, - "MIC-092": {}, - "MIC-093": {}, - "MIC-094": {}, - "MIC-095": {}, - "MIC-096": {}, - "MIC-097": {}, - "MIC-098": {}, - "MIC-099": {}, - "MIC-100": {}, - "MIC-101": {}, - "MIC-102": {}, - "MIC-103": {}, - "MIC-104": {}, - "MIC-105": {}, - "MIC-106": {}, - "MIC-107": {}, - "MIC-108": {}, - "MIC-109": {}, - "MIC-110": {}, - "MIC-111": {}, - "MIC-112": {}, - "MIC-113": {}, - "MIC-114": {}, - "MIC-115": {}, - "MIC-116": {}, - "MIC-117": {}, - "MIC-118": {}, - "MIC-119": {}, - "MIC-120": {}, - "MIC-121": {}, - "MIC-122": {}, - "MIC-123": {}, - "MIC-124": {}, - "MIC-125": {}, - "MIC-126": {}, - "MIC-127": {}, - "MIC-128": {}, - "MIC-129": {}, - "MIC-130": {}, - "MIC-131": {}, - "MIC-132": {}, - "MIC-133": {}, - "MIC-134": {}, - "MIC-135": {}, - "MIC-136": {}, - "MIC-137": {}, - "MIC-138": {}, - "MIC-139": {}, - "MIC-140": {}, - "MIC-141": {}, - "MIC-142": {}, - "MIC-143": {}, - "MIC-144": {}, - "MIC-145": {}, - "MIC-146": {}, - "MIC-147": {}, - "MIC-148": {}, - "MIC-149": {}, - "MIC-150": {}, - "MIC-151": {}, - "MIC-152": {}, - "MIC-153": {}, - "MIC-154": {}, - "MIC-155": {}, - "MIC-156": {}, - "MIC-157": {}, - "MIC-158": {}, - "MIC-159": {}, - "MIC-160": {}, - "MIC-161": {}, - "MIC-162": {}, - "MIC-163": {}, - "MIC-164": {}, - "MIC-165": {}, - "MIC-166": {}, - "MIC-167": {}, - "MIC-168": {}, - "MIC-169": {}, - "MIC-170": {}, - "MIC-171": {}, - "MIC-172": {}, - "MIC-173": {}, - "MIC-174": {}, - "MIC-175": {}, - "MIC-176": {}, - "MIC-177": {}, - "MIC-178": {}, - "MIC-179": {}, - "MIC-180": {}, - "MIC-181": {}, - "MIC-182": {}, - "MIC-183": {}, - "MIC-184": {}, - "MIC-185": {}, - "MIC-186": {}, - "MIC-187": {}, - "MIC-188": {}, - "MIC-189": {}, - "MIC-190": {}, - "MIC-191": {}, - "MIC-192": {}, - "MIC-193": {}, - "MIC-194": {}, - "MIC-195": {}, - "MIC-196": {}, - "MIC-197": {}, - "MIC-198": {}, - "MIC-199": {}, - "MIC-200": {}, - "MIC-201": {}, - "MIC-202": {}, - "MIC-203": {}, - "MIC-204": {}, - "MIC-205": {}, - "MIC-206": {}, - "MIC-207": {}, - "MIC-208": {}, - "MIC-209": {}, - "MIC-210": {}, - "MIC-211": {}, - "MIC-212": {}, - "MIC-213": {}, - "MIC-214": {}, - "MIC-215": {}, - "MIC-216": {}, - "MIC-217": {}, - "MIC-218": {}, - "MIC-219": {}, - "MIC-220": {}, - "MIC-221": {}, - "MIC-222": {}, - "MIC-223": {}, - "MIC-224": {}, - "MIC-225": {}, - "MIC-226": {}, - "MIC-227": {}, - "MIC-228": {}, - "MIC-229": {}, - "MIC-230": {}, - "MIC-231": {}, - "MIC-232": {}, - "MIC-233": {}, - "MIC-234": {}, - "MIC-235": {}, - "MIC-236": {}, - "MIC-237": {}, - "MIC-238": {}, - "MIC-239": {}, - "MIC-240": {}, - "MIC-241": {}, - "MIC-242": {}, - "MIC-243": {}, - "MIC-244": {}, - "MIC-245": {}, - "MIC-246": {}, - "MIC-247": {}, - "MIC-248": {}, - "MIC-249": {}, - "MIC-250": {}, - "MIC-251": {}, - "MIC-252": {}, - "MIC-253": {}, - "MIC-254": {}, - "MIC-255": {}, - "MIC-256": {}, - "MIC-257": {}, - "MIC-258": {}, - "MIC-259": {}, - "MIC-260": {}, - "MIC-261": {}, - "MIC-262": {}, - "MIC-263": {}, - "MIC-264": {}, - "MIC-265": {} - } - }, - { - "kind": "opaque", - "reason": "Unimplemented decoding: unsupported information field family", - "cases": { - "BAD-082": {}, - "BAD-083": {}, - "BAD-084": {}, - "BAD-085": {}, - "BAD-086": {}, - "BAD-087": {}, - "BAD-088": {}, - "BAD-098": {}, - "BAD-099": {}, - "BAD-100": {}, - "BAD-101": {}, - "BAD-102": {}, - "BAD-103": {}, - "BAD-104": {}, - "BAD-105": {}, - "BAD-106": {}, - "BAD-107": {}, - "BAD-108": {}, - "FAP-003": {}, - "FAP-004": {}, - "FAP-019": {}, - "FAP-023": {}, - "FAP-024": {}, - "FAP-025": {}, - "FAP-026": {}, - "FAP-027": {}, - "FAP-028": {}, - "FAP-044": {}, - "FAP-047": {}, - "FAP-051": {}, - "FAP-053": {}, - "FAP-054": {}, - "FAP-055": {}, - "FAP-056": {}, - "FAP-057": {}, - "FAP-058": {}, - "FAP-059": {}, - "FAP-060": {}, - "FAP-061": {}, - "FAP-357": {}, - "FAP-358": {}, - "FAP-359": {}, - "FAP-360": {}, - "FAP-361": {}, - "FAP-362": {}, - "FAP-363": {}, - "FAP-364": {}, - "FAP-365": {}, - "FAP-366": {}, - "FAP-367": {}, - "FAP-368": {}, - "FAP-369": {}, - "FAP-370": {}, - "FAP-371": {}, - "FAP-372": {}, - "FAP-373": {}, - "FAP-374": {}, - "FAP-375": {}, - "FAP-376": {}, - "FAP-377": {}, - "FAP-378": {}, - "FAP-379": {}, - "FAP-380": {}, - "FAP-381": {}, - "FAP-382": {}, - "FAP-383": {}, - "FAP-384": {}, - "FAP-385": {}, - "FAP-386": {}, - "FAP-387": {}, - "FAP-388": {}, - "FAP-389": {}, - "FAP-390": {}, - "FAP-391": {}, - "FAP-392": {}, - "FAP-393": {}, - "FAP-394": {}, - "FAP-395": {}, - "FAP-396": {}, - "FAP-397": {}, - "FAP-398": {}, - "FAP-399": {}, - "FAP-400": {}, - "FAP-401": {}, - "FAP-402": {}, - "FAP-403": {}, - "FAP-404": {}, - "FAP-405": {}, - "FAP-406": {}, - "FAP-407": {}, - "FAP-408": {}, - "FAP-409": {}, - "FAP-410": {}, - "FAP-411": {}, - "FAP-412": {}, - "FAP-432": {}, - "FAP-433": {}, - "FAP-434": {}, - "FAP-435": {}, - "FAP-436": {}, - "FAP-437": {}, - "FAP-438": {}, - "FAP-455": {}, - "FAP-462": {}, - "FAP-464": {}, - "FAP-480": {}, - "FAP-481": {}, - "FAP-482": {}, - "FAP-483": {}, - "FAP-484": {}, - "FAP-485": {}, - "FAP-486": {}, - "FAP-487": {}, - "FAP-488": {}, - "FAP-489": {}, - "FAP-490": {}, - "FAP-495": {}, - "FAP-496": {}, - "FAP-500": {}, - "NME-001": {}, - "NME-002": {}, - "NME-003": {}, - "NME-004": {}, - "NME-005": {}, - "NME-006": {}, - "NME-007": {}, - "NME-008": {}, - "NME-009": {}, - "NME-010": {}, - "NME-011": {}, - "NME-012": {}, - "NME-013": {}, - "NME-014": {}, - "NME-015": {}, - "NME-016": {}, - "NME-017": {}, - "NME-018": {}, - "NME-019": {}, - "NME-020": {}, - "NME-022": {}, - "NME-023": {}, - "NME-024": {}, - "NME-025": {}, - "NME-026": {}, - "NME-027": {}, - "NME-028": {}, - "NME-029": {}, - "NME-030": {}, - "NME-031": {}, - "NME-032": {}, - "NME-033": {}, - "NME-034": {}, - "NME-035": {}, - "NME-036": {}, - "OBJ-001": {}, - "OBJ-002": {}, - "OBJ-003": {}, - "OBJ-004": {}, - "OBJ-005": {}, - "OBJ-006": {}, - "OBJ-007": {}, - "OBJ-008": {}, - "OBJ-009": {}, - "OBJ-010": {}, - "OBJ-011": {}, - "OBJ-012": {}, - "OBJ-013": {}, - "OBJ-014": {}, - "OBJ-015": {}, - "OBJ-016": {}, - "OBJ-017": {}, - "OBJ-018": {}, - "OBJ-019": {}, - "OBJ-020": {}, - "OBJ-021": {}, - "OBJ-022": {}, - "OBJ-023": {}, - "OBJ-024": {}, - "OBJ-025": {}, - "OBJ-026": {}, - "OBJ-027": {}, - "OBJ-028": {}, - "OBJ-029": {}, - "OBJ-030": {}, - "OBJ-031": {}, - "OBJ-032": {}, - "OBJ-033": {}, - "OBJ-034": {}, - "OBJ-035": {}, - "OBJ-036": {}, - "OBJ-037": {}, - "OBJ-038": {}, - "OBJ-039": {}, - "OBJ-040": {}, - "OBJ-041": {}, - "OBJ-042": {}, - "OBJ-043": {}, - "OBJ-044": {}, - "OBJ-045": {}, - "OBJ-046": {}, - "OBJ-047": {}, - "OBJ-048": {}, - "OBJ-049": {}, - "OBJ-050": {}, - "OBJ-051": {}, - "OBJ-052": {}, - "OBJ-053": {}, - "OTH-009": {}, - "OTH-010": {}, - "OTH-011": {}, - "OTH-012": {}, - "OTH-013": {}, - "OTH-033": {}, - "OTH-034": {}, - "OTH-035": {}, - "OTH-036": {}, - "OTH-037": {}, - "QRY-001": {}, - "QRY-002": {}, - "QRY-003": {}, - "QRY-004": {}, - "QRY-005": {}, - "QRY-006": {}, - "QRY-018": {}, - "QRY-019": {}, - "QRY-020": {}, - "TIM-008": {}, - "TIM-009": {}, - "TIM-010": {}, - "TLM-001": {}, - "TLM-002": {}, - "TLM-003": {}, - "TLM-004": {}, - "TLM-005": {}, - "TLM-006": {}, - "TLM-007": {}, - "TLM-008": {}, - "TLM-009": {}, - "WX-001": {}, - "WX-006": {}, - "WX-007": {}, - "WX-008": {}, - "WX-009": {}, - "WX-010": {}, - "WX-011": {}, - "WX-012": {}, - "WX-013": {}, - "WX-014": {}, - "WX-015": {}, - "WX-016": {}, - "WX-017": {}, - "WX-018": {}, - "WX-019": {}, - "WX-020": {}, - "WX-021": {}, - "WX-022": {}, - "WX-023": {}, - "WX-024": {}, - "WX-025": {}, - "WX-026": {}, - "WX-027": {}, - "WX-028": {}, - "WX-029": {}, - "WX-030": {}, - "WX-031": {}, - "WX-032": {}, - "WX-033": {}, - "WX-034": {}, - "WX-035": {}, - "WX-036": {}, - "WX-037": {}, - "WX-038": {}, - "WX-039": {}, - "WX-040": {}, - "WX-044": {}, - "WX-045": {}, - "WX-046": {}, - "WX-052": {}, - "WX-053": {}, - "WX-054": {}, - "WX-055": {}, - "WX-056": {}, - "WX-057": {}, - "WX-058": {}, - "WX-059": {}, - "WX-063": {}, - "WX-064": {}, - "WX-065": {}, - "WX-066": {}, - "FAP-413": {} - } - }, - { - "kind": "fields", - "reason": "Explicit FAP compatibility difference; source defaults/options or text normalization differ.", - "cases": { - "FAP-001": { - "$.payload.comment": "6/- Lnx APRS Srv - sez. ARI VR EST", - "$.payload.extensions.phg.rate_per_hour": null - }, - "FAP-002": { - "$": "rejection" - }, - "FAP-006": { - "$.payload.comment": "/RELAY,WIDE, OH7LZB testing" - }, - "FAP-013": { - "$.header.source": "oh7lzb" - }, - "FAP-016": { - "$.header.destination": "aprs" - }, - "FAP-017": { - "$": "rejection" - }, - "FAP-022": { - "$": "rejection" - }, - "FAP-446": { - "$.payload.comment": " {UIV32N}" - }, - "FAP-447": { - "$.payload.comment": " {UIV32N}" - }, - "FAP-452": { - "$.payload.comment": " {UIV32N}" - }, - "FAP-454": { - "$.type": "malformed", - "$.header": { - "missing": true - }, - "$.payload": { - "missing": true - } - }, - "FAP-456": { - "$.type": "malformed", - "$.header": { - "missing": true - }, - "$.payload": { - "missing": true - } - }, - "FAP-458": { - "$.payload.comment": "/RELAY,WIDE, OH2AP Jarvenpaa" - }, - "FAP-465": { - "$.payload.comment": "Home of KA0RID", - "$.payload.extensions.weather": null - }, - "FAP-466": { - "$.payload.comment": " RELAY,WIDE, OH2AP Jarvenpaa \t " - }, - "FAP-467": { - "$.payload.comment": "5/RELAY,WIDE, OH2AP Jarvenpaa", - "$.payload.extensions.phg.rate_per_hour": null - }, - "FAP-468": { - "$.payload.comment": "Z/some comment" - }, - "FAP-471": { - "$.payload.comment": " 13.8V 15CYB1RUS-9 Mobile Tracker" - }, - "FAP-472": { - "$.payload.comment": " 13.8V 15CYB1RUS-9 Mobile Tracker" - }, - "FAP-499": { - "$.payload.comment": "/RELAY,WIDE, OH2AP Jarvenpaa" - }, - "FAP-501": { - "$.payload.comment": "/Testing" - }, - "FAP-444": { - "$.payload.type": "message", - "$.payload.definition": { - "missing": true - } - } - } - }, - { - "kind": "opaque", - "reason": "Unimplemented decoding: !DAO! precision and datum extension", - "cases": { - "FAP-034": {}, - "FAP-422": {}, - "FAP-448": {}, - "FAP-449": {}, - "FAP-450": {}, - "FAP-451": {}, - "FAP-453": {}, - "FAP-511": {}, - "FAP-512": {}, - "FAP-513": {} - } - }, - { - "kind": "opaque", - "reason": "Unimplemented decoding: base91 comment telemetry", - "cases": { - "FAP-415": {}, - "FAP-417": {}, - "FAP-418": {}, - "FAP-420": {}, - "FAP-421": {}, - "FAP-457": {} - } - }, - { - "kind": "opaque", - "reason": "Unimplemented decoding: positioned weather report", - "cases": { - "FAP-474": {}, - "FAP-475": {}, - "FAP-476": {}, - "FAP-477": {}, - "FAP-478": {}, - "FAP-479": {}, - "FAP-497": {}, - "WX-002": {}, - "WX-003": {}, - "WX-004": {}, - "WX-005": {}, - "WX-041": {}, - "WX-042": {}, - "WX-043": {}, - "WX-047": {}, - "WX-048": {}, - "WX-060": {}, - "WX-061": {}, - "WX-062": {} - } - }, - { - "kind": "opaque", - "reason": "Unimplemented decoding: vendor raw-weather interpretation", - "cases": { - "FAP-491": {}, - "FAP-492": {}, - "FAP-493": {}, - "FAP-494": {}, - "OTH-001": {}, - "OTH-002": {}, - "OTH-003": {}, - "OTH-004": {} - } - }, - { - "kind": "opaque", - "reason": "Unimplemented decoding: specialized message semantics", - "cases": { - "MSG-026": {}, - "MSG-027": {}, - "MSG-028": {}, - "MSG-029": {}, - "MSG-030": {}, - "MSG-031": {}, - "MSG-032": {}, - "MSG-033": {}, - "MSG-034": {}, - "MSG-035": {}, - "MSG-036": {}, - "MSG-037": {}, - "MSG-038": {}, - "MSG-039": {}, - "MSG-040": {}, - "MSG-041": {}, - "MSG-042": {}, - "MSG-043": {}, - "MSG-044": {}, - "MSG-045": {}, - "QRY-007": {}, - "QRY-008": {}, - "QRY-009": {}, - "QRY-010": {}, - "QRY-011": {}, - "QRY-012": {}, - "QRY-013": {}, - "QRY-014": {}, - "TLM-010": {}, - "TLM-011": {}, - "TLM-012": {}, - "TLM-013": {}, - "TLM-014": {}, - "TLM-015": {}, - "TLM-016": {}, - "TLM-017": {}, - "TLM-018": {}, - "FAP-439": {}, - "FAP-440": {}, - "FAP-441": {}, - "FAP-442": {}, - "FAP-443": {} - } - }, - { - "kind": "fields", - "reason": "AEA framing adapter is not implemented.", - "cases": { - "NET-014": { - "$.type": "malformed", - "$.header": { - "missing": true - }, - "$.payload": { - "missing": true - } - } - } - }, - { - "kind": "unresolved", - "reason": "State assertions are not decoded packet outputs; a packet-model expectation needs separate review.", - "cases": { - "SEQ-001.1": {}, - "SEQ-001.2": {}, - "SEQ-001.3": {}, - "SEQ-001.4": {}, - "SEQ-002.1": {}, - "SEQ-002.2": {}, - "SEQ-002.3": {}, - "SEQ-003.1": {}, - "SEQ-003.2": {}, - "SEQ-003.3": {}, - "SEQ-004.1": {}, - "SEQ-004.2": {}, - "SEQ-004.3": {}, - "SEQ-004.4": {}, - "SEQ-004.5": {}, - "SEQ-005.1": {}, - "SEQ-005.2": {}, - "SEQ-005.3": {}, - "SEQ-006.1": {}, - "SEQ-006.2": {}, - "SEQ-006.3": {}, - "SEQ-007.1": {}, - "SEQ-007.2": {} - } - }, - { - "kind": "fields", - "reason": "Status grid/beam suffix decoding is not implemented; suffix remains text.", - "cases": { - "STA-008": { - "$.payload.symbol": null, - "$.payload.text": "IO91/- Home", - "$.payload.grid": null - }, - "STA-009": { - "$.payload.symbol": null, - "$.payload.text": "IO91SX/- Home", - "$.payload.grid": null - }, - "STA-010": { - "$.payload.symbol": null, - "$.payload.text": "io91sx/- Home", - "$.payload.grid": null - }, - "STA-011": { - "$.payload.symbol": null, - "$.payload.text": "AA00AA/- Home", - "$.payload.grid": null - }, - "STA-012": { - "$.payload.symbol": null, - "$.payload.text": "RR99XX/- Home", - "$.payload.grid": null - }, - "STA-013": { - "$.payload.text": "Ready^01", - "$.payload.beam": null - }, - "STA-014": { - "$.payload.text": "Ready^0:", - "$.payload.beam": null - }, - "STA-015": { - "$.payload.text": "Ready^0K", - "$.payload.beam": null - }, - "STA-016": { - "$.payload.text": "Ready^91", - "$.payload.beam": null - }, - "STA-017": { - "$.payload.text": "Ready^9:", - "$.payload.beam": null - }, - "STA-018": { - "$.payload.text": "Ready^9K", - "$.payload.beam": null - }, - "STA-019": { - "$.payload.text": "Ready^A1", - "$.payload.beam": null - }, - "STA-020": { - "$.payload.text": "Ready^A:", - "$.payload.beam": null - }, - "STA-021": { - "$.payload.text": "Ready^AK", - "$.payload.beam": null - }, - "STA-022": { - "$.payload.text": "Ready^B1", - "$.payload.beam": null - }, - "STA-023": { - "$.payload.text": "Ready^B:", - "$.payload.beam": null - }, - "STA-024": { - "$.payload.text": "Ready^BK", - "$.payload.beam": null - }, - "STA-025": { - "$.payload.text": "Ready^Z1", - "$.payload.beam": null - }, - "STA-026": { - "$.payload.text": "Ready^Z:", - "$.payload.beam": null - }, - "STA-027": { - "$.payload.text": "Ready^ZK", - "$.payload.beam": null - }, - "STA-028": { - "$.payload.symbol": null, - "$.payload.text": "IO91SX/- ^B7", - "$.payload.grid": null, - "$.payload.beam": null - } - } - }, - { - "kind": "fields", - "reason": "Alternate W weather symbol is not decoded as weather.", - "cases": { - "WX-049": { - "$.payload.comment": "g005t077", - "$.payload.extensions.weather": null - }, - "WX-050": { - "$.payload.comment": "g005t077", - "$.payload.extensions.weather": null - } - } - } -] diff --git a/packages/aprs/tests/vectors/README.md b/packages/aprs/tests/vectors/README.md index 3a37755..4d93ee1 100644 --- a/packages/aprs/tests/vectors/README.md +++ b/packages/aprs/tests/vectors/README.md @@ -1,118 +1,52 @@ # Documented APRS vectors -These 18 JSONL files contain every numbered case from -[`APRS_COMPLIANCE_VECTORS.md`](../../docs/APRS_COMPLIANCE_VECTORS.md), edition 1: -**1,538 individual packets plus 23 packet occurrences from seven sequences**. -Sequence IDs have a `.step` suffix; all 1,545 original case IDs are represented. -No packet bytes were dropped, trimmed or replaced. Malformed envelopes (including -empty input) and the explicitly labeled AEA example remain malformed/AEA; adding -an envelope would destroy the test. All ordinary inputs already have full TNC2 -envelopes. Existing synthetic envelopes in the source supplements are retained; -this conversion adds none. +These 18 JSONL files retain all 1,538 individual packets and 23 sequence +occurrences from [edition 1](../../docs/APRS_COMPLIANCE_VECTORS.md): 1,561 rows and +1,545 original case IDs. Every raw TNC2 byte, source expectation, receiver option +and provenance field is unchanged from PR #4. A frozen integrity test protects +that requirement, independently of regeneration. -## Run and regenerate - -From the repository root, after installing the package and `pytest>=8,<10`: +Run from the repository root: ```sh -PYTHONPATH=packages/aprs/src python -m pytest packages/aprs/tests -q +python -m pytest packages/aprs/tests -q python packages/aprs/tests/generate_vectors.py ``` -`hatch run test` also works from `packages/aprs`. The existing unittest suite -still works, but **pytest is required to collect the JSONL corpus**. The APRS -vector workflow runs the entire suite against source and a freshly installed -wheel. Tests and vectors are repository resources, not runtime package data. - -## Row contract - -- `id`, `title`, `profile`, `source`, and optional `note`, `scope_note` and - `extension_tags` preserve provenance, copied verbatim from the source case. -- `packet` is a **Latin-1 byte carrier**, not text to UTF-8 encode. Use - `packet.encode("latin-1")`. JSON escapes preserve every control/high-bit byte. - The generator checks source byte lengths and any supplied hex before writing. -- `source_expected` retains the complete original semantic assertions. FAP's - documented top-level defaults are expanded before overlaying each snapshot. - FAP options remain separate; only `ax25` maps to the existing RF profile. -- `expected` is an independently translated **subset of the public - `to_json_dict(..., include_defaults=True)` representation**. An absent key - makes no assertion; an explicit null does. This matches the source contract, - which permits additional correctly decoded fields. These are not snapshots of - current parser output. The generator imports no APRS parser or models. -- Projections use the model's wire units and enums. Rain is projected from the - source's hundredths of an inch as inches (its millimetre conversions stay - unmapped), so unavailable rain readings remain explicit nulls. Storm kinds - map to `HC`/`TS`/`TD`, and Mic-E altitude to `mic_e`; an unknown source value - fails generation. DF bearing `usable`/`accuracy_less_than_deg` are not - projected: they derive from a quality-code mapping the sources dispute (see - `docs/UNRESOLVED_SPEC.md`). FAP rows keep FAP's own metric weather units. -- `unmapped` lists source paths not consumed by the public-JSON projection. - Their values remain in `source_expected`; passing the projection does **not** - claim those assertions pass. Examples include derived grid/range views, - routing/state policies, source-only encoding evidence, FAP recovery flags, - and flattened FAP NMEA properties without sentence-level counterparts. -- For rejection cases, `expected` asserts lossless original bytes and `rejection` - requires either `Malformed` or a `Packet` with nonconforming diagnostics. - Source error classes and partial results remain intact. We do not invent - exception wording or equate an unsupported opaque packet with rejection. -- `gap` identifies an explicitly reviewed expected failure. Its allowed-current - values are failure guards, **not desired decoded outputs**. - -No decoder implementation is used to generate desired expectations. Field and -unit renames, conversions, and FAP compatibility mappings are explicit in -`generate_vectors.py`. The integrity tests verify exact regeneration, unique IDs, -section/row counts, and that projected keys and enum values belong to public -JSON models, even for codecs that cannot yet decode their packets. Coordinate -tolerance is 1e-8 -degrees; other floating measurements use 1e-6 absolute / 1e-9 relative tolerance. - -## Expected failures and unresolved assertions - -`vector_gaps.json` is a reviewed manifest tied to individual IDs. It is **not -automatically refreshed from test failures**. Every JSONL file and every line -gets a separate pytest case labeled `filename:line:vector-id`. - -Only `KnownGap` can xfail. A missing codec must still return the specific recorded -unsupported diagnostic, preserve opaque bytes, and preserve the expected header. -A field gap must match the listed field paths and current values; a different -field mismatch or a parser exception fails normally. Passing a marked case is a -strict XPASS failure, prompting removal/review of that annotation. Harness tests -exercise both regression detection and completed-gap behavior. - -The 23 sequence occurrences are explicitly unresolved (`expected: null`): their -source expectations are station state transitions, not packet model outputs. -They are collected and byte-preservation checked, then reported as expected -failures with the state-model reason. They need an independently reviewed packet -expectation/state adapter before they can become semantic passes; they are not -invented passing placeholders. No other packet entries are omitted from the -behavioral projections. Existing planned codec gaps, source compatibility -choices, and adapter/state work are distinct from parser regressions. - -Currently the 1,561 corpus cases yield **642 passes and 919 -expected failures**, including the 23 unresolved state occurrences. These are -projection results, not a claim of complete compliance with every source field. -The complete suite includes the pre-existing tests and harness checks. - -| File | Rows | Pass | Expected failure | -| --------- | ---: | ---: | ---------------: | -| hdr.jsonl | 51 | 51 | 0 | -| pos.jsonl | 68 | 56 | 12 | -| tim.jsonl | 20 | 17 | 3 | -| ext.jsonl | 50 | 50 | 0 | -| cmp.jsonl | 122 | 0 | 122 | -| mic.jsonl | 265 | 0 | 265 | -| obj.jsonl | 53 | 0 | 53 | -| wx.jsonl | 66 | 0 | 66 | -| tlm.jsonl | 18 | 0 | 18 | -| msg.jsonl | 45 | 25 | 20 | -| qry.jsonl | 20 | 3 | 17 | -| sta.jsonl | 29 | 8 | 21 | -| nme.jsonl | 36 | 1 | 35 | -| net.jsonl | 15 | 14 | 1 | -| oth.jsonl | 38 | 24 | 14 | -| bad.jsonl | 125 | 66 | 59 | -| seq.jsonl | 23 | 0 | 23 | -| fap.jsonl | 517 | 327 | 190 | - -FAP fixtures preserve the pinned upstream provenance and licensing attribution -in the source document's final section. No FAP implementation is imported. +The generator translates source assertions, never parser output. Schema changes +include units/enums, explicit absence, telemetry channel padding, structured query +responses and the existing typed NMEA hierarchy. `packet` is a Latin-1 byte carrier: +use `packet.encode("latin-1")`, including for control/high-bit bytes. + +`expected` is a subset of the public JSON representation. Missing keys make no +assertion; explicit nulls do. `source_expected` preserves the original assertions. +`unmapped` means outside the JSON projection, **not untested**: `source_details.py` +checks every such path using models, evidence, derived properties or the private +historical receiver adapter. It also checks FAP's flattened NMEA observations. +Rejection cases also check retained headers and partial observations, including +invalid timestamps and the historical receiver's validation order. Error wording +is represented by the public diagnostic scheme rather than copied verbatim. + +Some profiles conflict for the same bytes. `_compatibility.py` expresses those +receiver policies without changing the public API or consulting expected values. +The canonical codec retains precise wire data; the adapter selects historical +comment trimming, unit conventions, acceptance and warning policies. + +Sequence rows contain `state_expected` and run all preceding steps through a test +receiver implemented using public packet models. State is not added to the codec. + +All 1,561 rows pass without xfails. Every row also participates in encoding tests: +1,294 semantic round trips, with checksum repair for three intentionally bad NMEA +checksums, and 267 explicit malformed/conformance refusals. The reviewed +`../roundtrip_exceptions.json` records exact reasons. Adding a new unexpected +refusal or silently fixing a recorded one fails the test; this file is not +regenerated by `generate_vectors.py`. + +Round-trip tests remove all evidence fields before serialization, check semantic +fields at wire precision, and require canonical bytes to stabilize. Raw wrappers +retain `information` because it is their semantic content. JSON round trips are +also checked for every input, including `Malformed` results. + +Tests and fixtures are repository resources, not runtime package data. The CI +workflow tests source and a freshly installed wheel. Pinned FAP provenance and +licensing attribution remain in the unchanged source document. diff --git a/packages/aprs/tests/vectors/bad.jsonl b/packages/aprs/tests/vectors/bad.jsonl index 56b422f..073ddd0 100644 --- a/packages/aprs/tests/vectors/bad.jsonl +++ b/packages/aprs/tests/vectors/bad.jsonl @@ -21,8 +21,8 @@ {"id":"BAD-021","title":"bad-latitude-hemisphere","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!4903.50X/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"bad-latitude-hemisphere","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50X/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-022","title":"bad-longitude-hemisphere","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!4903.50N/07201.75X-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"bad-longitude-hemisphere","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/07201.75X-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-023","title":"bad-decimal-separator","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!4903,50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"bad-decimal-separator","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903,50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"BAD-024","title":"interior-ambiguity-hole","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!490 .50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"interior-ambiguity-hole","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!490 .50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"BAD-025","title":"longitude-more-ambiguous-than-latitude","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!4903.50N/07201. W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"longitude-more-ambiguous-than-latitude","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/07201. W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"BAD-024","title":"interior-ambiguity-hole","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!490 .50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"interior-ambiguity-hole","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!490 .50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-025","title":"longitude-more-ambiguous-than-latitude","profile":"strict-validation","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!4903.50N/07201. W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"longitude-more-ambiguous-than-latitude","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/07201. W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-026","title":"Truncated uncompressed position 0","profile":"strict-validation","source":"APRS101 pp. 24,32","packet":"N0CALL>APRS:!","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-027","title":"Truncated uncompressed position 1","profile":"strict-validation","source":"APRS101 pp. 24,32","packet":"N0CALL>APRS:!4","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-028","title":"Truncated uncompressed position 7","profile":"strict-validation","source":"APRS101 pp. 24,32","packet":"N0CALL>APRS:!4903.50","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -39,53 +39,53 @@ {"id":"BAD-039","title":"Invalid extension-looking comment /A=12345","profile":"strict-validation","source":"APRS101 pp. 20,26-30","packet":"N0CALL>APRS:!4903.50N/07201.75W>/A=12345","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"/A=12345"},"note":"The underlying position remains valid. The extension syntax/range is invalid or undefined. This corpus preserves those bytes as comment and exposes no fabricated movement/altitude/range; a receiver may additionally report an invalid-extension warning.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"/A=12345","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} {"id":"BAD-040","title":"Invalid extension-looking comment /A=12A456","profile":"strict-validation","source":"APRS101 pp. 20,26-30","packet":"N0CALL>APRS:!4903.50N/07201.75W>/A=12A456","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"/A=12A456"},"note":"The underlying position remains valid. The extension syntax/range is invalid or undefined. This corpus preserves those bytes as comment and exposes no fabricated movement/altitude/range; a receiver may additionally report an invalid-extension warning.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"/A=12A456","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} {"id":"BAD-041","title":"Truncated compressed position 0","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"BAD-042","title":"Truncated compressed position 1","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-043","title":"Truncated compressed position 2","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-044","title":"Truncated compressed position 3","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-045","title":"Truncated compressed position 4","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-046","title":"Truncated compressed position 5","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-047","title":"Truncated compressed position 6","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-048","title":"Truncated compressed position 7","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-049","title":"Truncated compressed position 8","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-050","title":"Truncated compressed position 9","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e7","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-051","title":"Truncated compressed position 10","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e7>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-052","title":"Truncated compressed position 11","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e7>7","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-053","title":"Truncated compressed position 12","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e7>7P","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7P"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-054","title":"Compressed invalid byte 1 20","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/ L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/ L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-055","title":"Compressed invalid byte 2 7c","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5|!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5|!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-056","title":"Compressed invalid byte 3 7d","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5L}!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5L}!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-057","title":"Compressed invalid byte 5 00","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5L!!\u0000*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5L!!\u0000*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-058","title":"Compressed invalid byte 11 7c","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5L!!<*e7>7|[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7|["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-059","title":"Compressed invalid byte 12 7f","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P\u007f","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7P\u007f"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-060","title":"Invalid compressed table 0","profile":"strict-validation","source":"APRS101 pp. 37,91","packet":"N0CALL>APRS:!05L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-position-layout","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!05L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed or unsupported position format"}} -{"id":"BAD-061","title":"Invalid compressed table 9","profile":"strict-validation","source":"APRS101 pp. 37,91","packet":"N0CALL>APRS:!95L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-position-layout","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!95L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed or unsupported position format"}} +{"id":"BAD-042","title":"Truncated compressed position 1","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-043","title":"Truncated compressed position 2","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-044","title":"Truncated compressed position 3","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-045","title":"Truncated compressed position 4","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-046","title":"Truncated compressed position 5","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-047","title":"Truncated compressed position 6","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-048","title":"Truncated compressed position 7","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-049","title":"Truncated compressed position 8","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-050","title":"Truncated compressed position 9","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e7","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-051","title":"Truncated compressed position 10","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e7>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-052","title":"Truncated compressed position 11","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e7>7","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-053","title":"Truncated compressed position 12","profile":"strict-validation","source":"APRS101 p. 37","packet":"N0CALL>APRS:!/5L!!<*e7>7P","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"truncated-compressed-position","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7P"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-054","title":"Compressed invalid byte 1 20","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/ L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/ L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-055","title":"Compressed invalid byte 2 7c","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5|!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5|!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-056","title":"Compressed invalid byte 3 7d","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5L}!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5L}!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-057","title":"Compressed invalid byte 5 00","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5L!!\u0000*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5L!!\u0000*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-058","title":"Compressed invalid byte 11 7c","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5L!!<*e7>7|[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7|["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-059","title":"Compressed invalid byte 12 7f","profile":"strict-validation","source":"APRS101 pp. 37-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P\u007f","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-compressed-character","position_usable":false},"note":"Base-91 digits are 0..90 => ASCII !..{. The p.20 mention of | is an off-by-one inconsistency; see register.","expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7P\u007f"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-060","title":"Invalid compressed table 0","profile":"strict-validation","source":"APRS101 pp. 37,91","packet":"N0CALL>APRS:!05L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-position-layout","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!05L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-061","title":"Invalid compressed table 9","profile":"strict-validation","source":"APRS101 pp. 37,91","packet":"N0CALL>APRS:!95L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-position-layout","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!95L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-062","title":"Invalid compressed table k","profile":"strict-validation","source":"APRS101 pp. 37,91","packet":"N0CALL>APRS:!k5L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-position-layout","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!k5L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-063","title":"Invalid compressed table z","profile":"strict-validation","source":"APRS101 pp. 37,91","packet":"N0CALL>APRS:!z5L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-position-layout","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!z5L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-064","title":"Invalid compressed table ,","profile":"strict-validation","source":"APRS101 pp. 37,91","packet":"N0CALL>APRS:!,5L!!<*e7>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-position-layout","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!,5L!!<*e7>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"BAD-065","title":"Compressed coordinate outside Earth","profile":"strict-validation","source":"APRS101 pp. 23-24,38","packet":"N0CALL>APRS:!/!!!!{{{{>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"coordinate-out-of-range","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/!!!!{{{{>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-066","title":"Compressed coordinate outside Earth","profile":"strict-validation","source":"APRS101 pp. 23-24,38","packet":"N0CALL>APRS:!/{{{{!!!!>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"coordinate-out-of-range","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/{{{{!!!!>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-067","title":"Invalid Mic-E destination AB","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>AB:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"AB","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>AB:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"BAD-068","title":"Invalid Mic-E destination S32U6","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32U6:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32U6","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32U6:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"BAD-069","title":"Invalid Mic-E destination S32U6TX","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32U6TX:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32U6TX","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32U6TX:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"BAD-070","title":"Invalid Mic-E destination S32M6T","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32M6T:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32M6T","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32M6T:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"BAD-071","title":"Invalid Mic-E destination S32A6T","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32A6T:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32A6T","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32A6T:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"BAD-072","title":"Invalid Mic-E destination S32U6M","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32U6M:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32U6M","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32U6M:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"BAD-065","title":"Compressed coordinate outside Earth","profile":"strict-validation","source":"APRS101 pp. 23-24,38","packet":"N0CALL>APRS:!/!!!!{{{{>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"coordinate-out-of-range","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/!!!!{{{{>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-066","title":"Compressed coordinate outside Earth","profile":"strict-validation","source":"APRS101 pp. 23-24,38","packet":"N0CALL>APRS:!/{{{{!!!!>7P[","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"coordinate-out-of-range","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!/{{{{!!!!>7P["},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-067","title":"Invalid Mic-E destination AB","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>AB:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"AB","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>AB:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-068","title":"Invalid Mic-E destination S32U6","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32U6:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32U6","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32U6:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-069","title":"Invalid Mic-E destination S32U6TX","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32U6TX:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32U6TX","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32U6TX:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-070","title":"Invalid Mic-E destination S32M6T","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32M6T:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32M6T","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32M6T:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-071","title":"Invalid Mic-E destination S32A6T","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32A6T:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32A6T","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32A6T:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-072","title":"Invalid Mic-E destination S32U6M","profile":"strict-validation","source":"APRS101 pp. 43-44","packet":"N0CALL>S32U6M:`(_fn\"Oj/","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32U6M","path":[]},"error_class":"invalid-mic-e-destination","position_usable":false},"expected":{"original_wire":"N0CALL>S32U6M:`(_fn\"Oj/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-073","title":"Truncated Mic-E information 0","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"BAD-074","title":"Truncated Mic-E information 1","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"BAD-075","title":"Truncated Mic-E information 2","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`("},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"BAD-076","title":"Truncated Mic-E information 3","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"BAD-077","title":"Truncated Mic-E information 4","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_f","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_f"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"BAD-078","title":"Truncated Mic-E information 5","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_fn","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_fn"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"BAD-079","title":"Truncated Mic-E information 6","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_fn\"","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_fn\""},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"BAD-080","title":"Truncated Mic-E information 7","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_fn\"O","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_fn\"O"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"BAD-081","title":"Truncated Mic-E information 8","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_fn\"Oj","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_fn\"Oj"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"BAD-082","title":"short-object-name-field","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"short-object-name-field","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-083","title":"long-object-name-field","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"long-object-name-field","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-084","title":"bad-object-alive-marker","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;LEADER !092345z4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"bad-object-alive-marker","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:;LEADER !092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-085","title":"missing-object-timestamp","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;LEADER *4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"missing-object-timestamp","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:;LEADER *4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-086","title":"item-name-too-short","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)AB!4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"item-name-too-short","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:)AB!4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-087","title":"item-name-too-long","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)ABCDEFGHIJ!4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"item-name-too-long","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:)ABCDEFGHIJ!4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-088","title":"missing-item-terminator","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)ABC4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"missing-item-terminator","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:)ABC4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-074","title":"Truncated Mic-E information 1","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-075","title":"Truncated Mic-E information 2","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`("},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-076","title":"Truncated Mic-E information 3","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-077","title":"Truncated Mic-E information 4","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_f","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_f"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-078","title":"Truncated Mic-E information 5","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_fn","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_fn"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-079","title":"Truncated Mic-E information 6","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_fn\"","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_fn\""},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-080","title":"Truncated Mic-E information 7","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_fn\"O","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_fn\"O"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-081","title":"Truncated Mic-E information 8","profile":"strict-validation","source":"APRS101 p. 47","packet":"N0CALL>S32UVT:`(_fn\"Oj","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"error_class":"truncated-mic-e-information","position_usable":false},"expected":{"original_wire":"N0CALL>S32UVT:`(_fn\"Oj"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-082","title":"short-object-name-field","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"short-object-name-field","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-083","title":"long-object-name-field","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"long-object-name-field","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-084","title":"bad-object-alive-marker","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;LEADER !092345z4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"bad-object-alive-marker","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:;LEADER !092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-085","title":"missing-object-timestamp","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;LEADER *4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"missing-object-timestamp","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:;LEADER *4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-086","title":"item-name-too-short","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)AB!4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"item-name-too-short","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:)AB!4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-087","title":"item-name-too-long","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)ABCDEFGHIJ!4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"item-name-too-long","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:)ABCDEFGHIJ!4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-088","title":"missing-item-terminator","profile":"strict-validation","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)ABC4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"missing-item-terminator","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:)ABC4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-089","title":"message-text-too-long","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"message-text-too-long","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-090","title":"short-addressee-field","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Hello","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"short-addressee-field","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :Hello"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-091","title":"long-addressee-field","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Hello","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"long-addressee-field","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :Hello"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -95,17 +95,17 @@ {"id":"BAD-095","title":"message-id-punctuation","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Hello{A!","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"message-id-punctuation","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :Hello{A!"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-096","title":"reserved-message-byte","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Has | pipe","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"reserved-message-byte","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :Has | pipe"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-097","title":"reserved-message-byte","profile":"strict-validation","source":"APRS101 p. 71","packet":"N0CALL>APRS::W1AW :Has ~ tilde","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"reserved-message-byte","message_valid":false},"note":"A permissive receiver may preserve the text with a warning; this is a transmitter-conformance failure, not a requirement to discard the entire envelope.","expected":{"original_wire":"N0CALL>APRS::W1AW :Has ~ tilde"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"BAD-098","title":"telemetry-sequence-width","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#1000,001,002,003,004,005,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-sequence-width","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#1000,001,002,003,004,005,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-099","title":"telemetry-analog-range","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,256,000,000,000,000,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-analog-range","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,256,000,000,000,000,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-100","title":"telemetry-negative-analog","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,-01,000,000,000,000,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-negative-analog","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,-01,000,000,000,000,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-101","title":"telemetry-decimal-analog","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,1.5,000,000,000,000,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-decimal-analog","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,1.5,000,000,000,000,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-102","title":"telemetry-missing-channel","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,001,002,003,004,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-missing-channel","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,001,002,003,004,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-103","title":"telemetry-short-bits","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,001,002,003,004,005,0000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-short-bits","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,001,002,003,004,005,0000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-104","title":"telemetry-invalid-bit","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,001,002,003,004,005,00000002","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-invalid-bit","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,001,002,003,004,005,00000002"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-105","title":"weather-missing-temperature","profile":"strict-validation","source":"APRS101 pp. 22,64","packet":"N0CALL>APRS:_10090556c220s004g005","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"weather-missing-temperature","weather_valid":false},"expected":{"original_wire":"N0CALL>APRS:_10090556c220s004g005"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-106","title":"weather-month-out-of-range","profile":"strict-validation","source":"APRS101 pp. 22,64","packet":"N0CALL>APRS:_13090556c220s004g005t077","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"weather-month-out-of-range","weather_valid":false},"expected":{"original_wire":"N0CALL>APRS:_13090556c220s004g005t077"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-107","title":"weather-direction-out-of-range","profile":"strict-validation","source":"APRS101 pp. 22,64","packet":"N0CALL>APRS:_10090556c361s004g005t077","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"weather-direction-out-of-range","weather_valid":false},"expected":{"original_wire":"N0CALL>APRS:_10090556c361s004g005t077"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"BAD-108","title":"weather-pressure-width","profile":"strict-validation","source":"APRS101 pp. 22,64","packet":"N0CALL>APRS:_10090556c220s004g005t077b1234","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"weather-pressure-width","weather_valid":false},"expected":{"original_wire":"N0CALL>APRS:_10090556c220s004g005t077b1234"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"BAD-098","title":"telemetry-sequence-width","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#1000,001,002,003,004,005,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-sequence-width","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#1000,001,002,003,004,005,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-099","title":"telemetry-analog-range","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,256,000,000,000,000,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-analog-range","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,256,000,000,000,000,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-100","title":"telemetry-negative-analog","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,-01,000,000,000,000,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-negative-analog","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,-01,000,000,000,000,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-101","title":"telemetry-decimal-analog","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,1.5,000,000,000,000,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-decimal-analog","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,1.5,000,000,000,000,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-102","title":"telemetry-missing-channel","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,001,002,003,004,00000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-missing-channel","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,001,002,003,004,00000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-103","title":"telemetry-short-bits","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,001,002,003,004,005,0000000","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-short-bits","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,001,002,003,004,005,0000000"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-104","title":"telemetry-invalid-bit","profile":"strict-validation","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,001,002,003,004,005,00000002","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"telemetry-invalid-bit","telemetry_valid":false},"note":"Floating-point/short/undefined telemetry accepted by FAP is in the compatibility appendix, not the original five-channel byte format.","expected":{"original_wire":"N0CALL>APRS:T#005,001,002,003,004,005,00000002"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-105","title":"weather-missing-temperature","profile":"strict-validation","source":"APRS101 pp. 22,64","packet":"N0CALL>APRS:_10090556c220s004g005","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"weather-missing-temperature","weather_valid":false},"expected":{"original_wire":"N0CALL>APRS:_10090556c220s004g005"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-106","title":"weather-month-out-of-range","profile":"strict-validation","source":"APRS101 pp. 22,64","packet":"N0CALL>APRS:_13090556c220s004g005t077","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"weather-month-out-of-range","weather_valid":false},"expected":{"original_wire":"N0CALL>APRS:_13090556c220s004g005t077"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-107","title":"weather-direction-out-of-range","profile":"strict-validation","source":"APRS101 pp. 22,64","packet":"N0CALL>APRS:_10090556c361s004g005t077","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"weather-direction-out-of-range","weather_valid":false},"expected":{"original_wire":"N0CALL>APRS:_10090556c361s004g005t077"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-108","title":"weather-pressure-width","profile":"strict-validation","source":"APRS101 pp. 22,64","packet":"N0CALL>APRS:_10090556c220s004g005t077b1234","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"weather-pressure-width","weather_valid":false},"expected":{"original_wire":"N0CALL>APRS:_10090556c220s004g005t077b1234"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-109","title":"Malformed third-party '}'","profile":"strict-validation","source":"APRS101 pp. 83-86","packet":"N0CALL>APRS:}","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"malformed-third-party","inner_packet_valid":false},"expected":{"original_wire":"N0CALL>APRS:}"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-110","title":"Malformed third-party '}N0CALL>APRS'","profile":"strict-validation","source":"APRS101 pp. 83-86","packet":"N0CALL>APRS:}N0CALL>APRS","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"malformed-third-party","inner_packet_valid":false},"expected":{"original_wire":"N0CALL>APRS:}N0CALL>APRS"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-111","title":"Malformed third-party '}N0CALL>APRS:'","profile":"strict-validation","source":"APRS101 pp. 83-86","packet":"N0CALL>APRS:}N0CALL>APRS:","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"malformed-third-party","inner_packet_valid":false},"expected":{"original_wire":"N0CALL>APRS:}N0CALL>APRS:"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -115,9 +115,9 @@ {"id":"BAD-115","title":"Declared text limit exceeded 64","profile":"strict-validation","source":"APRS101 pp. 32,80","packet":"N0CALL>APRS:>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"declared-text-limit-exceeded"},"expected":{"original_wire":"N0CALL>APRS:>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-116","title":"Declared text limit exceeded 64","profile":"strict-validation","source":"APRS101 pp. 32,80","packet":"N0CALL>APRS:>092345zxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"declared-text-limit-exceeded"},"expected":{"original_wire":"N0CALL>APRS:>092345zxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-117","title":"Declared text limit exceeded 64","profile":"strict-validation","source":"APRS101 pp. 32,80","packet":"N0CALL>APRS:!4903.50N/07201.75W-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"declared-text-limit-exceeded"},"expected":{"original_wire":"N0CALL>APRS:!4903.50N/07201.75W-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"BAD-118","title":"Reserved compression high bit 64","profile":"strict-validation","source":"APRS101 p.39","packet":"N0CALL>APRS:!/5L!!<*e7>7Pa","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"reserved-compression-type-bit","compression_type_value":64},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7Pa"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-119","title":"Reserved compression high bit 89","profile":"strict-validation","source":"APRS101 p.39","packet":"N0CALL>APRS:!/5L!!<*e7>7Pz","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"reserved-compression-type-bit","compression_type_value":89},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7Pz"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"BAD-120","title":"Reserved compression high bit 90","profile":"strict-validation","source":"APRS101 p.39","packet":"N0CALL>APRS:!/5L!!<*e7>7P{","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"reserved-compression-type-bit","compression_type_value":90},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7P{"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"BAD-118","title":"Reserved compression high bit 64","profile":"strict-validation","source":"APRS101 p.39","packet":"N0CALL>APRS:!/5L!!<*e7>7Pa","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"reserved-compression-type-bit","compression_type_value":64},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7Pa"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-119","title":"Reserved compression high bit 89","profile":"strict-validation","source":"APRS101 p.39","packet":"N0CALL>APRS:!/5L!!<*e7>7Pz","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"reserved-compression-type-bit","compression_type_value":89},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7Pz"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"BAD-120","title":"Reserved compression high bit 90","profile":"strict-validation","source":"APRS101 p.39","packet":"N0CALL>APRS:!/5L!!<*e7>7P{","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"reserved-compression-type-bit","compression_type_value":90},"expected":{"original_wire":"N0CALL>APRS:!/5L!!<*e7>7P{"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-121","title":"Invalid uncompressed symbol table ,","profile":"strict-validation","source":"APRS101 p.91","packet":"N0CALL>APRS:!4903.50N,07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-symbol-table","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50N,07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-122","title":"Invalid uncompressed symbol table a","profile":"strict-validation","source":"APRS101 p.91","packet":"N0CALL>APRS:!4903.50Na07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-symbol-table","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50Na07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"BAD-123","title":"Invalid uncompressed symbol table z","profile":"strict-validation","source":"APRS101 p.91","packet":"N0CALL>APRS:!4903.50Nz07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-symbol-table","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:!4903.50Nz07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} diff --git a/packages/aprs/tests/vectors/cmp.jsonl b/packages/aprs/tests/vectors/cmp.jsonl index 20b1d39..0c1abfd 100644 --- a/packages/aprs/tests/vectors/cmp.jsonl +++ b/packages/aprs/tests/vectors/cmp.jsonl @@ -1,122 +1,122 @@ -{"id":"CMP-001","title":"Compressed DTI !","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:!/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-002","title":"Compressed DTI =","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:=/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-003","title":"Compressed DTI /","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:/092345z/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-004","title":"Compressed DTI @","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:@234517h/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"timestamp":{"raw":"234517h","format":"HMS","zone":"UTC","hour":23,"minute":45,"second":17},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"hms_utc","hour":23,"minute":45,"second":17},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-005","title":"Compressed coordinate 90, -180","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/!!!!!!!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":90.0,"longitude_deg":-180.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":90.0,"longitude_deg":-180.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-006","title":"Compressed coordinate -90, 180","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/{{!!{{!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":-90.0,"longitude_deg":180.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-90.0,"longitude_deg":180.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-007","title":"Compressed coordinate 0, 0","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/NN!!NN!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":0.0,"longitude_deg":0.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":0.0,"longitude_deg":0.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-008","title":"Compressed coordinate 49.5, -72.75","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/5L!!<*e8> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.749998687409},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.749998687409,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-009","title":"Compressed coordinate -49.5, 72.75","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/gP!!`q7e> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":-49.5,"longitude_deg":72.749998687409},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.5,"longitude_deg":72.749998687409,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-010","title":"Compressed coordinate 89.99999, 179.99999","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/!!!%{z{z> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":89.999989499273,"longitude_deg":179.999989499273},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":89.999989499273,"longitude_deg":179.999989499273,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-011","title":"Compressed table / overlay \\","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=\\5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"\\","table":"alternate","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"\\","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-012","title":"Compressed table / overlay a","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=a5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"a","table":"alternate","code":">","overlay":"0"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"a","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-013","title":"Compressed table / overlay b","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=b5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"b","table":"alternate","code":">","overlay":"1"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"b","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-014","title":"Compressed table / overlay c","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=c5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"c","table":"alternate","code":">","overlay":"2"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"c","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-015","title":"Compressed table / overlay d","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=d5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"d","table":"alternate","code":">","overlay":"3"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"d","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-016","title":"Compressed table / overlay e","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=e5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"e","table":"alternate","code":">","overlay":"4"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"e","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-017","title":"Compressed table / overlay f","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=f5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"f","table":"alternate","code":">","overlay":"5"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"f","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-018","title":"Compressed table / overlay g","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=g5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"g","table":"alternate","code":">","overlay":"6"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"g","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-019","title":"Compressed table / overlay h","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=h5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"h","table":"alternate","code":">","overlay":"7"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"h","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-020","title":"Compressed table / overlay i","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=i5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"i","table":"alternate","code":">","overlay":"8"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"i","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-021","title":"Compressed table / overlay j","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=j5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"j","table":"alternate","code":">","overlay":"9"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"j","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-022","title":"Compressed table / overlay A","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=A5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"A","table":"alternate","code":">","overlay":"A"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"A","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-023","title":"Compressed table / overlay B","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=B5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"B","table":"alternate","code":">","overlay":"B"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"B","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-024","title":"Compressed table / overlay C","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=C5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"C","table":"alternate","code":">","overlay":"C"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"C","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-025","title":"Compressed table / overlay D","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=D5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"D","table":"alternate","code":">","overlay":"D"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"D","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-026","title":"Compressed table / overlay E","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=E5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"E","table":"alternate","code":">","overlay":"E"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"E","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-027","title":"Compressed table / overlay F","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=F5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"F","table":"alternate","code":">","overlay":"F"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"F","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-028","title":"Compressed table / overlay G","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=G5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"G","table":"alternate","code":">","overlay":"G"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"G","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-029","title":"Compressed table / overlay H","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=H5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"H","table":"alternate","code":">","overlay":"H"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"H","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-030","title":"Compressed table / overlay I","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=I5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"I","table":"alternate","code":">","overlay":"I"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"I","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-031","title":"Compressed table / overlay J","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=J5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"J","table":"alternate","code":">","overlay":"J"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"J","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-032","title":"Compressed table / overlay K","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=K5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"K","table":"alternate","code":">","overlay":"K"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"K","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-033","title":"Compressed table / overlay L","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=L5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"L","table":"alternate","code":">","overlay":"L"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"L","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-034","title":"Compressed table / overlay M","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=M5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"M","table":"alternate","code":">","overlay":"M"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"M","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-035","title":"Compressed table / overlay N","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=N5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"N","table":"alternate","code":">","overlay":"N"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"N","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-036","title":"Compressed table / overlay O","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=O5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"O","table":"alternate","code":">","overlay":"O"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"O","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-037","title":"Compressed table / overlay P","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=P5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"P","table":"alternate","code":">","overlay":"P"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"P","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-038","title":"Compressed table / overlay Q","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=Q5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"Q","table":"alternate","code":">","overlay":"Q"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"Q","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-039","title":"Compressed table / overlay R","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=R5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"R","table":"alternate","code":">","overlay":"R"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"R","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-040","title":"Compressed table / overlay S","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=S5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"S","table":"alternate","code":">","overlay":"S"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"S","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-041","title":"Compressed table / overlay T","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=T5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"T","table":"alternate","code":">","overlay":"T"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"T","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-042","title":"Compressed table / overlay U","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=U5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"U","table":"alternate","code":">","overlay":"U"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"U","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-043","title":"Compressed table / overlay V","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=V5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"V","table":"alternate","code":">","overlay":"V"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"V","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-044","title":"Compressed table / overlay W","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=W5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"W","table":"alternate","code":">","overlay":"W"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"W","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-045","title":"Compressed table / overlay X","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=X5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"X","table":"alternate","code":">","overlay":"X"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"X","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-046","title":"Compressed table / overlay Y","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=Y5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"Y","table":"alternate","code":">","overlay":"Y"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"Y","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-047","title":"Compressed table / overlay Z","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=Z5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"Z","table":"alternate","code":">","overlay":"Z"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"Z","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-048","title":"cs numeric values 0,0","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>!!!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"!!!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":0,"speed_knots":0.0,"speed_kmh":0.0},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"!!!"},"extensions":{"motion":{"course_deg":0,"speed_knots":0.0}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-049","title":"cs numeric values 89,0","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>z!!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"z!!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":356,"speed_knots":0.0,"speed_kmh":0.0},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"z!!"},"extensions":{"motion":{"course_deg":356,"speed_knots":0.0}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-050","title":"cs numeric values 22,47","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"7P!"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-051","title":"cs numeric values 0,90","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>!{!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"!{!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":0,"speed_knots":1017.915089278274,"speed_kmh":1885.178745343363},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"!{!"},"extensions":{"motion":{"course_deg":0,"speed_knots":1017.915089278274}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-052","title":"cs numeric values 89,90","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>z{!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"z{!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":356,"speed_knots":1017.915089278274,"speed_kmh":1885.178745343363},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"z{!"},"extensions":{"motion":{"course_deg":356,"speed_knots":1017.915089278274}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-053","title":"cs numeric values 90,0","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>{!!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"{!!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"radio_range":{"miles":2.0,"km":3.218688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"{!!"},"extensions":{"range":{"miles":2.0}}}},"unmapped":["$.compression.type_value","$.radio_range.km","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-054","title":"cs numeric values 90,30","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>{?!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"{?!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"radio_range":{"miles":20.125313778147,"km":32.388552976978},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"{?!"},"extensions":{"range":{"miles":20.125313778147}}}},"unmapped":["$.compression.type_value","$.radio_range.km","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-055","title":"cs numeric values 90,90","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>{{!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"{{!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"radio_range":{"miles":2037.830178556547,"km":3279.569770878908},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"{{!"},"extensions":{"range":{"miles":2037.830178556547}}}},"unmapped":["$.compression.type_value","$.radio_range.km","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-056","title":"GGA altitude '!!'","profile":"core-1.1","source":"APRS101 p. 40","packet":"N0CALL>APRS:=/5L!!<*e7O!!S","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":"O","overlay":null},"compression":{"csT_raw":"!!S","type_value":50,"fix":"current","nmea_source":"GGA","origin_code":2},"altitude":{"feet":1.0,"meters":0.3048,"encoding":"compressed"},"comment":""},"note":"GGA mode takes precedence over the course/range interpretation of c, including c={.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":"O"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":2,"raw":"!!S"},"extensions":{"altitude":{"measurement":{"value":1.0,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-057","title":"GGA altitude 'S]'","profile":"core-1.1","source":"APRS101 p. 40","packet":"N0CALL>APRS:=/5L!!<*e7OS]S","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":"O","overlay":null},"compression":{"csT_raw":"S]S","type_value":50,"fix":"current","nmea_source":"GGA","origin_code":2},"altitude":{"feet":10004.52005070133,"meters":3049.377711453766,"encoding":"compressed"},"comment":""},"note":"GGA mode takes precedence over the course/range interpretation of c, including c={.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":"O"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":2,"raw":"S]S"},"extensions":{"altitude":{"measurement":{"value":10004.52005070133,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-058","title":"GGA altitude '{{'","profile":"core-1.1","source":"APRS101 p. 40","packet":"N0CALL>APRS:=/5L!!<*e7O{{S","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":"O","overlay":null},"compression":{"csT_raw":"{{S","type_value":50,"fix":"current","nmea_source":"GGA","origin_code":2},"altitude":{"feet":15301509.581191743,"meters":4663900.120347244,"encoding":"compressed"},"comment":""},"note":"GGA mode takes precedence over the course/range interpretation of c, including c={.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":"O"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":2,"raw":"{{S"},"extensions":{"altitude":{"measurement":{"value":15301509.581191743,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-059","title":"Compression type bitfield 000000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"7P!"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-060","title":"Compression type bitfield 000001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P\"","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P\"","type_value":1,"fix":"old","nmea_source":"other","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":1,"raw":"7P\""},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-061","title":"Compression type bitfield 000010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P#","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P#","type_value":2,"fix":"old","nmea_source":"other","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":2,"raw":"7P#"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-062","title":"Compression type bitfield 000011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P$","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P$","type_value":3,"fix":"old","nmea_source":"other","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":3,"raw":"7P$"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-063","title":"Compression type bitfield 000100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P%","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P%","type_value":4,"fix":"old","nmea_source":"other","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":4,"raw":"7P%"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-064","title":"Compression type bitfield 000101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P&","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P&","type_value":5,"fix":"old","nmea_source":"other","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":5,"raw":"7P&"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-065","title":"Compression type bitfield 000110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P'","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P'","type_value":6,"fix":"old","nmea_source":"other","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":6,"raw":"7P'"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-066","title":"Compression type bitfield 000111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P(","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P(","type_value":7,"fix":"old","nmea_source":"other","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":7,"raw":"7P("},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-067","title":"Compression type bitfield 001000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P)","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P)","type_value":8,"fix":"old","nmea_source":"GLL","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":0,"raw":"7P)"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-068","title":"Compression type bitfield 001001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P*","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P*","type_value":9,"fix":"old","nmea_source":"GLL","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":1,"raw":"7P*"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-069","title":"Compression type bitfield 001010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P+","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P+","type_value":10,"fix":"old","nmea_source":"GLL","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":2,"raw":"7P+"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-070","title":"Compression type bitfield 001011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P,","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P,","type_value":11,"fix":"old","nmea_source":"GLL","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":3,"raw":"7P,"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-071","title":"Compression type bitfield 001100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P-","type_value":12,"fix":"old","nmea_source":"GLL","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":4,"raw":"7P-"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-072","title":"Compression type bitfield 001101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P.","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P.","type_value":13,"fix":"old","nmea_source":"GLL","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":5,"raw":"7P."},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-073","title":"Compression type bitfield 001110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P/","type_value":14,"fix":"old","nmea_source":"GLL","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":6,"raw":"7P/"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-074","title":"Compression type bitfield 001111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P0","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P0","type_value":15,"fix":"old","nmea_source":"GLL","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":7,"raw":"7P0"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-075","title":"Compression type bitfield 010000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P1","type_value":16,"fix":"old","nmea_source":"GGA","origin_code":0},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":0,"raw":"7P1"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-076","title":"Compression type bitfield 010001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P2","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P2","type_value":17,"fix":"old","nmea_source":"GGA","origin_code":1},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":1,"raw":"7P2"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-077","title":"Compression type bitfield 010010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P3","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P3","type_value":18,"fix":"old","nmea_source":"GGA","origin_code":2},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":2,"raw":"7P3"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-078","title":"Compression type bitfield 010011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P4","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P4","type_value":19,"fix":"old","nmea_source":"GGA","origin_code":3},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":3,"raw":"7P4"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-079","title":"Compression type bitfield 010100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P5","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P5","type_value":20,"fix":"old","nmea_source":"GGA","origin_code":4},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":4,"raw":"7P5"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-080","title":"Compression type bitfield 010101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P6","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P6","type_value":21,"fix":"old","nmea_source":"GGA","origin_code":5},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":5,"raw":"7P6"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-081","title":"Compression type bitfield 010110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P7","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P7","type_value":22,"fix":"old","nmea_source":"GGA","origin_code":6},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":6,"raw":"7P7"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-082","title":"Compression type bitfield 010111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P8","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P8","type_value":23,"fix":"old","nmea_source":"GGA","origin_code":7},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":7,"raw":"7P8"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-083","title":"Compression type bitfield 011000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P9","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P9","type_value":24,"fix":"old","nmea_source":"RMC","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":0,"raw":"7P9"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-084","title":"Compression type bitfield 011001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P:","type_value":25,"fix":"old","nmea_source":"RMC","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":1,"raw":"7P:"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-085","title":"Compression type bitfield 011010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P;","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P;","type_value":26,"fix":"old","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":2,"raw":"7P;"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-086","title":"Compression type bitfield 011011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P<","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P<","type_value":27,"fix":"old","nmea_source":"RMC","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":3,"raw":"7P<"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-087","title":"Compression type bitfield 011100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P=","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P=","type_value":28,"fix":"old","nmea_source":"RMC","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":4,"raw":"7P="},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-088","title":"Compression type bitfield 011101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P>","type_value":29,"fix":"old","nmea_source":"RMC","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":5,"raw":"7P>"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-089","title":"Compression type bitfield 011110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P?","type_value":30,"fix":"old","nmea_source":"RMC","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":6,"raw":"7P?"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-090","title":"Compression type bitfield 011111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P@","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P@","type_value":31,"fix":"old","nmea_source":"RMC","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":7,"raw":"7P@"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-091","title":"Compression type bitfield 100000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PA","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PA","type_value":32,"fix":"current","nmea_source":"other","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":0,"raw":"7PA"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-092","title":"Compression type bitfield 100001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PB","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PB","type_value":33,"fix":"current","nmea_source":"other","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":1,"raw":"7PB"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-093","title":"Compression type bitfield 100010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PC","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PC","type_value":34,"fix":"current","nmea_source":"other","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":2,"raw":"7PC"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-094","title":"Compression type bitfield 100011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PD","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PD","type_value":35,"fix":"current","nmea_source":"other","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":3,"raw":"7PD"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-095","title":"Compression type bitfield 100100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PE","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PE","type_value":36,"fix":"current","nmea_source":"other","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":4,"raw":"7PE"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-096","title":"Compression type bitfield 100101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PF","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PF","type_value":37,"fix":"current","nmea_source":"other","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":5,"raw":"7PF"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-097","title":"Compression type bitfield 100110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PG","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PG","type_value":38,"fix":"current","nmea_source":"other","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":6,"raw":"7PG"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-098","title":"Compression type bitfield 100111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PH","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PH","type_value":39,"fix":"current","nmea_source":"other","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":7,"raw":"7PH"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-099","title":"Compression type bitfield 101000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PI","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PI","type_value":40,"fix":"current","nmea_source":"GLL","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":0,"raw":"7PI"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-100","title":"Compression type bitfield 101001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PJ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PJ","type_value":41,"fix":"current","nmea_source":"GLL","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":1,"raw":"7PJ"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-101","title":"Compression type bitfield 101010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PK","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PK","type_value":42,"fix":"current","nmea_source":"GLL","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":2,"raw":"7PK"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-102","title":"Compression type bitfield 101011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PL","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PL","type_value":43,"fix":"current","nmea_source":"GLL","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":3,"raw":"7PL"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-103","title":"Compression type bitfield 101100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PM","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PM","type_value":44,"fix":"current","nmea_source":"GLL","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":4,"raw":"7PM"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-104","title":"Compression type bitfield 101101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PN","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PN","type_value":45,"fix":"current","nmea_source":"GLL","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":5,"raw":"7PN"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-105","title":"Compression type bitfield 101110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PO","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PO","type_value":46,"fix":"current","nmea_source":"GLL","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":6,"raw":"7PO"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-106","title":"Compression type bitfield 101111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PP","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PP","type_value":47,"fix":"current","nmea_source":"GLL","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":7,"raw":"7PP"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-107","title":"Compression type bitfield 110000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PQ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PQ","type_value":48,"fix":"current","nmea_source":"GGA","origin_code":0},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":0,"raw":"7PQ"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-108","title":"Compression type bitfield 110001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PR","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PR","type_value":49,"fix":"current","nmea_source":"GGA","origin_code":1},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":1,"raw":"7PR"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-109","title":"Compression type bitfield 110010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PS","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PS","type_value":50,"fix":"current","nmea_source":"GGA","origin_code":2},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":2,"raw":"7PS"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-110","title":"Compression type bitfield 110011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PT","type_value":51,"fix":"current","nmea_source":"GGA","origin_code":3},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":3,"raw":"7PT"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-111","title":"Compression type bitfield 110100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PU","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PU","type_value":52,"fix":"current","nmea_source":"GGA","origin_code":4},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":4,"raw":"7PU"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-112","title":"Compression type bitfield 110101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PV","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PV","type_value":53,"fix":"current","nmea_source":"GGA","origin_code":5},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":5,"raw":"7PV"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-113","title":"Compression type bitfield 110110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PW","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PW","type_value":54,"fix":"current","nmea_source":"GGA","origin_code":6},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":6,"raw":"7PW"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-114","title":"Compression type bitfield 110111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PX","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PX","type_value":55,"fix":"current","nmea_source":"GGA","origin_code":7},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":7,"raw":"7PX"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-115","title":"Compression type bitfield 111000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PY","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PY","type_value":56,"fix":"current","nmea_source":"RMC","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":0,"raw":"7PY"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-116","title":"Compression type bitfield 111001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PZ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PZ","type_value":57,"fix":"current","nmea_source":"RMC","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":1,"raw":"7PZ"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-117","title":"Compression type bitfield 111010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-118","title":"Compression type bitfield 111011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P\\","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P\\","type_value":59,"fix":"current","nmea_source":"RMC","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":3,"raw":"7P\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-119","title":"Compression type bitfield 111100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P]","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P]","type_value":60,"fix":"current","nmea_source":"RMC","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":4,"raw":"7P]"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-120","title":"Compression type bitfield 111101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P^","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P^","type_value":61,"fix":"current","nmea_source":"RMC","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":5,"raw":"7P^"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-121","title":"Compression type bitfield 111110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P_","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P_","type_value":62,"fix":"current","nmea_source":"RMC","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":6,"raw":"7P_"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"CMP-122","title":"Compression type bitfield 111111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P`","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P`","type_value":63,"fix":"current","nmea_source":"RMC","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":7,"raw":"7P`"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"CMP-001","title":"Compressed DTI !","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:!/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-002","title":"Compressed DTI =","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:=/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-003","title":"Compressed DTI /","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:/092345z/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"CMP-004","title":"Compressed DTI @","profile":"core-1.1","source":"APRS101 pp. 36-41","packet":"N0CALL>APRS:@234517h/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"timestamp":{"raw":"234517h","format":"HMS","zone":"UTC","hour":23,"minute":45,"second":17},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"hms_utc","hour":23,"minute":45,"second":17},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"CMP-005","title":"Compressed coordinate 90, -180","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/!!!!!!!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":90.0,"longitude_deg":-180.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":90.0,"longitude_deg":-180.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-006","title":"Compressed coordinate -90, 180","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/{{!!{{!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":-90.0,"longitude_deg":180.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-90.0,"longitude_deg":180.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-007","title":"Compressed coordinate 0, 0","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/NN!!NN!!> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":0.0,"longitude_deg":0.0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":0.0,"longitude_deg":0.0,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-008","title":"Compressed coordinate 49.5, -72.75","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/5L!!<*e8> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.749998687409},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.749998687409,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-009","title":"Compressed coordinate -49.5, 72.75","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/gP!!`q7e> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":-49.5,"longitude_deg":72.749998687409},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.5,"longitude_deg":72.749998687409,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-010","title":"Compressed coordinate 89.99999, 179.99999","profile":"core-1.1","source":"APRS101 pp. 38-41","packet":"N0CALL>APRS:!/!!!%{z{z> sT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":89.999989499273,"longitude_deg":179.999989499273},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":" sT","ignored":true},"comment":""},"note":"Expect the decoded quantized coordinate shown, not the pre-encoding input.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":89.999989499273,"longitude_deg":179.999989499273,"symbol":{"table_id":"/","code":">"},"compression":{"raw":" sT","ignored":true}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-011","title":"Compressed table / overlay \\","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=\\5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"\\","table":"alternate","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"\\","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-012","title":"Compressed table / overlay a","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=a5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"a","table":"alternate","code":">","overlay":"0"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"a","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-013","title":"Compressed table / overlay b","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=b5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"b","table":"alternate","code":">","overlay":"1"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"b","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-014","title":"Compressed table / overlay c","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=c5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"c","table":"alternate","code":">","overlay":"2"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"c","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-015","title":"Compressed table / overlay d","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=d5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"d","table":"alternate","code":">","overlay":"3"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"d","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-016","title":"Compressed table / overlay e","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=e5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"e","table":"alternate","code":">","overlay":"4"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"e","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-017","title":"Compressed table / overlay f","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=f5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"f","table":"alternate","code":">","overlay":"5"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"f","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-018","title":"Compressed table / overlay g","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=g5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"g","table":"alternate","code":">","overlay":"6"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"g","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-019","title":"Compressed table / overlay h","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=h5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"h","table":"alternate","code":">","overlay":"7"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"h","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-020","title":"Compressed table / overlay i","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=i5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"i","table":"alternate","code":">","overlay":"8"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"i","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-021","title":"Compressed table / overlay j","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=j5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"j","table":"alternate","code":">","overlay":"9"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"j","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-022","title":"Compressed table / overlay A","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=A5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"A","table":"alternate","code":">","overlay":"A"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"A","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-023","title":"Compressed table / overlay B","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=B5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"B","table":"alternate","code":">","overlay":"B"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"B","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-024","title":"Compressed table / overlay C","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=C5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"C","table":"alternate","code":">","overlay":"C"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"C","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-025","title":"Compressed table / overlay D","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=D5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"D","table":"alternate","code":">","overlay":"D"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"D","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-026","title":"Compressed table / overlay E","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=E5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"E","table":"alternate","code":">","overlay":"E"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"E","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-027","title":"Compressed table / overlay F","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=F5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"F","table":"alternate","code":">","overlay":"F"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"F","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-028","title":"Compressed table / overlay G","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=G5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"G","table":"alternate","code":">","overlay":"G"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"G","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-029","title":"Compressed table / overlay H","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=H5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"H","table":"alternate","code":">","overlay":"H"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"H","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-030","title":"Compressed table / overlay I","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=I5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"I","table":"alternate","code":">","overlay":"I"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"I","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-031","title":"Compressed table / overlay J","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=J5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"J","table":"alternate","code":">","overlay":"J"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"J","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-032","title":"Compressed table / overlay K","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=K5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"K","table":"alternate","code":">","overlay":"K"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"K","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-033","title":"Compressed table / overlay L","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=L5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"L","table":"alternate","code":">","overlay":"L"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"L","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-034","title":"Compressed table / overlay M","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=M5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"M","table":"alternate","code":">","overlay":"M"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"M","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-035","title":"Compressed table / overlay N","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=N5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"N","table":"alternate","code":">","overlay":"N"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"N","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-036","title":"Compressed table / overlay O","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=O5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"O","table":"alternate","code":">","overlay":"O"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"O","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-037","title":"Compressed table / overlay P","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=P5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"P","table":"alternate","code":">","overlay":"P"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"P","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-038","title":"Compressed table / overlay Q","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=Q5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"Q","table":"alternate","code":">","overlay":"Q"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"Q","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-039","title":"Compressed table / overlay R","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=R5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"R","table":"alternate","code":">","overlay":"R"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"R","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-040","title":"Compressed table / overlay S","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=S5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"S","table":"alternate","code":">","overlay":"S"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"S","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-041","title":"Compressed table / overlay T","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=T5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"T","table":"alternate","code":">","overlay":"T"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"T","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-042","title":"Compressed table / overlay U","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=U5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"U","table":"alternate","code":">","overlay":"U"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"U","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-043","title":"Compressed table / overlay V","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=V5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"V","table":"alternate","code":">","overlay":"V"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"V","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-044","title":"Compressed table / overlay W","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=W5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"W","table":"alternate","code":">","overlay":"W"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"W","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-045","title":"Compressed table / overlay X","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=X5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"X","table":"alternate","code":">","overlay":"X"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"X","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-046","title":"Compressed table / overlay Y","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=Y5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"Y","table":"alternate","code":">","overlay":"Y"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"Y","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-047","title":"Compressed table / overlay Z","profile":"core-1.1","source":"APRS101 pp. 37, 91-92","packet":"N0CALL>APRS:=Z5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"Z","table":"alternate","code":">","overlay":"Z"},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"Z","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-048","title":"cs numeric values 0,0","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>!!!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"!!!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":0,"speed_knots":0.0,"speed_kmh":0.0},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"!!!"},"extensions":{"motion":{"course_deg":0,"speed_knots":0.0}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-049","title":"cs numeric values 89,0","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>z!!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"z!!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":356,"speed_knots":0.0,"speed_kmh":0.0},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"z!!"},"extensions":{"motion":{"course_deg":356,"speed_knots":0.0}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-050","title":"cs numeric values 22,47","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"7P!"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-051","title":"cs numeric values 0,90","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>!{!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"!{!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":0,"speed_knots":1017.915089278274,"speed_kmh":1885.178745343363},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"!{!"},"extensions":{"motion":{"course_deg":0,"speed_knots":1017.915089278274}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-052","title":"cs numeric values 89,90","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>z{!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"z{!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":356,"speed_knots":1017.915089278274,"speed_kmh":1885.178745343363},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"z{!"},"extensions":{"motion":{"course_deg":356,"speed_knots":1017.915089278274}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-053","title":"cs numeric values 90,0","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>{!!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"{!!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"radio_range":{"miles":2.0,"km":3.218688},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"{!!"},"extensions":{"range":{"miles":2.0}}}},"unmapped":["$.compression.type_value","$.radio_range.km","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-054","title":"cs numeric values 90,30","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>{?!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"{?!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"radio_range":{"miles":20.125313778147,"km":32.388552976978},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"{?!"},"extensions":{"range":{"miles":20.125313778147}}}},"unmapped":["$.compression.type_value","$.radio_range.km","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-055","title":"cs numeric values 90,90","profile":"core-1.1","source":"APRS101 pp. 38-40","packet":"N0CALL>APRS:!/5L!!<*e7>{{!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"{{!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"radio_range":{"miles":2037.830178556547,"km":3279.569770878908},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"{{!"},"extensions":{"range":{"miles":2037.830178556547}}}},"unmapped":["$.compression.type_value","$.radio_range.km","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-056","title":"GGA altitude '!!'","profile":"core-1.1","source":"APRS101 p. 40","packet":"N0CALL>APRS:=/5L!!<*e7O!!S","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":"O","overlay":null},"compression":{"csT_raw":"!!S","type_value":50,"fix":"current","nmea_source":"GGA","origin_code":2},"altitude":{"feet":1.0,"meters":0.3048,"encoding":"compressed"},"comment":""},"note":"GGA mode takes precedence over the course/range interpretation of c, including c={.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":"O"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":2,"raw":"!!S"},"extensions":{"altitude":{"measurement":{"value":1.0,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-057","title":"GGA altitude 'S]'","profile":"core-1.1","source":"APRS101 p. 40","packet":"N0CALL>APRS:=/5L!!<*e7OS]S","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":"O","overlay":null},"compression":{"csT_raw":"S]S","type_value":50,"fix":"current","nmea_source":"GGA","origin_code":2},"altitude":{"feet":10004.52005070133,"meters":3049.377711453766,"encoding":"compressed"},"comment":""},"note":"GGA mode takes precedence over the course/range interpretation of c, including c={.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":"O"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":2,"raw":"S]S"},"extensions":{"altitude":{"measurement":{"value":10004.52005070133,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-058","title":"GGA altitude '{{'","profile":"core-1.1","source":"APRS101 p. 40","packet":"N0CALL>APRS:=/5L!!<*e7O{{S","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":"O","overlay":null},"compression":{"csT_raw":"{{S","type_value":50,"fix":"current","nmea_source":"GGA","origin_code":2},"altitude":{"feet":15301509.581191743,"meters":4663900.120347244,"encoding":"compressed"},"comment":""},"note":"GGA mode takes precedence over the course/range interpretation of c, including c={.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":"O"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":2,"raw":"{{S"},"extensions":{"altitude":{"measurement":{"value":15301509.581191743,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-059","title":"Compression type bitfield 000000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P!","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P!","type_value":0,"fix":"old","nmea_source":"other","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":0,"raw":"7P!"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-060","title":"Compression type bitfield 000001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P\"","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P\"","type_value":1,"fix":"old","nmea_source":"other","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":1,"raw":"7P\""},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-061","title":"Compression type bitfield 000010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P#","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P#","type_value":2,"fix":"old","nmea_source":"other","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":2,"raw":"7P#"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-062","title":"Compression type bitfield 000011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P$","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P$","type_value":3,"fix":"old","nmea_source":"other","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":3,"raw":"7P$"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-063","title":"Compression type bitfield 000100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P%","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P%","type_value":4,"fix":"old","nmea_source":"other","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":4,"raw":"7P%"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-064","title":"Compression type bitfield 000101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P&","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P&","type_value":5,"fix":"old","nmea_source":"other","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":5,"raw":"7P&"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-065","title":"Compression type bitfield 000110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P'","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P'","type_value":6,"fix":"old","nmea_source":"other","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":6,"raw":"7P'"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-066","title":"Compression type bitfield 000111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P(","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P(","type_value":7,"fix":"old","nmea_source":"other","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"other","origin_code":7,"raw":"7P("},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-067","title":"Compression type bitfield 001000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P)","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P)","type_value":8,"fix":"old","nmea_source":"GLL","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":0,"raw":"7P)"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-068","title":"Compression type bitfield 001001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P*","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P*","type_value":9,"fix":"old","nmea_source":"GLL","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":1,"raw":"7P*"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-069","title":"Compression type bitfield 001010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P+","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P+","type_value":10,"fix":"old","nmea_source":"GLL","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":2,"raw":"7P+"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-070","title":"Compression type bitfield 001011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P,","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P,","type_value":11,"fix":"old","nmea_source":"GLL","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":3,"raw":"7P,"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-071","title":"Compression type bitfield 001100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P-","type_value":12,"fix":"old","nmea_source":"GLL","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":4,"raw":"7P-"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-072","title":"Compression type bitfield 001101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P.","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P.","type_value":13,"fix":"old","nmea_source":"GLL","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":5,"raw":"7P."},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-073","title":"Compression type bitfield 001110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P/","type_value":14,"fix":"old","nmea_source":"GLL","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":6,"raw":"7P/"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-074","title":"Compression type bitfield 001111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P0","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P0","type_value":15,"fix":"old","nmea_source":"GLL","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GLL","origin_code":7,"raw":"7P0"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-075","title":"Compression type bitfield 010000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P1","type_value":16,"fix":"old","nmea_source":"GGA","origin_code":0},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":0,"raw":"7P1"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-076","title":"Compression type bitfield 010001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P2","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P2","type_value":17,"fix":"old","nmea_source":"GGA","origin_code":1},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":1,"raw":"7P2"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-077","title":"Compression type bitfield 010010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P3","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P3","type_value":18,"fix":"old","nmea_source":"GGA","origin_code":2},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":2,"raw":"7P3"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-078","title":"Compression type bitfield 010011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P4","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P4","type_value":19,"fix":"old","nmea_source":"GGA","origin_code":3},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":3,"raw":"7P4"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-079","title":"Compression type bitfield 010100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P5","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P5","type_value":20,"fix":"old","nmea_source":"GGA","origin_code":4},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":4,"raw":"7P5"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-080","title":"Compression type bitfield 010101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P6","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P6","type_value":21,"fix":"old","nmea_source":"GGA","origin_code":5},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":5,"raw":"7P6"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-081","title":"Compression type bitfield 010110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P7","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P7","type_value":22,"fix":"old","nmea_source":"GGA","origin_code":6},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":6,"raw":"7P7"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-082","title":"Compression type bitfield 010111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P8","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P8","type_value":23,"fix":"old","nmea_source":"GGA","origin_code":7},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"GGA","origin_code":7,"raw":"7P8"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-083","title":"Compression type bitfield 011000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P9","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P9","type_value":24,"fix":"old","nmea_source":"RMC","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":0,"raw":"7P9"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-084","title":"Compression type bitfield 011001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P:","type_value":25,"fix":"old","nmea_source":"RMC","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":1,"raw":"7P:"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-085","title":"Compression type bitfield 011010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P;","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P;","type_value":26,"fix":"old","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":2,"raw":"7P;"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-086","title":"Compression type bitfield 011011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P<","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P<","type_value":27,"fix":"old","nmea_source":"RMC","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":3,"raw":"7P<"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-087","title":"Compression type bitfield 011100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P=","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P=","type_value":28,"fix":"old","nmea_source":"RMC","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":4,"raw":"7P="},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-088","title":"Compression type bitfield 011101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P>","type_value":29,"fix":"old","nmea_source":"RMC","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":5,"raw":"7P>"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-089","title":"Compression type bitfield 011110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P?","type_value":30,"fix":"old","nmea_source":"RMC","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":6,"raw":"7P?"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-090","title":"Compression type bitfield 011111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P@","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P@","type_value":31,"fix":"old","nmea_source":"RMC","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"old","nmea_source":"RMC","origin_code":7,"raw":"7P@"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-091","title":"Compression type bitfield 100000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PA","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PA","type_value":32,"fix":"current","nmea_source":"other","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":0,"raw":"7PA"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-092","title":"Compression type bitfield 100001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PB","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PB","type_value":33,"fix":"current","nmea_source":"other","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":1,"raw":"7PB"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-093","title":"Compression type bitfield 100010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PC","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PC","type_value":34,"fix":"current","nmea_source":"other","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":2,"raw":"7PC"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-094","title":"Compression type bitfield 100011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PD","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PD","type_value":35,"fix":"current","nmea_source":"other","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":3,"raw":"7PD"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-095","title":"Compression type bitfield 100100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PE","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PE","type_value":36,"fix":"current","nmea_source":"other","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":4,"raw":"7PE"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-096","title":"Compression type bitfield 100101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PF","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PF","type_value":37,"fix":"current","nmea_source":"other","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":5,"raw":"7PF"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-097","title":"Compression type bitfield 100110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PG","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PG","type_value":38,"fix":"current","nmea_source":"other","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":6,"raw":"7PG"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-098","title":"Compression type bitfield 100111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PH","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PH","type_value":39,"fix":"current","nmea_source":"other","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"other","origin_code":7,"raw":"7PH"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-099","title":"Compression type bitfield 101000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PI","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PI","type_value":40,"fix":"current","nmea_source":"GLL","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":0,"raw":"7PI"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-100","title":"Compression type bitfield 101001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PJ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PJ","type_value":41,"fix":"current","nmea_source":"GLL","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":1,"raw":"7PJ"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-101","title":"Compression type bitfield 101010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PK","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PK","type_value":42,"fix":"current","nmea_source":"GLL","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":2,"raw":"7PK"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-102","title":"Compression type bitfield 101011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PL","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PL","type_value":43,"fix":"current","nmea_source":"GLL","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":3,"raw":"7PL"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-103","title":"Compression type bitfield 101100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PM","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PM","type_value":44,"fix":"current","nmea_source":"GLL","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":4,"raw":"7PM"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-104","title":"Compression type bitfield 101101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PN","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PN","type_value":45,"fix":"current","nmea_source":"GLL","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":5,"raw":"7PN"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-105","title":"Compression type bitfield 101110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PO","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PO","type_value":46,"fix":"current","nmea_source":"GLL","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":6,"raw":"7PO"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-106","title":"Compression type bitfield 101111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PP","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PP","type_value":47,"fix":"current","nmea_source":"GLL","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GLL","origin_code":7,"raw":"7PP"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-107","title":"Compression type bitfield 110000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PQ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PQ","type_value":48,"fix":"current","nmea_source":"GGA","origin_code":0},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":0,"raw":"7PQ"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-108","title":"Compression type bitfield 110001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PR","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PR","type_value":49,"fix":"current","nmea_source":"GGA","origin_code":1},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":1,"raw":"7PR"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-109","title":"Compression type bitfield 110010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PS","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PS","type_value":50,"fix":"current","nmea_source":"GGA","origin_code":2},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":2,"raw":"7PS"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-110","title":"Compression type bitfield 110011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PT","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PT","type_value":51,"fix":"current","nmea_source":"GGA","origin_code":3},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":3,"raw":"7PT"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-111","title":"Compression type bitfield 110100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PU","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PU","type_value":52,"fix":"current","nmea_source":"GGA","origin_code":4},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":4,"raw":"7PU"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-112","title":"Compression type bitfield 110101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PV","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PV","type_value":53,"fix":"current","nmea_source":"GGA","origin_code":5},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":5,"raw":"7PV"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-113","title":"Compression type bitfield 110110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PW","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PW","type_value":54,"fix":"current","nmea_source":"GGA","origin_code":6},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":6,"raw":"7PW"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-114","title":"Compression type bitfield 110111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PX","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PX","type_value":55,"fix":"current","nmea_source":"GGA","origin_code":7},"altitude":{"feet":59.973779346725,"meters":18.280007944882,"encoding":"compressed"},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"GGA","origin_code":7,"raw":"7PX"},"extensions":{"altitude":{"measurement":{"value":59.973779346725,"unit":"feet"},"encoding":"compressed"}}}},"unmapped":["$.altitude.meters","$.compression.type_value","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-115","title":"Compression type bitfield 111000","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PY","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PY","type_value":56,"fix":"current","nmea_source":"RMC","origin_code":0},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":0,"raw":"7PY"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-116","title":"Compression type bitfield 111001","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7PZ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7PZ","type_value":57,"fix":"current","nmea_source":"RMC","origin_code":1},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":1,"raw":"7PZ"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-117","title":"Compression type bitfield 111010","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-118","title":"Compression type bitfield 111011","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P\\","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P\\","type_value":59,"fix":"current","nmea_source":"RMC","origin_code":3},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":3,"raw":"7P\\"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-119","title":"Compression type bitfield 111100","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P]","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P]","type_value":60,"fix":"current","nmea_source":"RMC","origin_code":4},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":4,"raw":"7P]"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-120","title":"Compression type bitfield 111101","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P^","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P^","type_value":61,"fix":"current","nmea_source":"RMC","origin_code":5},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":5,"raw":"7P^"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-121","title":"Compression type bitfield 111110","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P_","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P_","type_value":62,"fix":"current","nmea_source":"RMC","origin_code":6},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":6,"raw":"7P_"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"CMP-122","title":"Compression type bitfield 111111","profile":"core-1.1","source":"APRS101 pp. 39-40","packet":"N0CALL>APRS:!/5L!!<*e7>7P`","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P`","type_value":63,"fix":"current","nmea_source":"RMC","origin_code":7},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Origin codes 3 and 6 are reserved/tbd labels; preserve the code without inventing a product name.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":7,"raw":"7P`"},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} diff --git a/packages/aprs/tests/vectors/fap.jsonl b/packages/aprs/tests/vectors/fap.jsonl index a8ad7c2..8128fdc 100644 --- a/packages/aprs/tests/vectors/fap.jsonl +++ b/packages/aprs/tests/vectors/fap.jsonl @@ -1,39 +1,39 @@ -{"id":"FAP-001","title":"TestAPRSISPathIPv6AfterQConstruct","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_paths_test.go#L9","packet":"IQ3VQ>APD225,TCPIP*,qAI,IQ3VQ,THIRD,92E5A2B6,T2HUB1,200106F8020204020000000000000002,T2FINLAND:!4526.66NI01104.68E#PHG21306/- Lnx APRS Srv - sez. ARI VR EST","outcome":"accept","source_expected":{"fap_header":{"source":"IQ3VQ","destination":"APD225","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAI","WasDigied":false},{"Call":"IQ3VQ","WasDigied":false},{"Call":"THIRD","WasDigied":false},{"Call":"92E5A2B6","WasDigied":false},{"Call":"T2HUB1","WasDigied":false},{"Call":"200106F8020204020000000000000002","WasDigied":false},{"Call":"T2FINLAND","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":45.44433333333333,"Longitude":11.078,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"I","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"21306","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"- Lnx APRS Srv - sez. ARI VR EST","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"IQ3VQ","destination":"APD225","path":[{"address":"TCPIP","repeated":true},{"address":"qAI","repeated":false},{"address":"IQ3VQ","repeated":false},{"address":"THIRD","repeated":false},{"address":"92E5A2B6","repeated":false},{"address":"T2HUB1","repeated":false},{"address":"200106F8020204020000000000000002","repeated":false},{"address":"T2FINLAND","repeated":false}]},"payload":{"type":"position","comment":"- Lnx APRS Srv - sez. ARI VR EST","messaging":false,"latitude_deg":45.44433333333333,"longitude_deg":11.078,"ambiguity":0,"symbol":{"table_id":"I","code":"#"},"extensions":{"phg":{"power_w":4,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":null,"rate_per_hour":6}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"6/- Lnx APRS Srv - sez. ARI VR EST","$.payload.extensions.phg.rate_per_hour":null}}} -{"id":"FAP-002","title":"TestAPRSISPathIPv6BeforeQConstruct","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_paths_test.go#L23","packet":"IQ3VQ>APD225,200106F8020204020000000000000002,TCPIP*,qAI,IQ3VQ,THIRD,92E5A2B6,T2HUB1,200106F8020204020000000000000002,T2FINLAND:!4526.66NI01104.68E#PHG21306/- Lnx APRS Srv - sez. ARI VR EST","outcome":"reject","source_expected":{"fap_header":{"source":"IQ3VQ","destination":"APD225","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_badchars: digipeater callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"IQ3VQ>APD225,200106F8020204020000000000000002,TCPIP*,qAI,IQ3VQ,THIRD,92E5A2B6,T2HUB1,200106F8020204020000000000000002,T2FINLAND:!4526.66NI01104.68E#PHG21306/- Lnx APRS Srv - sez. ARI VR EST"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$":"rejection"}}} -{"id":"FAP-003","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-1>APRS:;LEADER *092345z4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER ","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-004","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-1>APRS:)AID #2!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-005","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-2>TQ4W2V,WIDE2-1,qAo,IGATE:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"]=","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-006","title":"TestWithAX25/valid_AX.25_packet","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB-9>APX200,OH7AA-1*,WIDE2-1:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH7LZB testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APX200","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH7LZB testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APX200","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH7LZB testing","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"/RELAY,WIDE, OH7LZB testing"}}} +{"id":"FAP-001","title":"TestAPRSISPathIPv6AfterQConstruct","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_paths_test.go#L9","packet":"IQ3VQ>APD225,TCPIP*,qAI,IQ3VQ,THIRD,92E5A2B6,T2HUB1,200106F8020204020000000000000002,T2FINLAND:!4526.66NI01104.68E#PHG21306/- Lnx APRS Srv - sez. ARI VR EST","outcome":"accept","source_expected":{"fap_header":{"source":"IQ3VQ","destination":"APD225","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAI","WasDigied":false},{"Call":"IQ3VQ","WasDigied":false},{"Call":"THIRD","WasDigied":false},{"Call":"92E5A2B6","WasDigied":false},{"Call":"T2HUB1","WasDigied":false},{"Call":"200106F8020204020000000000000002","WasDigied":false},{"Call":"T2FINLAND","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":45.44433333333333,"Longitude":11.078,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"I","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"21306","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"- Lnx APRS Srv - sez. ARI VR EST","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"IQ3VQ","destination":"APD225","path":[{"address":"TCPIP","repeated":true},{"address":"qAI","repeated":false},{"address":"IQ3VQ","repeated":false},{"address":"THIRD","repeated":false},{"address":"92E5A2B6","repeated":false},{"address":"T2HUB1","repeated":false},{"address":"200106F8020204020000000000000002","repeated":false},{"address":"T2FINLAND","repeated":false}]},"payload":{"type":"position","comment":"- Lnx APRS Srv - sez. ARI VR EST","messaging":false,"latitude_deg":45.44433333333333,"longitude_deg":11.078,"ambiguity":0,"symbol":{"table_id":"I","code":"#"},"extensions":{"phg":{"power_w":4,"height_haat_ft":20,"gain_dbi":3,"directivity_deg":null,"rate_per_hour":6}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-002","title":"TestAPRSISPathIPv6BeforeQConstruct","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_paths_test.go#L23","packet":"IQ3VQ>APD225,200106F8020204020000000000000002,TCPIP*,qAI,IQ3VQ,THIRD,92E5A2B6,T2HUB1,200106F8020204020000000000000002,T2FINLAND:!4526.66NI01104.68E#PHG21306/- Lnx APRS Srv - sez. ARI VR EST","outcome":"reject","source_expected":{"fap_header":{"source":"IQ3VQ","destination":"APD225","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_badchars: digipeater callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"IQ3VQ>APD225,200106F8020204020000000000000002,TCPIP*,qAI,IQ3VQ,THIRD,92E5A2B6,T2HUB1,200106F8020204020000000000000002,T2FINLAND:!4526.66NI01104.68E#PHG21306/- Lnx APRS Srv - sez. ARI VR EST"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-003","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-1>APRS:;LEADER *092345z4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-004","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-1>APRS:)AID #2!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-005","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-2>TQ4W2V,WIDE2-1,qAo,IGATE:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"mic_e","comment":"]=","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":6}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-006","title":"TestWithAX25/valid_AX.25_packet","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB-9>APX200,OH7AA-1*,WIDE2-1:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH7LZB testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APX200","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH7LZB testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APX200","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH7LZB testing","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-007","title":"TestWithAX25/valid_AX.25_no_digipeaters","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-008","title":"TestWithAX25/invalid_AX.25_source_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"TOOLONGCALLSIGN>APRS:>status","outcome":"reject","source_expected":{"fap_header":{"source":"TOOLONGCALLSIGN","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_noax25: source callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"TOOLONGCALLSIGN>APRS:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-009","title":"TestWithAX25/source_SSID_too_large_for_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB-16>APRS:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB-16","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_noax25: source callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB-16>APRS:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-010","title":"TestWithAX25/invalid_AX.25_digipeater_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS,TOOLONGCALLSIGN:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_noax25: digipeater callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,TOOLONGCALLSIGN:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-011","title":"TestWithAX25/too_many_path_components_for_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS,D1,D2,D3,D4,D5,D6,D7,D8,D9:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstpath_toomany: too many path components for AX.25"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,D1,D2,D3,D4,D5,D6,D7,D8,D9:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-012","title":"TestWithAX25/max_8_digipeaters_is_valid","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS,D1,D2,D3,D4,D5,D6,D7,D8:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":[{"Call":"D1","WasDigied":false},{"Call":"D2","WasDigied":false},{"Call":"D3","WasDigied":false},{"Call":"D4","WasDigied":false},{"Call":"D5","WasDigied":false},{"Call":"D6","WasDigied":false},{"Call":"D7","WasDigied":false},{"Call":"D8","WasDigied":false}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[{"address":"D1","repeated":false},{"address":"D2","repeated":false},{"address":"D3","repeated":false},{"address":"D4","repeated":false},{"address":"D5","repeated":false},{"address":"D6","repeated":false},{"address":"D7","repeated":false},{"address":"D8","repeated":false}]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-013","title":"TestWithAX25/source_callsign_normalized_to_uppercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"oh7lzb>APRS:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.header.source":"oh7lzb"}}} +{"id":"FAP-013","title":"TestWithAX25/source_callsign_normalized_to_uppercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"oh7lzb>APRS:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-014","title":"TestWithAX25/invalid_AX.25_destination_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>TOOLONGDST:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_noax25: destination callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>TOOLONGDST:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-015","title":"TestWithAX25/destination_SSID_too_large_for_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS-16:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_noax25: destination callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS-16:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-016","title":"TestWithAX25/destination_callsign_normalized_to_uppercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>aprs:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.header.destination":"aprs"}}} -{"id":"FAP-017","title":"TestDstCallNoAX25WithoutOption","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L132","packet":"OH7LZB>TOOLONGDST:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_noax25: destination callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>TOOLONGDST:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$":"rejection"}}} +{"id":"FAP-016","title":"TestWithAX25/destination_callsign_normalized_to_uppercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>aprs:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-017","title":"TestDstCallNoAX25WithoutOption","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L132","packet":"OH7LZB>TOOLONGDST:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_noax25: destination callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>TOOLONGDST:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-018","title":"TestBadPacketCorruptedPosition","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L14","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!60ff.51N/0250akh3r99hfae","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: loc_inv: invalid latitude: invalid minutes: invalid character at position 2: f"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!60ff.51N/0250akh3r99hfae"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-019","title":"TestBadPacketBadSrcCall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L42","packet":"K6IFR_S>APJS10,TCPIP*,qAC,K6IFR-BS:;K6IFR B *250300z3351.79ND11626.40WaRNG0040 440 Voice 447.140 -5.00 Mhz","outcome":"reject","source_expected":{"fap_header":{"source":"K6IFR_S","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_badchars: source callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"K6IFR_S>APJS10,TCPIP*,qAC,K6IFR-BS:;K6IFR B *250300z3351.79ND11626.40WaRNG0040 440 Voice 447.140 -5.00 Mhz"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-020","title":"TestBadPacketBadDigiCall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L58","packet":"SV2BRF-6>APU25N,TCPXX*,qAX,SZ8L_GREE:=/:$U#T<:G- BVagelis, qrv:434.350, tsq:77 {UIV32N}","outcome":"reject","source_expected":{"fap_header":{"source":"SV2BRF-6","destination":"APU25N","digipeaters":[{"Call":"TCPXX","WasDigied":true},{"Call":"qAX","WasDigied":false}]},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_badchars: digipeater callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SV2BRF-6>APU25N,TCPXX*,qAX,SZ8L_GREE:=/:$U#T<:G- BVagelis, qrv:434.350, tsq:77 {UIV32N}"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} +{"id":"FAP-019","title":"TestBadPacketBadSrcCall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L42","packet":"K6IFR_S>APJS10,TCPIP*,qAC,K6IFR-BS:;K6IFR B *250300z3351.79ND11626.40WaRNG0040 440 Voice 447.140 -5.00 Mhz","outcome":"reject","source_expected":{"fap_header":{"source":"K6IFR_S","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_badchars: source callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"K6IFR_S>APJS10,TCPIP*,qAC,K6IFR-BS:;K6IFR B *250300z3351.79ND11626.40WaRNG0040 440 Voice 447.140 -5.00 Mhz"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-020","title":"TestBadPacketBadDigiCall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L58","packet":"SV2BRF-6>APU25N,TCPXX*,qAX,SZ8L_GREE:=/:$U#T<:G- BVagelis, qrv:434.350, tsq:77 {UIV32N}","outcome":"reject","source_expected":{"fap_header":{"source":"SV2BRF-6","destination":"APU25N","digipeaters":[{"Call":"TCPXX","WasDigied":true},{"Call":"qAX","WasDigied":false}]},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_badchars: digipeater callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SV2BRF-6>APU25N,TCPXX*,qAX,SZ8L_GREE:=/:$U#T<:G- BVagelis, qrv:434.350, tsq:77 {UIV32N}"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-021","title":"TestBadPacketBadSymbolTable","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L74","packet":"ASDF>DSALK,OH2RDG*,WIDE:!6028.51N,02505.68E#","outcome":"reject","source_expected":{"fap_header":{"source":"ASDF","destination":"DSALK","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":null,"PosAmbiguity":0,"PosResolution":null,"SymbolTable":",","SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: sym_inv_table: invalid symbol table: ,"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"ASDF>DSALK,OH2RDG*,WIDE:!6028.51N,02505.68E#"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-022","title":"TestBadPacketExperimental","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L87","packet":"ASDF>DSALK,OH2RDG*,WIDE:{{ unsupported experimental format","outcome":"reject","source_expected":{"fap_header":{"source":"ASDF","destination":"DSALK","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: exp_unsupp: unsupported experimental packet"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"ASDF>DSALK,OH2RDG*,WIDE:{{ unsupported experimental format"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$":"rejection"}}} -{"id":"FAP-023","title":"TestBeacon/non-APRS","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L13","packet":"OH2RDU>UIDIGI: UIDIGI 1.9","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"UIDIGI","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"UIDIGI","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-024","title":"TestBeacon/all_beacon_destinations/ID","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>ID:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"ID","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"ID","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-025","title":"TestBeacon/all_beacon_destinations/BEACON","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>BEACON:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"BEACON","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"BEACON","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-026","title":"TestBeacon/all_beacon_destinations/UIDIGI","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>UIDIGI:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"UIDIGI","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"UIDIGI","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-027","title":"TestBeacon/all_beacon_destinations/CQ","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>CQ:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"CQ","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"CQ","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-028","title":"TestBeacon/beacon_with_position_fallback","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L48","packet":"OH2RDU>BEACON:testing!6028.51N/02505.68E#PHG2360","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"BEACON","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"2360","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":4,"height_haat_ft":80,"gain_dbi":6,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-029","title":"TestCompressedNonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L15","packet":"OH2KKU-15>APRS,TCPIP*,qAC,FOURTH:!I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU-15","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.052010101699544,"Longitude":24.504507437140035,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"I","SymbolCode":"&","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":8.10520393696385,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"igate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU-15","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"igate testing","messaging":false,"latitude_deg":60.052010101699544,"longitude_deg":24.504507437140035,"symbol":{"table_id":"I","code":"&"},"extensions":{"range":{"miles":5.036340233637961}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"FAP-030","title":"TestCompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L107","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"FAP-031","title":"TestCompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L196","packet":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol ","outcome":"reject","source_expected":{"fap_header":{"source":"KJ4ERJ-AL","destination":"APWW05","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: comp_short: compressed position too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"original_wire":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol "},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"FAP-032","title":"TestCompressedWeather","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L206","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg001t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":272},"weather":{"gust":{"value":0.44704,"unit":"m/s"},"temperature":{"value":12.222222222222221,"unit":"celsius"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":2.54,"unit":"mm"},"rain_since_midnight":{"value":2.54,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"FAP-033","title":"TestCompressedWeatherSpaceGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L255","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":272},"weather":{"temperature":{"value":12.222222222222221,"unit":"celsius"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":2.54,"unit":"mm"},"rain_since_midnight":{"value":2.54,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"FAP-034","title":"TestDAOUncompressedHumanReadable","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L13","packet":"K0ELR-15>APOT02,WIDE1-1,WIDE2-1,qAo,K0ELR:/102033h4133.03NX09029.49Wv204/000!W33! 12.3V 21C/A=000665","outcome":"accept","source_expected":{"fap_header":{"source":"K0ELR-15","destination":"APOT02","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"K0ELR","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":41.55055,"Longitude":-90.49155,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"X","SymbolCode":"v","Speed":0,"Course":204,"Altitude":202.692,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"12.3V 21C","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"K0ELR-15","destination":"APOT02","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"K0ELR","repeated":false}]},"payload":{"type":"position","comment":"12.3V 21C","messaging":false,"latitude_deg":41.55055,"longitude_deg":-90.49155,"ambiguity":0,"symbol":{"table_id":"X","code":"v"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":204},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":665.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-035","title":"TestDAOCompressedBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L53","packet":"OH7LZB-9>APZMDR,WIDE2-2,qAo,OH2RCH:!/0(yiTc5y>{2O http://aprs.fi/!w11!","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APZMDR","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2RCH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.15273087861335,"Longitude":24.662220910798077,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":11.909203712770884,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APZMDR","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2RCH","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.15273087861335,"longitude_deg":24.662220910798077,"symbol":{"table_id":"/","code":">"},"extensions":{"range":{"miles":7.400036109601728}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"FAP-036","title":"TestDAOMicEBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L87","packet":"OH2JCQ-9>VP1U88,TRACE2-2,qAR,OH2RDK-5:'5'9\"^Rj/]\"4-}Foo !w66!Bar","outcome":"accept","source_expected":{"fap_header":{"source":"OH2JCQ-9","destination":"VP1U88","digipeaters":[{"Call":"TRACE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH2RDK-5","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":60.26470512820512,"Longitude":25.18820512820513,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"j","Speed":122.232,"Course":254,"Altitude":22,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Foo Bar","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH2JCQ-9","destination":"VP1U88","path":[{"address":"TRACE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"OH2RDK-5","repeated":false}]},"payload":{"type":"position","comment":"]Foo Bar","latitude_deg":60.26470512820512,"longitude_deg":25.18820512820513,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"extensions":{"motion":{"speed_knots":66.0,"course_deg":254}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"FAP-022","title":"TestBadPacketExperimental","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L87","packet":"ASDF>DSALK,OH2RDG*,WIDE:{{ unsupported experimental format","outcome":"reject","source_expected":{"fap_header":{"source":"ASDF","destination":"DSALK","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: exp_unsupp: unsupported experimental packet"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"ASDF>DSALK,OH2RDG*,WIDE:{{ unsupported experimental format"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-023","title":"TestBeacon/non-APRS","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L13","packet":"OH2RDU>UIDIGI: UIDIGI 1.9","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"UIDIGI","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"UIDIGI","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-024","title":"TestBeacon/all_beacon_destinations/ID","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>ID:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"ID","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"ID","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-025","title":"TestBeacon/all_beacon_destinations/BEACON","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>BEACON:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"BEACON","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"BEACON","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-026","title":"TestBeacon/all_beacon_destinations/UIDIGI","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>UIDIGI:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"UIDIGI","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"UIDIGI","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-027","title":"TestBeacon/all_beacon_destinations/CQ","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>CQ:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"CQ","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"CQ","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-028","title":"TestBeacon/beacon_with_position_fallback","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L48","packet":"OH2RDU>BEACON:testing!6028.51N/02505.68E#PHG2360","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"BEACON","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"2360","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":4,"height_haat_ft":80,"gain_dbi":6,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-029","title":"TestCompressedNonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L15","packet":"OH2KKU-15>APRS,TCPIP*,qAC,FOURTH:!I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU-15","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.052010101699544,"Longitude":24.504507437140035,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"I","SymbolCode":"&","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":8.10520393696385,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"igate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU-15","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"igate testing","messaging":false,"latitude_deg":60.052010101699544,"longitude_deg":24.504507437140035,"symbol":{"table_id":"I","code":"&"},"extensions":{"range":{"miles":5.036340233637961}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-030","title":"TestCompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L107","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-031","title":"TestCompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L196","packet":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol ","outcome":"reject","source_expected":{"fap_header":{"source":"KJ4ERJ-AL","destination":"APWW05","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: comp_short: compressed position too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"original_wire":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol "},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-032","title":"TestCompressedWeather","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L206","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg001t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":272},"weather":{"gust":{"value":0.44704,"unit":"m/s"},"temperature":{"value":12.222222222222221,"unit":"celsius"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":2.54,"unit":"mm"},"rain_since_midnight":{"value":2.54,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-033","title":"TestCompressedWeatherSpaceGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L255","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":272},"weather":{"temperature":{"value":12.222222222222221,"unit":"celsius"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":2.54,"unit":"mm"},"rain_since_midnight":{"value":2.54,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-034","title":"TestDAOUncompressedHumanReadable","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L13","packet":"K0ELR-15>APOT02,WIDE1-1,WIDE2-1,qAo,K0ELR:/102033h4133.03NX09029.49Wv204/000!W33! 12.3V 21C/A=000665","outcome":"accept","source_expected":{"fap_header":{"source":"K0ELR-15","destination":"APOT02","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"K0ELR","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":41.55055,"Longitude":-90.49155,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"X","SymbolCode":"v","Speed":0,"Course":204,"Altitude":202.692,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"12.3V 21C","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"K0ELR-15","destination":"APOT02","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"K0ELR","repeated":false}]},"payload":{"type":"position","comment":"12.3V 21C","messaging":false,"latitude_deg":41.55055,"longitude_deg":-90.49155,"ambiguity":0,"symbol":{"table_id":"X","code":"v"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":204},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":665.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-035","title":"TestDAOCompressedBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L53","packet":"OH7LZB-9>APZMDR,WIDE2-2,qAo,OH2RCH:!/0(yiTc5y>{2O http://aprs.fi/!w11!","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APZMDR","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2RCH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.15273087861335,"Longitude":24.662220910798077,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":11.909203712770884,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APZMDR","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2RCH","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.15273087861335,"longitude_deg":24.662220910798077,"symbol":{"table_id":"/","code":">"},"extensions":{"range":{"miles":7.400036109601728}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-036","title":"TestDAOMicEBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L87","packet":"OH2JCQ-9>VP1U88,TRACE2-2,qAR,OH2RDK-5:'5'9\"^Rj/]\"4-}Foo !w66!Bar","outcome":"accept","source_expected":{"fap_header":{"source":"OH2JCQ-9","destination":"VP1U88","digipeaters":[{"Call":"TRACE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH2RDK-5","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":60.26470512820512,"Longitude":25.18820512820513,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"j","Speed":122.232,"Course":254,"Altitude":22,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Foo Bar","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH2JCQ-9","destination":"VP1U88","path":[{"address":"TRACE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"OH2RDK-5","repeated":false}]},"payload":{"type":"mic_e","comment":"]Foo Bar","latitude_deg":60.26470512820512,"longitude_deg":25.18820512820513,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"extensions":{"motion":{"speed_knots":66.0,"course_deg":254},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":22}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-037","title":"TestParseStatus","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L12","packet":"OH7LZB>APRS:>Testing status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"Testing status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"Testing status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-038","title":"TestParseNoBody","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L27","packet":"OH7LZB>APRS","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: packet_no_body: no packet body after header"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-039","title":"TestParseNoGT","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L35","packet":"OH7LZB:body","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_nogt: no '>' in header"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -41,24 +41,24 @@ {"id":"FAP-041","title":"TestParseErrors/empty_body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS:","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: packet_no_body: packet body is empty"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS:"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-042","title":"TestParseErrors/no_>_in_header","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB:body","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_nogt: no '>' in header"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-043","title":"TestParseErrors/empty_source_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":">APRS:body","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_empty: source callsign is empty"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":">APRS:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-044","title":"TestParseErrors/source_callsign_bad_chars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7_LZB>APRS:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7_LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_badchars: source callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7_LZB>APRS:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-044","title":"TestParseErrors/source_callsign_bad_chars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7_LZB>APRS:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7_LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_badchars: source callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7_LZB>APRS:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-045","title":"TestParseErrors/source_callsign_not_valid_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"TOOLONGCALL>APRS:body","outcome":"reject","source_expected":{"fap_header":{"source":"TOOLONGCALL","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_noax25: source callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"TOOLONGCALL>APRS:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-046","title":"TestParseErrors/empty_destination","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_empty: destination callsign is empty"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-047","title":"TestParseErrors/destination_not_valid_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>!!!:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_noax25: destination callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>!!!:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-047","title":"TestParseErrors/destination_not_valid_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>!!!:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_noax25: destination callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>!!!:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-048","title":"TestParseErrors/too_many_path_components_for_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS,A,B,C,D,E,F,G,H,I:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstpath_toomany: too many path components for AX.25"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,A,B,C,D,E,F,G,H,I:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-049","title":"TestParseErrors/empty_digipeater_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS,,WIDE:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digi_empty: empty digipeater callsign"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,,WIDE:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-050","title":"TestParseErrors/empty_digipeater_after_star","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS,*:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digi_empty: empty digipeater callsign"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,*:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-051","title":"TestParseErrors/digipeater_bad_chars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS,WI_DE:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_badchars: digipeater callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,WI_DE:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-051","title":"TestParseErrors/digipeater_bad_chars","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS,WI_DE:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_badchars: digipeater callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,WI_DE:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-052","title":"TestParseErrors/digipeater_not_valid_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L163","packet":"OH7LZB>APRS,TOOLONGCALL:body","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_noax25: digipeater callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,TOOLONGCALL:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-053","title":"TestItemAlive","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L18","packet":"N0CALL-1>APRS:)AID #2!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-054","title":"TestItemKilled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L57","packet":"N0CALL-1>APRS:)AID #2_4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":false,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":false,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-055","title":"TestItemShortName","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L76","packet":"N0CALL-1>APRS:)X1Y!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"X1Y","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"X1Y","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-056","title":"TestItemMaxLengthName","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L92","packet":"N0CALL-15>APRS,TCPIP*,qAC,T2TEST:)MyRadio99!4327.00N/00119.00WlMyRadio99","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-15","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TEST","WasDigied":false}]},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":43.45,"Longitude":-1.3166666666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"l","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"MyRadio99","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"MyRadio99","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-15","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TEST","repeated":false}]},"payload":{"type":"item","comment":"MyRadio99","name":"MyRadio99","alive":true,"latitude_deg":43.45,"longitude_deg":-1.3166666666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"l"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-057","title":"TestItemTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L114","packet":"N0CALL-1>APRS:)short","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: item_short: item packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:)short"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-058","title":"TestItemCompressedPosition","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L129","packet":"N0CALL-1>APRS:)TEST!/0%E/Th4_/ A","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"compressed","Latitude":60.23049358668088,"Longitude":24.878968618576835,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"/","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"TEST","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"TEST","alive":true,"latitude_deg":60.23049358668088,"longitude_deg":24.878968618576835,"symbol":{"table_id":"/","code":"/"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-059","title":"TestItemWithCourseSpeed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L168","packet":"N0CALL-1>APRS:)MOBILE!4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"MOBILE","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"MOBILE","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-060","title":"TestItemErrors/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L207","packet":"N0CALL-1>APRS:)SH!1234","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: item_short: item packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:)SH!1234"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-061","title":"TestItemErrors/no_name_terminator","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L207","packet":"N0CALL-1>APRS:)ABCDEFGHIJ4903.50N/07201.75W>","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: item_inv: item name terminator not found"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:)ABCDEFGHIJ4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"FAP-053","title":"TestItemAlive","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L18","packet":"N0CALL-1>APRS:)AID #2!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-054","title":"TestItemKilled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L57","packet":"N0CALL-1>APRS:)AID #2_4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":false,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":false,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-055","title":"TestItemShortName","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L76","packet":"N0CALL-1>APRS:)X1Y!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"X1Y","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"X1Y","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-056","title":"TestItemMaxLengthName","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L92","packet":"N0CALL-15>APRS,TCPIP*,qAC,T2TEST:)MyRadio99!4327.00N/00119.00WlMyRadio99","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-15","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TEST","WasDigied":false}]},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":43.45,"Longitude":-1.3166666666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"l","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"MyRadio99","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"MyRadio99","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-15","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TEST","repeated":false}]},"payload":{"type":"item","comment":"MyRadio99","name":"MyRadio99","alive":true,"latitude_deg":43.45,"longitude_deg":-1.3166666666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"l"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-057","title":"TestItemTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L114","packet":"N0CALL-1>APRS:)short","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: item_short: item packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:)short"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-058","title":"TestItemCompressedPosition","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L129","packet":"N0CALL-1>APRS:)TEST!/0%E/Th4_/ A","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"compressed","Latitude":60.23049358668088,"Longitude":24.878968618576835,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"/","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"TEST","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"TEST","alive":true,"latitude_deg":60.23049358668088,"longitude_deg":24.878968618576835,"symbol":{"table_id":"/","code":"/"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-059","title":"TestItemWithCourseSpeed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L168","packet":"N0CALL-1>APRS:)MOBILE!4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"MOBILE","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"MOBILE","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-060","title":"TestItemErrors/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L207","packet":"N0CALL-1>APRS:)SH!1234","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: item_short: item packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:)SH!1234"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-061","title":"TestItemErrors/no_name_terminator","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/item_test.go#L207","packet":"N0CALL-1>APRS:)ABCDEFGHIJ4903.50N/07201.75W>","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: item_inv: item name terminator not found"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:)ABCDEFGHIJ4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-062","title":"TestBinaryCleanASCII","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB : !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz}{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz}","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz}","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-063","title":"TestBinaryCleanSet1","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB : !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ab{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ab","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ab","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-064","title":"TestBinaryCleanSet2","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_binary_clean_test.go#L31","packet":"OH7AA-1>APRS,WIDE1-1,WIDE2-2,qAo,OH7AA::OH7LZB :cdefghijklmnopqrstuvwxyz}\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5{42","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"OH7LZB","Text":"cdefghijklmnopqrstuvwxyz}\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5","ID":"42","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"scope_note":"Contains 8-bit bytes preserved by FAP; not evidence that non-ASCII message text conforms to APRS101.","expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"message","addressee":"OH7LZB","text":"cdefghijklmnopqrstuvwxyz}\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5","message_id":"42"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} @@ -342,175 +342,175 @@ {"id":"FAP-342","title":"TestEncodeMessageNoID","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L323","packet":"OH7AA-1>APRS::N0CALL :Hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Hello world","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Hello world","message_id":null}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-343","title":"TestMessageErrors/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L444","packet":"OH7AA-1>APRS::N0CALL ","outcome":"reject","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: msg_short: message packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7AA-1>APRS::N0CALL "},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-344","title":"TestMessageErrors/missing_colon_after_addressee","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L444","packet":"OH7AA-1>APRS::N0CALL XHello world","outcome":"reject","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: msg_inv: message addressee field malformed"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7AA-1>APRS::N0CALL XHello world"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-345","title":"TestMicENonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/]","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"]","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-346","title":"TestMicEMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L108","packet":"OH7LZB-2>TQ4W2V,WIDE2-1,qAo,OH7LZB:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"position","comment":"]=","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-347","title":"TestMicEHexTelemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L208","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'102030FFff commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,32,48,255,255],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"position","comment":"commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"telemetry":{"sequence":0,"analog":[16,32,48,255,255]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-348","title":"TestMicEHexTelemetry2Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L237","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'1020 commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,0,32],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"position","comment":"commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"telemetry":{"sequence":0,"analog":[16,0,32]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-349","title":"TestMicEMangled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L267","packet":"KD0KZE>TUPX9R,RS0ISS*,qAR,K0GDI-6:'yaIl -/]Greetings via ISS=","outcome":"accept","source_expected":{"fap_header":{"source":"KD0KZE","destination":"TUPX9R","digipeaters":[{"Call":"RS0ISS","WasDigied":true},{"Call":"qAR","WasDigied":false},{"Call":"K0GDI-6","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":45.148666666666664,"Longitude":-93.1575,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"111","MiceMangled":true,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Greetings via ISS=","Warnings":null}},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"KD0KZE","destination":"TUPX9R","path":[{"address":"RS0ISS","repeated":true},{"address":"qAR","repeated":false},{"address":"K0GDI-6","repeated":false}]},"payload":{"type":"position","comment":"]Greetings via ISS=","latitude_deg":45.148666666666664,"longitude_deg":-93.1575,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-350","title":"TestMicEErrors/destination_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"N0CALL>AB:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"AB","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: Mic-E destination callsign too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>AB:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-351","title":"TestMicEErrors/info_field_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"N0CALL>SX15S6:`short","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX15S6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_short: Mic-E information field too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX15S6:`short"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-352","title":"TestMicEErrors/invalid_destination_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"N0CALL>SX1MS6:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX1MS6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: invalid Mic-E destination character: M"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX1MS6:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-353","title":"TestMicEErrors/invalid_symbol_table","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"OZ2BRN-4>5U2V08,OZ3RIN-3,OZ4DIA-2*,WIDE2-1,qAR,DB0KUE:`'O5U2V08,OZ3RIN-3,OZ4DIA-2*,WIDE2-1,qAR,DB0KUE:`'OAB:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"AB","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_short: mangled Mic-E packet too short"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>AB:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-355","title":"TestMicEMangledErrors/invalid_info_field","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L370","packet":"N0CALL>SX15S6:`c51!f?>\u0001","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX15S6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":171.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"\u0001","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_infofield: invalid Mic-E information field"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX15S6:`c51!f?>\u0001"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-356","title":"TestMicEMangledErrors/invalid_destination_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L370","packet":"N0CALL>SX1MS6:`@@@@ >/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX1MS6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":true,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: invalid Mic-E destination character"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX1MS6:`@@@@ >/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-357","title":"TestGPRMC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L17","packet":"N0CALL-11>APRS,DIGI*,WIDE2-1,qAR,IGATE:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*7A","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"DIGI","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":33.817296666666664,"Longitude":-84.10436166666666,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":null,"SymbolCode":null,"Speed":43.940552000000004,"Course":28,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"DIGI","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Timestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-358","title":"TestGPRMCNoFix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L99","packet":"SRC>APRS,WIDE1-1,GATE,qAR,GATE-1:$GPRMC,041518,V,,,,,,,230309,,*33","outcome":"reject","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"GATE","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"GATE-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null},"fap_error":"fap: gprmc_nofix: GPRMC: no valid fix"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRC>APRS,WIDE1-1,GATE,qAR,GATE-1:$GPRMC,041518,V,,,,,,,230309,,*33"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-359","title":"TestGPGGA","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L111","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,*4F","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":11.516666666666667,"PosAmbiguity":null,"PosResolution":1.852,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":545.4,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-360","title":"TestGPGGANoFix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L171","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*48","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA checksum mismatch"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*48"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-361","title":"TestGPGLL","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L183","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-362","title":"TestGPGLLMinimal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L239","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-363","title":"TestParseNMEAErrors/not_starting_with_$GP","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA sentence must start with $GP"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-364","title":"TestParseNMEAErrors/checksum_mismatch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*FF","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA checksum mismatch"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*FF"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-365","title":"TestParseNMEAErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPXXX","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: NMEA sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPXXX"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-366","title":"TestParseNMEAErrors/unsupported_sentence","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPVTG,0,T,0,M,0,N,0,K","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: unsupported NMEA sentence: $GPVTG"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPVTG,0,T,0,M,0,N,0,K"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-367","title":"TestParseGPRMCErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: GPRMC sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-368","title":"TestParseGPRMCErrors/no_fix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,V,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: gprmc_nofix: GPRMC: no valid fix"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,V,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-369","title":"TestParseGPRMCErrors/invalid_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,XXXX.XXXX,N,08406.2617,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"},"fap_error":"fap: pos_lat_inv: GPRMC: invalid degrees: strconv.ParseFloat: parsing \"XX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,XXXX.XXXX,N,08406.2617,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-370","title":"TestParseGPRMCErrors/empty_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,,N,08406.2617,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"},"fap_error":"fap: pos_lat_inv: GPRMC: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,,N,08406.2617,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-371","title":"TestParseGPRMCErrors/invalid_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,XXXXX.XXXX,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":33.817296666666664,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"},"fap_error":"fap: pos_lon_inv: GPRMC: invalid degrees: strconv.ParseFloat: parsing \"XXX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,XXXXX.XXXX,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-372","title":"TestParseGPRMCErrors/empty_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":33.817296666666664,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"},"fap_error":"fap: pos_lon_inv: GPRMC: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-373","title":"TestParseGPGGAErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: GPGGA sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-374","title":"TestParseGPGGAErrors/no_fix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPGGA: no valid fix"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-375","title":"TestParseGPGGAErrors/invalid_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,XXXX.XXX,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lat_inv: GPGGA: invalid degrees: strconv.ParseFloat: parsing \"XX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,XXXX.XXX,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-376","title":"TestParseGPGGAErrors/empty_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lat_inv: GPGGA: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-377","title":"TestParseGPGGAErrors/invalid_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,XXXXX.XXX,E,1,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lon_inv: GPGGA: invalid degrees: strconv.ParseFloat: parsing \"XXX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,XXXXX.XXX,E,1,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-378","title":"TestParseGPGGAErrors/empty_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,,E,1,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lon_inv: GPGGA: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,,E,1,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-379","title":"TestParseGPGLLErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,12311.12","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: GPGLL sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,12311.12"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-380","title":"TestParseGPGLLErrors/invalid_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,XXXX.XX,N,12311.12,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lat_inv: GPGLL: invalid degrees: strconv.ParseFloat: parsing \"XX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,XXXX.XX,N,12311.12,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-381","title":"TestParseGPGLLErrors/empty_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,,N,12311.12,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lat_inv: GPGLL: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,,N,12311.12,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-382","title":"TestParseGPGLLErrors/invalid_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,XXXXX.XX,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lon_inv: GPGLL: invalid degrees: strconv.ParseFloat: parsing \"XXX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,XXXXX.XX,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-383","title":"TestParseGPGLLErrors/empty_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lon_inv: GPGLL: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-384","title":"TestParseGPRMCTimestampErrors/time_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,1234,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,1234,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-385","title":"TestParseGPRMCTimestampErrors/time_too_long","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,12345678,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,12345678,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-386","title":"TestParseGPRMCTimestampErrors/time_empty","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-387","title":"TestParseGPRMCTimestampErrors/hour_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,XX0000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,XX0000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-388","title":"TestParseGPRMCTimestampErrors/hour_24","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,240000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,240000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-389","title":"TestParseGPRMCTimestampErrors/minute_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,12XX00,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,12XX00,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-390","title":"TestParseGPRMCTimestampErrors/minute_60","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,126000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,126000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-391","title":"TestParseGPRMCTimestampErrors/second_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,1200XX,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,1200XX,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-392","title":"TestParseGPRMCTimestampErrors/second_60","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,120060,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,120060,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-393","title":"TestParseGPRMCTimestampErrors/date_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,1212,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,1212,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-394","title":"TestParseGPRMCTimestampErrors/date_too_long","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,12120712,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,12120712,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-395","title":"TestParseGPRMCTimestampErrors/date_empty","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-396","title":"TestParseGPRMCTimestampErrors/day_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,XX1207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,XX1207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-397","title":"TestParseGPRMCTimestampErrors/month_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,12XX07,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,12XX07,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-398","title":"TestParseGPRMCTimestampErrors/year_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,1212XX,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,1212XX,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-399","title":"TestObjectInvalidBroken","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_inv_test.go#L16","packet":"OH2KKU-1>APRS,TCPIP*,qAC,FIRST:;SRAL HQ *110507zS0%E/Th4_a AKaupinmaenpolku9,open M-Th12-17,F12-14 lcl","outcome":"reject","source_expected":{"fap_header":{"source":"OH2KKU-1","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FIRST","WasDigied":false}]},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"SRAL HQ *","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_inv: invalid object alive/killed indicator: 1"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2KKU-1>APRS,TCPIP*,qAC,FIRST:;SRAL HQ *110507zS0%E/Th4_a AKaupinmaenpolku9,open M-Th12-17,F12-14 lcl"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-400","title":"TestObjectCompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L16","packet":"N0CALL-1>APRS,TCPIP*,qAC,FIRST:;SRAL HQ *100927zS0%E/Th4_a AKaupinmaenpolku9,open M-Th12-17,F12-14 lcl","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FIRST","WasDigied":false}]},"fap_fields":{"Type":"object","Format":"compressed","Latitude":60.23049358668088,"Longitude":24.878968618576835,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"S","SymbolCode":"a","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"SRAL HQ ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Kaupinmaenpolku9,open M-Th12-17,F12-14 lcl","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FIRST","repeated":false}]},"payload":{"type":"object","comment":"Kaupinmaenpolku9,open M-Th12-17,F12-14 lcl","name":"SRAL HQ ","alive":true,"latitude_deg":60.23049358668088,"longitude_deg":24.878968618576835,"symbol":{"table_id":"S","code":"a"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-401","title":"TestObjectUncompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L71","packet":"N0CALL-1>APRS:;LEADER *092345z4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER ","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-402","title":"TestObjectKilled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L117","packet":"N0CALL-1>APRS:;LEADER _092345z4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":false,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER ","alive":false,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-403","title":"TestObjectErrors/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L153","packet":"N0CALL-1>APRS:;SHORT","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_short: object packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:;SHORT"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-404","title":"TestObjectErrors/invalid_alive/killed_indicator","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L153","packet":"N0CALL-1>APRS:;LEADER X092345z4903.50N/07201.75W>","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_inv: invalid object alive/killed indicator: X"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:;LEADER X092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-405","title":"TestFallbackUncompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L15","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:hoponassualku!6028.51S/02505.68W#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-406","title":"TestFallbackCompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L44","packet":"OH2KKU>APRS,TCPIP*:hello!/I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":10.540467177352028,"Longitude":-74.88313740726545,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"v","Speed":1885.1787453433603,"Course":20,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"Aigate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"position","comment":"Aigate testing","messaging":false,"latitude_deg":10.540467177352028,"longitude_deg":-74.88313740726545,"symbol":{"table_id":"/","code":"v"},"extensions":{"motion":{"speed_knots":1017.9150892782723,"course_deg":20}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-407","title":"TestFallbackExclAtOffset39","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L64","packet":"OH2RDP-1>BEACON-15:012345678901234567890123456789012345678!6028.51N/02505.68E#","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-408","title":"TestFallbackExclAtOffset40","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L81","packet":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-409","title":"TestFallbackNoExcl","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L94","packet":"OH2RDP-1>BEACON-15:Tno position here at all","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:Tno position here at all"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-410","title":"TestFallbackUncompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L107","packet":"OH2RDP-1>BEACON-15:X!6028.51N/02505.6","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!6028.51N/02505.6"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-411","title":"TestFallbackCompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L120","packet":"OH2RDP-1>BEACON-15:X!/I0-X;T_Wv&","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!/I0-X;T_Wv&"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-412","title":"TestFallbackBadCompressedTableChar","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L134","packet":"OH2RDP-1>BEACON-15:X!zI0-X;T_Wv&{-A","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!zI0-X;T_Wv&{-A"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-413","title":"TestParseCapabilities","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/status_test.go#L14","packet":"OH7LZB>APRS:SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/]","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"]","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-346","title":"TestMicEMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L108","packet":"OH7LZB-2>TQ4W2V,WIDE2-1,qAo,OH7LZB:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"]=","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":6}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-347","title":"TestMicEHexTelemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L208","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'102030FFff commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,32,48,255,255],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"telemetry":{"sequence":0,"analog":[16,32,48,255,255]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-348","title":"TestMicEHexTelemetry2Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L237","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'1020 commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,0,32],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"telemetry":{"sequence":0,"analog":[16,0,32]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-349","title":"TestMicEMangled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L267","packet":"KD0KZE>TUPX9R,RS0ISS*,qAR,K0GDI-6:'yaIl -/]Greetings via ISS=","outcome":"accept","source_expected":{"fap_header":{"source":"KD0KZE","destination":"TUPX9R","digipeaters":[{"Call":"RS0ISS","WasDigied":true},{"Call":"qAR","WasDigied":false},{"Call":"K0GDI-6","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":45.148666666666664,"Longitude":-93.1575,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"111","MiceMangled":true,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Greetings via ISS=","Warnings":null}},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"KD0KZE","destination":"TUPX9R","path":[{"address":"RS0ISS","repeated":true},{"address":"qAR","repeated":false},{"address":"K0GDI-6","repeated":false}]},"payload":{"type":"mic_e","comment":"]Greetings via ISS=","latitude_deg":45.148666666666664,"longitude_deg":-93.1575,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-350","title":"TestMicEErrors/destination_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"N0CALL>AB:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"AB","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: Mic-E destination callsign too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>AB:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-351","title":"TestMicEErrors/info_field_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"N0CALL>SX15S6:`short","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX15S6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_short: Mic-E information field too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX15S6:`short"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-352","title":"TestMicEErrors/invalid_destination_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"N0CALL>SX1MS6:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX1MS6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: invalid Mic-E destination character: M"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX1MS6:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-353","title":"TestMicEErrors/invalid_symbol_table","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"OZ2BRN-4>5U2V08,OZ3RIN-3,OZ4DIA-2*,WIDE2-1,qAR,DB0KUE:`'O5U2V08,OZ3RIN-3,OZ4DIA-2*,WIDE2-1,qAR,DB0KUE:`'OAB:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"AB","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_short: mangled Mic-E packet too short"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>AB:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-355","title":"TestMicEMangledErrors/invalid_info_field","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L370","packet":"N0CALL>SX15S6:`c51!f?>\u0001","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX15S6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":171.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"\u0001","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_infofield: invalid Mic-E information field"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX15S6:`c51!f?>\u0001"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-356","title":"TestMicEMangledErrors/invalid_destination_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L370","packet":"N0CALL>SX1MS6:`@@@@ >/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX1MS6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":true,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: invalid Mic-E destination character"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX1MS6:`@@@@ >/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-357","title":"TestGPRMC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L17","packet":"N0CALL-11>APRS,DIGI*,WIDE2-1,qAR,IGATE:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*7A","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"DIGI","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":33.817296666666664,"Longitude":-84.10436166666666,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":null,"SymbolCode":null,"Speed":43.940552000000004,"Course":28,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"DIGI","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Timestamp","$.fap_fields.Warnings"]} +{"id":"FAP-358","title":"TestGPRMCNoFix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L99","packet":"SRC>APRS,WIDE1-1,GATE,qAR,GATE-1:$GPRMC,041518,V,,,,,,,230309,,*33","outcome":"reject","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"GATE","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"GATE-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null},"fap_error":"fap: gprmc_nofix: GPRMC: no valid fix"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRC>APRS,WIDE1-1,GATE,qAR,GATE-1:$GPRMC,041518,V,,,,,,,230309,,*33"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-359","title":"TestGPGGA","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L111","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,*4F","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":11.516666666666667,"PosAmbiguity":null,"PosResolution":1.852,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":545.4,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-360","title":"TestGPGGANoFix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L171","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*48","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA checksum mismatch"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*48"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-361","title":"TestGPGLL","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L183","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-362","title":"TestGPGLLMinimal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L239","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-363","title":"TestParseNMEAErrors/not_starting_with_$GP","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA sentence must start with $GP"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-364","title":"TestParseNMEAErrors/checksum_mismatch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*FF","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA checksum mismatch"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*FF"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-365","title":"TestParseNMEAErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPXXX","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: NMEA sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPXXX"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-366","title":"TestParseNMEAErrors/unsupported_sentence","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPVTG,0,T,0,M,0,N,0,K","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: unsupported NMEA sentence: $GPVTG"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPVTG,0,T,0,M,0,N,0,K"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-367","title":"TestParseGPRMCErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: GPRMC sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-368","title":"TestParseGPRMCErrors/no_fix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,V,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: gprmc_nofix: GPRMC: no valid fix"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,V,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-369","title":"TestParseGPRMCErrors/invalid_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,XXXX.XXXX,N,08406.2617,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"},"fap_error":"fap: pos_lat_inv: GPRMC: invalid degrees: strconv.ParseFloat: parsing \"XX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,XXXX.XXXX,N,08406.2617,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-370","title":"TestParseGPRMCErrors/empty_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,,N,08406.2617,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"},"fap_error":"fap: pos_lat_inv: GPRMC: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,,N,08406.2617,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-371","title":"TestParseGPRMCErrors/invalid_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,XXXXX.XXXX,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":33.817296666666664,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"},"fap_error":"fap: pos_lon_inv: GPRMC: invalid degrees: strconv.ParseFloat: parsing \"XXX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,XXXXX.XXXX,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-372","title":"TestParseGPRMCErrors/empty_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":33.817296666666664,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"},"fap_error":"fap: pos_lon_inv: GPRMC: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-373","title":"TestParseGPGGAErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: GPGGA sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-374","title":"TestParseGPGGAErrors/no_fix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPGGA: no valid fix"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-375","title":"TestParseGPGGAErrors/invalid_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,XXXX.XXX,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lat_inv: GPGGA: invalid degrees: strconv.ParseFloat: parsing \"XX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,XXXX.XXX,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-376","title":"TestParseGPGGAErrors/empty_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lat_inv: GPGGA: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-377","title":"TestParseGPGGAErrors/invalid_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,XXXXX.XXX,E,1,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lon_inv: GPGGA: invalid degrees: strconv.ParseFloat: parsing \"XXX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,XXXXX.XXX,E,1,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-378","title":"TestParseGPGGAErrors/empty_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L447","packet":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,,E,1,08,0.9,545.4,M,47.0,M,,","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lon_inv: GPGGA: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGGA,123519,4807.038,N,,E,1,08,0.9,545.4,M,47.0,M,,"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-379","title":"TestParseGPGLLErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,12311.12","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: GPGLL sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,12311.12"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-380","title":"TestParseGPGLLErrors/invalid_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,XXXX.XX,N,12311.12,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lat_inv: GPGLL: invalid degrees: strconv.ParseFloat: parsing \"XX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,XXXX.XX,N,12311.12,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-381","title":"TestParseGPGLLErrors/empty_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,,N,12311.12,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lat_inv: GPGLL: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,,N,12311.12,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-382","title":"TestParseGPGLLErrors/invalid_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,XXXXX.XX,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lon_inv: GPGLL: invalid degrees: strconv.ParseFloat: parsing \"XXX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,XXXXX.XX,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-383","title":"TestParseGPGLLErrors/empty_longitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L494","packet":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: pos_lon_inv: GPGLL: empty coordinate or hemisphere"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPGLL,4916.45,N,,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-384","title":"TestParseGPRMCTimestampErrors/time_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,1234,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,1234,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-385","title":"TestParseGPRMCTimestampErrors/time_too_long","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,12345678,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,12345678,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-386","title":"TestParseGPRMCTimestampErrors/time_empty","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-387","title":"TestParseGPRMCTimestampErrors/hour_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,XX0000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,XX0000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-388","title":"TestParseGPRMCTimestampErrors/hour_24","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,240000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,240000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-389","title":"TestParseGPRMCTimestampErrors/minute_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,12XX00,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,12XX00,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-390","title":"TestParseGPRMCTimestampErrors/minute_60","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,126000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,126000,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-391","title":"TestParseGPRMCTimestampErrors/second_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,1200XX,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,1200XX,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-392","title":"TestParseGPRMCTimestampErrors/second_60","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,120060,A,3349.0378,N,08406.2617,W,0,0,121207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid time"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,120060,A,3349.0378,N,08406.2617,W,0,0,121207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-393","title":"TestParseGPRMCTimestampErrors/date_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,1212,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,1212,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-394","title":"TestParseGPRMCTimestampErrors/date_too_long","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,12120712,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,12120712,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-395","title":"TestParseGPRMCTimestampErrors/date_empty","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-396","title":"TestParseGPRMCTimestampErrors/day_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,XX1207,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,XX1207,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-397","title":"TestParseGPRMCTimestampErrors/month_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,12XX07,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,12XX07,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-398","title":"TestParseGPRMCTimestampErrors/year_non-numeric","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L540","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,1212XX,0,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: GPRMC: invalid date"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,0,0,1212XX,0,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-399","title":"TestObjectInvalidBroken","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_inv_test.go#L16","packet":"OH2KKU-1>APRS,TCPIP*,qAC,FIRST:;SRAL HQ *110507zS0%E/Th4_a AKaupinmaenpolku9,open M-Th12-17,F12-14 lcl","outcome":"reject","source_expected":{"fap_header":{"source":"OH2KKU-1","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FIRST","WasDigied":false}]},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"SRAL HQ *","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_inv: invalid object alive/killed indicator: 1"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2KKU-1>APRS,TCPIP*,qAC,FIRST:;SRAL HQ *110507zS0%E/Th4_a AKaupinmaenpolku9,open M-Th12-17,F12-14 lcl"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-400","title":"TestObjectCompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L16","packet":"N0CALL-1>APRS,TCPIP*,qAC,FIRST:;SRAL HQ *100927zS0%E/Th4_a AKaupinmaenpolku9,open M-Th12-17,F12-14 lcl","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FIRST","WasDigied":false}]},"fap_fields":{"Type":"object","Format":"compressed","Latitude":60.23049358668088,"Longitude":24.878968618576835,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"S","SymbolCode":"a","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"SRAL HQ ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Kaupinmaenpolku9,open M-Th12-17,F12-14 lcl","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FIRST","repeated":false}]},"payload":{"type":"object","comment":"Kaupinmaenpolku9,open M-Th12-17,F12-14 lcl","name":"SRAL HQ","alive":true,"latitude_deg":60.23049358668088,"longitude_deg":24.878968618576835,"symbol":{"table_id":"S","code":"a"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-401","title":"TestObjectUncompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L71","packet":"N0CALL-1>APRS:;LEADER *092345z4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-402","title":"TestObjectKilled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L117","packet":"N0CALL-1>APRS:;LEADER _092345z4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":false,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER","alive":false,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-403","title":"TestObjectErrors/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L153","packet":"N0CALL-1>APRS:;SHORT","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_short: object packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:;SHORT"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-404","title":"TestObjectErrors/invalid_alive/killed_indicator","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L153","packet":"N0CALL-1>APRS:;LEADER X092345z4903.50N/07201.75W>","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_inv: invalid object alive/killed indicator: X"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:;LEADER X092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-405","title":"TestFallbackUncompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L15","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:hoponassualku!6028.51S/02505.68W#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-406","title":"TestFallbackCompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L44","packet":"OH2KKU>APRS,TCPIP*:hello!/I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":10.540467177352028,"Longitude":-74.88313740726545,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"v","Speed":1885.1787453433603,"Course":20,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"Aigate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"position","comment":"Aigate testing","messaging":false,"latitude_deg":10.540467177352028,"longitude_deg":-74.88313740726545,"symbol":{"table_id":"/","code":"v"},"extensions":{"motion":{"speed_knots":1017.9150892782723,"course_deg":20}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-407","title":"TestFallbackExclAtOffset39","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L64","packet":"OH2RDP-1>BEACON-15:012345678901234567890123456789012345678!6028.51N/02505.68E#","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-408","title":"TestFallbackExclAtOffset40","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L81","packet":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-409","title":"TestFallbackNoExcl","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L94","packet":"OH2RDP-1>BEACON-15:Tno position here at all","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:Tno position here at all"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-410","title":"TestFallbackUncompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L107","packet":"OH2RDP-1>BEACON-15:X!6028.51N/02505.6","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!6028.51N/02505.6"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-411","title":"TestFallbackCompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L120","packet":"OH2RDP-1>BEACON-15:X!/I0-X;T_Wv&","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!/I0-X;T_Wv&"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-412","title":"TestFallbackBadCompressedTableChar","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L134","packet":"OH2RDP-1>BEACON-15:X!zI0-X;T_Wv&{-A","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!zI0-X;T_Wv&{-A"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-413","title":"TestParseCapabilities","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/status_test.go#L14","packet":"OH7LZB>APRS:APU25N,WIDE2-2,qAR,LANSNG:>151811z>>Nashville,TN>>Toronto,ON","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":">>Nashville,TN>>Toronto,ON","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"status","text":">>Nashville,TN>>Toronto,ON"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-415","title":"TestCommentTelemetry/uncompressed_PHG_4ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03NN02739.63E#PHG26303/Siilinjarvi|\"p%T'.agff|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"N","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"26303","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,6348,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Siilinjarvi","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"Siilinjarvi","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"N","code":"#"},"extensions":{"telemetry":{"sequence":170,"analog":[415,559,5894,6348,null]},"phg":{"power_w":4,"height_haat_ft":640,"gain_dbi":3,"directivity_deg":null,"rate_per_hour":3}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} -{"id":"FAP-416","title":"TestCommentTelemetry/compressed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!/0%3RTh<6>dS_http://aprs.fi/|\"p%T'.ag|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.2347017530964,"Longitude":24.882575618361585,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":85.0097863745044,"Course":268,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.2347017530964,"longitude_deg":24.882575618361585,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":45.90161251323131,"course_deg":268},"telemetry":{"sequence":170,"analog":[415,559,5894,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"FAP-417","title":"TestCommentTelemetry/uncompressed_course_speed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL-14>APRS,qAR,IGATE:!6304.03N/02739.63E>036/010test |(7Cq?3<\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":659,"Vals":[3174,2748,2458,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"test","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"test","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":659,"analog":[3174,2748,2458,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} -{"id":"FAP-418","title":"TestCommentTelemetry/uncompressed_altitude_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} -{"id":"FAP-419","title":"TestCommentTelemetry/compressed_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"FAP-420","title":"TestCommentTelemetry/uncompressed_bits_LSB_first","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>|ss1122334455!\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,1840],"Bits":"10000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,1840],"digital":[true,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} -{"id":"FAP-421","title":"TestCommentTelemetry/pipe_in_comment_text","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>a|b |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"a|b","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"a|b","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":0,"analog":[0,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} -{"id":"FAP-422","title":"TestCommentTelemetry/uncompressed_telemetry_then_DAO","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>comment|\"p%T|!W12!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.06718333333333,"Longitude":27.660533333333333,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"comment","messaging":false,"latitude_deg":63.06718333333333,"longitude_deg":27.660533333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":170,"analog":[415,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-415","title":"TestCommentTelemetry/uncompressed_PHG_4ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03NN02739.63E#PHG26303/Siilinjarvi|\"p%T'.agff|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"N","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"26303","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,6348,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Siilinjarvi","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"Siilinjarvi","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"N","code":"#"},"extensions":{"telemetry":{"sequence":170,"analog":[415,559,5894,6348,null]},"phg":{"power_w":4,"height_haat_ft":640,"gain_dbi":3,"directivity_deg":null,"rate_per_hour":3}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-416","title":"TestCommentTelemetry/compressed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!/0%3RTh<6>dS_http://aprs.fi/|\"p%T'.ag|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.2347017530964,"Longitude":24.882575618361585,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":85.0097863745044,"Course":268,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.2347017530964,"longitude_deg":24.882575618361585,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":45.90161251323131,"course_deg":268},"telemetry":{"sequence":170,"analog":[415,559,5894,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-417","title":"TestCommentTelemetry/uncompressed_course_speed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL-14>APRS,qAR,IGATE:!6304.03N/02739.63E>036/010test |(7Cq?3<\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":659,"Vals":[3174,2748,2458,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"test","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"test","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":659,"analog":[3174,2748,2458,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-418","title":"TestCommentTelemetry/uncompressed_altitude_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-419","title":"TestCommentTelemetry/compressed_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-420","title":"TestCommentTelemetry/uncompressed_bits_LSB_first","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>|ss1122334455!\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,1840],"Bits":"10000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,1840],"digital":[true,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-421","title":"TestCommentTelemetry/pipe_in_comment_text","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>a|b |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"a|b","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"a|b","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":0,"analog":[0,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-422","title":"TestCommentTelemetry/uncompressed_telemetry_then_DAO","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>comment|\"p%T|!W12!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.06718333333333,"Longitude":27.660533333333333,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"comment","messaging":false,"latitude_deg":63.06718333333333,"longitude_deg":27.660533333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":170,"analog":[415,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-423","title":"TestCommentTelemetryInvalid/too_long","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!!!!!!!!!!!!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!!!!!!!!!!!!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-424","title":"TestCommentTelemetryInvalid/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-425","title":"TestCommentTelemetryInvalid/odd_length","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-426","title":"TestCommentTelemetryInvalid/invalid_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!}|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!}|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!}|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-427","title":"TestCommentTelemetryInvalid/single_pipe","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-428","title":"TestMicEBase91Telemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-429","title":"TestMicEBase91Telemetry1Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L50","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-430","title":"TestMicEBase91TelemetryHarder","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L84","packet":"N6BG-1>S6QTUX:`+,^l!cR/'\";z}||ss11223344bb!\"|!w>f!|3","outcome":"accept","source_expected":{"fap_header":{"source":"N6BG-1","destination":"S6QTUX","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":36.24305311355312,"Longitude":-115.27779304029303,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"R","Speed":0,"Course":171,"Altitude":736,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,5980],"Bits":"10000000"},"Capabilities":null,"MBits":"101","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"'||3","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N6BG-1","destination":"S6QTUX","path":[]},"payload":{"type":"position","comment":"'||3","latitude_deg":36.24305311355312,"longitude_deg":-115.27779304029303,"ambiguity":0,"symbol":{"table_id":"/","code":"R"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":171},"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,5980],"digital":[true,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-431","title":"TestMicEBase91TelemetryDAOConfusing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L102","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!wEU!![S|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":86,"Vals":[3328,0,5328,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":86,"analog":[3328,0,5328,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"FAP-432","title":"TestTelemetryClassic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L12","packet":"SRCCALL>APRS:T#324,000,038,255,.12,50.12,01000001","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":324,"Vals":[0,38,255,0.12,50.12],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":324,"analog":[0,38,255,0.12,50.12],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-433","title":"TestTelemetryRelaxed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L43","packet":"SRCCALL>APRS:T#1,-1,2147483647,-2147483648,0.000001,-0.0000001,01000001 comment","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[-1,2147483647,-2147483648,1e-06,-1e-07],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[-1,2147483647,-2147483648,1e-06,-1e-07],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-434","title":"TestTelemetryShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L71","packet":"SRCCALL>APRS:T#001,42","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[42,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[42,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-435","title":"TestTelemetryUndefinedMiddle","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L101","packet":"SRCCALL>APRS:T#1,1,,3,,5","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[1,null,3,null,5],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[1,null,3,null,5]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-436","title":"TestTelemetryPartiallyCorrect","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L140","packet":"SRCCALL>APRS:T#1,1,f,3","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[1,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[1,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-437","title":"TestTelemetryInvalidDash","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L239","packet":"SRCCALL>APRS:T#1,1,-,3","outcome":"reject","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: tlm_inv: invalid telemetry value: -"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRCCALL>APRS:T#1,1,-,3"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-438","title":"TestTelemetryInvalidTrailingDot","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L250","packet":"SRCCALL>APRS:T#1,1,-1.,3","outcome":"reject","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: tlm_inv: invalid telemetry value: -1."},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRCCALL>APRS:T#1,1,-1.,3"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-439","title":"TestTelemetryParameterMessage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L264","packet":"SRCCALL>APRS::N0CALL-10:PARM.Vin,Rx1h,Dg1h,Eff1h,EffTo,O1,O2,O3,O4,I1,I2,I3,I4","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL-10","Text":"PARM.Vin,Rx1h,Dg1h,Eff1h,EffTo,O1,O2,O3,O4,I1,I2,I3,I4","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-10","definition":{"type":"telemetry_parameters","channels":["Vin","Rx1h","Dg1h","Eff1h","EffTo","O1","O2","O3","O4","I1","I2","I3","I4"]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"FAP-440","title":"TestTelemetryParameterMessageTypes/PARM","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :PARM.Vin,Rx1h","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"PARM.Vin,Rx1h","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_parameters","channels":["Vin","Rx1h"]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"FAP-441","title":"TestTelemetryParameterMessageTypes/UNIT","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :UNIT.Volt,Pkt/h","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"UNIT.Volt,Pkt/h","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_units","channels":["Volt","Pkt/h"]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"FAP-442","title":"TestTelemetryParameterMessageTypes/EQNS","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :EQNS.0,0.075,0,0,1,0","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"EQNS.0,0.075,0,0,1,0","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_equations","coefficients":[{"a":0.0,"b":0.075,"c":0.0},{"a":0.0,"b":1.0,"c":0.0}]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"FAP-443","title":"TestTelemetryParameterMessageTypes/BITS","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :BITS.11111111,My station","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"BITS.11111111,My station","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_bits","sense":[true,true,true,true,true,true,true,true],"project_title":"My station"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"FAP-444","title":"TestTelemetryParameterMessageTypes/parm_lowercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :parm.Vin,Rx1h","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"parm.Vin,Rx1h","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_parameters","channels":["Vin","Rx1h"]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.type":"message","$.payload.definition":{"missing":true}}}} +{"id":"FAP-428","title":"TestMicEBase91Telemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-429","title":"TestMicEBase91Telemetry1Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L50","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-430","title":"TestMicEBase91TelemetryHarder","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L84","packet":"N6BG-1>S6QTUX:`+,^l!cR/'\";z}||ss11223344bb!\"|!w>f!|3","outcome":"accept","source_expected":{"fap_header":{"source":"N6BG-1","destination":"S6QTUX","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":36.24305311355312,"Longitude":-115.27779304029303,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"R","Speed":0,"Course":171,"Altitude":736,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,5980],"Bits":"10000000"},"Capabilities":null,"MBits":"101","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"'||3","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N6BG-1","destination":"S6QTUX","path":[]},"payload":{"type":"mic_e","comment":"'||3","latitude_deg":36.24305311355312,"longitude_deg":-115.27779304029303,"ambiguity":0,"symbol":{"table_id":"/","code":"R"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":171},"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,5980],"digital":[true,false,false,false,false,false,false,false]},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":736}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-431","title":"TestMicEBase91TelemetryDAOConfusing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L102","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!wEU!![S|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":86,"Vals":[3328,0,5328,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":86,"analog":[3328,0,5328,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-432","title":"TestTelemetryClassic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L12","packet":"SRCCALL>APRS:T#324,000,038,255,.12,50.12,01000001","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":324,"Vals":[0,38,255,0.12,50.12],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":324,"analog":[0,38,255,0.12,50.12],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-433","title":"TestTelemetryRelaxed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L43","packet":"SRCCALL>APRS:T#1,-1,2147483647,-2147483648,0.000001,-0.0000001,01000001 comment","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[-1,2147483647,-2147483648,1e-06,-1e-07],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[-1,2147483647,-2147483648,1e-06,-1e-07],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-434","title":"TestTelemetryShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L71","packet":"SRCCALL>APRS:T#001,42","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[42,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[42,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-435","title":"TestTelemetryUndefinedMiddle","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L101","packet":"SRCCALL>APRS:T#1,1,,3,,5","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[1,null,3,null,5],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[1,null,3,null,5]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-436","title":"TestTelemetryPartiallyCorrect","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L140","packet":"SRCCALL>APRS:T#1,1,f,3","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[1,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[1,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-437","title":"TestTelemetryInvalidDash","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L239","packet":"SRCCALL>APRS:T#1,1,-,3","outcome":"reject","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: tlm_inv: invalid telemetry value: -"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRCCALL>APRS:T#1,1,-,3"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-438","title":"TestTelemetryInvalidTrailingDot","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L250","packet":"SRCCALL>APRS:T#1,1,-1.,3","outcome":"reject","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: tlm_inv: invalid telemetry value: -1."},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRCCALL>APRS:T#1,1,-1.,3"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-439","title":"TestTelemetryParameterMessage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L264","packet":"SRCCALL>APRS::N0CALL-10:PARM.Vin,Rx1h,Dg1h,Eff1h,EffTo,O1,O2,O3,O4,I1,I2,I3,I4","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL-10","Text":"PARM.Vin,Rx1h,Dg1h,Eff1h,EffTo,O1,O2,O3,O4,I1,I2,I3,I4","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-10","definition":{"type":"telemetry_parameters","channels":["Vin","Rx1h","Dg1h","Eff1h","EffTo","O1","O2","O3","O4","I1","I2","I3","I4"]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-440","title":"TestTelemetryParameterMessageTypes/PARM","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :PARM.Vin,Rx1h","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"PARM.Vin,Rx1h","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_parameters","channels":["Vin","Rx1h",null,null,null,null,null,null,null,null,null,null,null]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-441","title":"TestTelemetryParameterMessageTypes/UNIT","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :UNIT.Volt,Pkt/h","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"UNIT.Volt,Pkt/h","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_units","channels":["Volt","Pkt/h",null,null,null,null,null,null,null,null,null,null,null]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-442","title":"TestTelemetryParameterMessageTypes/EQNS","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :EQNS.0,0.075,0,0,1,0","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"EQNS.0,0.075,0,0,1,0","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_equations","coefficients":[{"a":0.0,"b":0.075,"c":0.0},{"a":0.0,"b":1.0,"c":0.0}]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-443","title":"TestTelemetryParameterMessageTypes/BITS","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :BITS.11111111,My station","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"BITS.11111111,My station","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_bits","sense":[true,true,true,true,true,true,true,true],"project_title":"My station"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-444","title":"TestTelemetryParameterMessageTypes/parm_lowercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :parm.Vin,Rx1h","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"parm.Vin,Rx1h","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_parameters","channels":["Vin","Rx1h",null,null,null,null,null,null,null,null,null,null,null]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-445","title":"TestRegularMessageNotTelemetryMessage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L308","packet":"SRCCALL>APRS::N0CALL :Hello world","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Hello world","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Hello world","message_id":null}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-446","title":"TestTimestampRawDHMzUTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L19","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@151811z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"151811","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" {UIV32N}"}}} -{"id":"FAP-447","title":"TestTimestampDecodedDHMzUTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L35","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@151811z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" {UIV32N}"}}} -{"id":"FAP-448","title":"TestTimestampRawHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L50","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/055816h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"055816","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-449","title":"TestTimestampDecodedHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L66","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/181144h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-450","title":"TestTimestampRawDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L81","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/060642/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"060642","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-451","title":"TestTimestampDecodedDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L98","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/152011/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-452","title":"TestTimestampFutureRollback/DDHHMMz_UTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@162359z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" {UIV32N}"}}} -{"id":"FAP-453","title":"TestTimestampFutureRollback/DDHHMM/_local","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/162359/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-454","title":"TestTimestampInvalidLocation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L224","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@000000z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.type":"malformed","$.header":{"missing":true},"$.payload":{"missing":true}}}} -{"id":"FAP-455","title":"TestTimestampInvalidObject","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L247","packet":"SRC>APRS,TCPIP*:;TestObj *000000z4903.50N/07201.75W-Test","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"TestObj ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Test","Warnings":[{"Code":"timestamp_inv","Msg":"invalid object timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRC","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"object","comment":"Test","name":"TestObj ","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-456","title":"TestTimestampInvalidStatus","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L270","packet":"SRC>APRS,TCPIP*:>000000zStatus text here","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"Status text here","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRC","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"status","text":"Status text here"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.type":"malformed","$.header":{"missing":true},"$.payload":{"missing":true}}}} -{"id":"FAP-457","title":"TestUncompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_moving_test.go#L16","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: base91 comment telemetry"}} -{"id":"FAP-458","title":"TestUncompressedNortheast","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L14","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"/RELAY,WIDE, OH2AP Jarvenpaa"}}} +{"id":"FAP-446","title":"TestTimestampRawDHMzUTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L19","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@151811z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"151811","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-447","title":"TestTimestampDecodedDHMzUTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L35","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@151811z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-448","title":"TestTimestampRawHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L50","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/055816h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"055816","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-449","title":"TestTimestampDecodedHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L66","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/181144h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-450","title":"TestTimestampRawDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L81","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/060642/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"060642","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-451","title":"TestTimestampDecodedDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L98","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/152011/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-452","title":"TestTimestampFutureRollback/DDHHMMz_UTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@162359z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-453","title":"TestTimestampFutureRollback/DDHHMM/_local","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/162359/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-454","title":"TestTimestampInvalidLocation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L224","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@000000z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-455","title":"TestTimestampInvalidObject","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L247","packet":"SRC>APRS,TCPIP*:;TestObj *000000z4903.50N/07201.75W-Test","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"TestObj ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Test","Warnings":[{"Code":"timestamp_inv","Msg":"invalid object timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRC","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"object","comment":"Test","name":"TestObj","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-456","title":"TestTimestampInvalidStatus","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L270","packet":"SRC>APRS,TCPIP*:>000000zStatus text here","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"Status text here","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRC","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"status","text":"Status text here"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-457","title":"TestUncompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_moving_test.go#L16","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-458","title":"TestUncompressedNortheast","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L14","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-459","title":"TestUncompressedSouthwest","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L64","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51S/02505.68W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-460","title":"TestUncompressedAmbiguity3","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L82","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!602 . S/0250 . W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.416666666666664,"Longitude":-25.083333333333332,"PosAmbiguity":3,"PosResolution":18520,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.416666666666664,"longitude_deg":-25.083333333333332,"ambiguity":3,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"FAP-461","title":"TestUncompressedAmbiguity4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L103","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!60 . S/025 . W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.5,"Longitude":-25.5,"PosAmbiguity":4,"PosResolution":111120,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.5,"longitude_deg":-25.5,"ambiguity":4,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"FAP-462","title":"TestUncompressedAmbiguityUnbalanced","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L124","packet":"SRC>APRS,TCPIP*,qAC,T2POLAND:;SPBLTZ *010020z5210. N/021 . E? Comment","outcome":"reject","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2POLAND","WasDigied":false}]},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":52.175,"Longitude":null,"PosAmbiguity":2,"PosResolution":null,"SymbolTable":"/","SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"SPBLTZ ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: loc_amb_inv: invalid position ambiguity: longitude has spaces in non-ambiguous digits"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"original_wire":"SRC>APRS,TCPIP*,qAC,T2POLAND:;SPBLTZ *010020z5210. N/021 . E? Comment"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-463","title":"TestUncompressedAmbiguityLonMoreDigits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L139","packet":"OH2RDP-1>BEACON-15:!5210.5 N/02101.73E#Comment here","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.17583333333334,"Longitude":21.029166666666665,"PosAmbiguity":1,"PosResolution":185.2,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Comment here","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"Comment here","messaging":false,"latitude_deg":52.17583333333334,"longitude_deg":21.029166666666665,"ambiguity":1,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"FAP-464","title":"TestUncompressedLastResort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L163","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:hoponassualku!6028.51S/02505.68W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-465","title":"TestUncompressedWxSymbolComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L185","packet":"A0RID-1>KC0PID-7,WIDE1,qAR,NX0R-6:=3851.38N/09908.75W_Home of KA0RID","outcome":"accept","source_expected":{"fap_header":{"source":"A0RID-1","destination":"KC0PID-7","digipeaters":[{"Call":"WIDE1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"NX0R-6","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.85633333333333,"Longitude":-99.14583333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"A0RID-1","destination":"KC0PID-7","path":[{"address":"WIDE1","repeated":false},{"address":"qAR","repeated":false},{"address":"NX0R-6","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":38.85633333333333,"longitude_deg":-99.14583333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"Home of KA0RID","$.payload.extensions.weather":null}}} -{"id":"FAP-466","title":"TestUncompressedWhitespaceTrimming","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L207","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220 RELAY,WIDE, OH2AP Jarvenpaa \t ","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" RELAY,WIDE, OH2AP Jarvenpaa \t "}}} -{"id":"FAP-467","title":"TestPHGRA","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L223","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG72205/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"72205","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null,"rate_per_hour":5}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"5/RELAY,WIDE, OH2AP Jarvenpaa","$.payload.extensions.phg.rate_per_hour":null}}} -{"id":"FAP-468","title":"TestPHGRALetterSuffix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L239","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220Z/some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220Z","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"Z/some comment"}}} +{"id":"FAP-460","title":"TestUncompressedAmbiguity3","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L82","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!602 . S/0250 . W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.416666666666664,"Longitude":-25.083333333333332,"PosAmbiguity":3,"PosResolution":18520,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.416666666666664,"longitude_deg":-25.083333333333332,"ambiguity":3,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-461","title":"TestUncompressedAmbiguity4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L103","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!60 . S/025 . W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.5,"Longitude":-25.5,"PosAmbiguity":4,"PosResolution":111120,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.5,"longitude_deg":-25.5,"ambiguity":4,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-462","title":"TestUncompressedAmbiguityUnbalanced","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L124","packet":"SRC>APRS,TCPIP*,qAC,T2POLAND:;SPBLTZ *010020z5210. N/021 . E? Comment","outcome":"reject","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2POLAND","WasDigied":false}]},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":52.175,"Longitude":null,"PosAmbiguity":2,"PosResolution":null,"SymbolTable":"/","SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"SPBLTZ ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: loc_amb_inv: invalid position ambiguity: longitude has spaces in non-ambiguous digits"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"original_wire":"SRC>APRS,TCPIP*,qAC,T2POLAND:;SPBLTZ *010020z5210. N/021 . E? Comment"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-463","title":"TestUncompressedAmbiguityLonMoreDigits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L139","packet":"OH2RDP-1>BEACON-15:!5210.5 N/02101.73E#Comment here","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.17583333333334,"Longitude":21.029166666666665,"PosAmbiguity":1,"PosResolution":185.2,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Comment here","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"Comment here","messaging":false,"latitude_deg":52.17583333333334,"longitude_deg":21.029166666666665,"ambiguity":1,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-464","title":"TestUncompressedLastResort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L163","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:hoponassualku!6028.51S/02505.68W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-465","title":"TestUncompressedWxSymbolComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L185","packet":"A0RID-1>KC0PID-7,WIDE1,qAR,NX0R-6:=3851.38N/09908.75W_Home of KA0RID","outcome":"accept","source_expected":{"fap_header":{"source":"A0RID-1","destination":"KC0PID-7","digipeaters":[{"Call":"WIDE1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"NX0R-6","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.85633333333333,"Longitude":-99.14583333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"A0RID-1","destination":"KC0PID-7","path":[{"address":"WIDE1","repeated":false},{"address":"qAR","repeated":false},{"address":"NX0R-6","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":38.85633333333333,"longitude_deg":-99.14583333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-466","title":"TestUncompressedWhitespaceTrimming","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L207","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220 RELAY,WIDE, OH2AP Jarvenpaa \t ","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-467","title":"TestPHGRA","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L223","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG72205/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"72205","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null,"rate_per_hour":5}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-468","title":"TestPHGRALetterSuffix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L239","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220Z/some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220Z","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-469","title":"TestPHGInvalidNotParsed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L255","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7/20some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"PHG7/20some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"PHG7/20some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-470","title":"TestRNG","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L267","packet":"OH2RDP-1>BEACON-15:!6028.51N/02505.68E#RNG0050some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":80.4672,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"range":{"miles":50.0}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-471","title":"TestUncompressedTimestampAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L286","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=000079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":"13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" 13.8V 15CYB1RUS-9 Mobile Tracker"}}} -{"id":"FAP-472","title":"TestUncompressedNegativeAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L308","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=-00079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":-24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":"13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":-79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":" 13.8V 15CYB1RUS-9 Mobile Tracker"}}} +{"id":"FAP-471","title":"TestUncompressedTimestampAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L286","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=000079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":"13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-472","title":"TestUncompressedNegativeAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L308","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=-00079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":-24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":"13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":-79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-473","title":"TestUncompressedBasicYC0SHR","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L324","packet":"YC0SHR>APU25N,TCPIP*,qAC,ALDIMORI:=0606.23S/10644.61E-GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","outcome":"accept","source_expected":{"fap_header":{"source":"YC0SHR","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"ALDIMORI","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.103833333333333,"Longitude":106.7435,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"YC0SHR","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"ALDIMORI","repeated":false}]},"payload":{"type":"position","comment":"GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","messaging":true,"latitude_deg":-6.103833333333333,"longitude_deg":106.7435,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-474","title":"TestWxBasic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L13","packet":"OH2RDP-1>BEACON-15,WIDE2-1,qAo,OH2MQK-1:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":0.89408,"unit":"m/s"},"gust":{"value":1.78816,"unit":"m/s"},"temperature":{"value":3.888888888888889,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":1.016,"unit":"mm"},"rain_since_midnight":{"value":0.508,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"FAP-475","title":"TestWxWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L77","packet":"OH2GAX>APU25N,TCPIP*,qAC,OH2GAX:@101317z6024.78N/02503.97E_156/001g005t038r000p000P000h91b10093/type ?sade for more wx info","outcome":"accept","source_expected":{"fap_header":{"source":"OH2GAX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"OH2GAX","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.413,"Longitude":25.066166666666668,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":156,"WindSpeed":0.44704,"WindGust":2.2352,"Temp":3.3333333333333335,"TempIn":null,"Humidity":91,"HumidityIn":null,"Pressure":1009.3,"Rain1h":0,"Rain24h":0,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"/type ?sade for more wx info","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"OH2GAX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"OH2GAX","repeated":false}]},"payload":{"type":"position","comment":"/type ?sade for more wx info","messaging":true,"latitude_deg":60.413,"longitude_deg":25.066166666666668,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":156,"unit":"degrees"},"wind_speed":{"value":0.44704,"unit":"m/s"},"gust":{"value":2.2352,"unit":"m/s"},"temperature":{"value":3.3333333333333335,"unit":"celsius"},"humidity":{"value":91,"unit":"percent"},"pressure":{"value":1009.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":0,"unit":"mm"},"rain_since_midnight":{"value":0,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"FAP-476","title":"TestWxThirdWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L134","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_068/001g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":68,"WindSpeed":0.44704,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":68,"unit":"degrees"},"wind_speed":{"value":0.44704,"unit":"m/s"},"gust":{"value":0.44704,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":5.08,"unit":"mm"},"rain_since_midnight":{"value":5.08,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"FAP-477","title":"TestWxNoWindDirectionCourse","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L191","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"gust":{"value":0.44704,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":5.08,"unit":"mm"},"rain_since_midnight":{"value":5.08,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"FAP-478","title":"TestWxNoWindNoTemp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L209","packet":"N0CALL>APJLSX,TCPIP*,qAS,KG4EXY:@061750z3849.10N/07725.10W_.../...g...t...r008p011P011b.....h..","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APJLSX","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAS","WasDigied":false},{"Call":"KG4EXY","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.818333333333335,"Longitude":-77.41833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":2.032,"Rain24h":2.794,"RainMidnight":2.794,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APJLSX","path":[{"address":"TCPIP","repeated":true},{"address":"qAS","repeated":false},{"address":"KG4EXY","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":38.818333333333335,"longitude_deg":-77.41833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"rain_1h":{"value":2.032,"unit":"mm"},"rain_24h":{"value":2.794,"unit":"mm"},"rain_since_midnight":{"value":2.794,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"FAP-479","title":"TestWxSpaceInWindGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L227","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":5.08,"unit":"mm"},"rain_since_midnight":{"value":5.08,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"FAP-480","title":"TestWxWaterLevel/positive_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F0123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":3.7490400000000004,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-481","title":"TestWxWaterLevel/negative_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F-042","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":-1.2801600000000002,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-482","title":"TestWxWaterLevel/missing_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F....","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-483","title":"TestWxRadiation/12_microsieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":12000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-484","title":"TestWxRadiation/45_millisieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X456","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":45000000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-485","title":"TestWxRadiation/zero_exponent","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X100","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":10,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-486","title":"TestWxRadiation/missing_radiation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-487","title":"TestWxBatteryVoltage/battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V128","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":12.8,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-488","title":"TestWxBatteryVoltage/missing_battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-489","title":"TestWxAllFieldsMissing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L435","packet":"N0CALL>APRS,TCPIP*:_12032359c...s...g...t...r...p...P...h..b.....#...Os...L...F....X...V...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":""}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-490","title":"TestWxPositionlessWithSnowfall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L492","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:_12032359c180s001g002t033r010p040P080#456b09860h98Os010L500","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":180,"WindSpeed":0.44704,"WindGust":0.89408,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":2.54,"Rain24h":10.16,"RainMidnight":20.32,"Snow24h":2.54,"Luminosity":500,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":180,"unit":"degrees"},"wind_speed":{"value":0.44704,"unit":"m/s"},"gust":{"value":0.89408,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":2.54,"unit":"mm"},"rain_24h":{"value":10.16,"unit":"mm"},"rain_since_midnight":{"value":20.32,"unit":"mm"},"snow_24h":{"value":2.54,"unit":"mm"},"luminosity":{"value":500,"unit":"W/m2"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-491","title":"TestULTW","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L13","packet":"N0CALL-14>APN391,WIDE2-1,qAo,IGATE-3:$ULTW0053002D028D02FA2813000D87BD000103E8015703430010000C","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APN391","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE-3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":64,"WindSpeed":0.3,"WindGust":2.3,"Temp":18.5,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1025.9,"Rain1h":null,"Rain24h":null,"RainMidnight":4.1,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APN391","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE-3","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":64,"unit":"degrees"},"wind_speed":{"value":0.3,"unit":"m/s"},"gust":{"value":2.3,"unit":"m/s"},"temperature":{"value":18.5,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1025.9,"unit":"hPa"},"rain_since_midnight":{"value":4.1,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} -{"id":"FAP-492","title":"TestULTWBelowZero","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L61","packet":"N0CALL>APN391,qAo,IGATE-1:$ULTW00000000FFEA0000296F000A9663000103E80016025D","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APN391","digipeaters":[{"Call":"qAo","WasDigied":false},{"Call":"IGATE-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":null,"WindGust":0,"Temp":-19,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1060.7,"Rain1h":null,"Rain24h":null,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APN391","path":[{"address":"qAo","repeated":false},{"address":"IGATE-1","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":-19,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1060.7,"unit":"hPa"},"rain_since_midnight":{"value":0,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} -{"id":"FAP-493","title":"TestULTWLogging","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L109","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D000028710166--------0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":null,"HumidityIn":null,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} -{"id":"FAP-494","title":"TestULTWLoggingHumidity","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L165","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D00002871016602BC031E0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":70,"HumidityIn":79,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"humidity":{"value":70,"unit":"percent"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} -{"id":"FAP-495","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L33","packet":"N0CALL-1>APRS,DIGI1,DIGI2*:)AID #2!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":[{"Call":"DIGI1","WasDigied":false},{"Call":"DIGI2","WasDigied":true}]},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[{"address":"DIGI1","repeated":false},{"address":"DIGI2","repeated":true}]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-496","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L41","packet":"N0CALL>APRS:T#324,000,038,255,.12,50.12,01000001","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":324,"Vals":[0,38,255,0.12,50.12],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":324,"analog":[0,38,255,0.12,50.12],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-497","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L50","packet":"N0CALL-1>BEACON-15,WIDE2-1,qAo,N0CALL-2:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125L500F0123X123V128XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"N0CALL-2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":500,"WaterLevel":3.7490400000000004,"Radiation":12000,"BatteryVoltage":12.8,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"N0CALL-2","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":0.89408,"unit":"m/s"},"gust":{"value":1.78816,"unit":"m/s"},"temperature":{"value":3.888888888888889,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":1.016,"unit":"mm"},"rain_since_midnight":{"value":0.508,"unit":"mm"},"luminosity":{"value":500,"unit":"W/m2"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} +{"id":"FAP-474","title":"TestWxBasic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L13","packet":"OH2RDP-1>BEACON-15,WIDE2-1,qAo,OH2MQK-1:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":0.89408,"unit":"m/s"},"gust":{"value":1.78816,"unit":"m/s"},"temperature":{"value":3.888888888888889,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":1.016,"unit":"mm"},"rain_since_midnight":{"value":0.508,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-475","title":"TestWxWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L77","packet":"OH2GAX>APU25N,TCPIP*,qAC,OH2GAX:@101317z6024.78N/02503.97E_156/001g005t038r000p000P000h91b10093/type ?sade for more wx info","outcome":"accept","source_expected":{"fap_header":{"source":"OH2GAX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"OH2GAX","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.413,"Longitude":25.066166666666668,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":156,"WindSpeed":0.44704,"WindGust":2.2352,"Temp":3.3333333333333335,"TempIn":null,"Humidity":91,"HumidityIn":null,"Pressure":1009.3,"Rain1h":0,"Rain24h":0,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"/type ?sade for more wx info","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"OH2GAX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"OH2GAX","repeated":false}]},"payload":{"type":"position","comment":"/type ?sade for more wx info","messaging":true,"latitude_deg":60.413,"longitude_deg":25.066166666666668,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":156,"unit":"degrees"},"wind_speed":{"value":0.44704,"unit":"m/s"},"gust":{"value":2.2352,"unit":"m/s"},"temperature":{"value":3.3333333333333335,"unit":"celsius"},"humidity":{"value":91,"unit":"percent"},"pressure":{"value":1009.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":0,"unit":"mm"},"rain_since_midnight":{"value":0,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-476","title":"TestWxThirdWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L134","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_068/001g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":68,"WindSpeed":0.44704,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":68,"unit":"degrees"},"wind_speed":{"value":0.44704,"unit":"m/s"},"gust":{"value":0.44704,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":5.08,"unit":"mm"},"rain_since_midnight":{"value":5.08,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-477","title":"TestWxNoWindDirectionCourse","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L191","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"gust":{"value":0.44704,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":5.08,"unit":"mm"},"rain_since_midnight":{"value":5.08,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-478","title":"TestWxNoWindNoTemp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L209","packet":"N0CALL>APJLSX,TCPIP*,qAS,KG4EXY:@061750z3849.10N/07725.10W_.../...g...t...r008p011P011b.....h..","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APJLSX","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAS","WasDigied":false},{"Call":"KG4EXY","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.818333333333335,"Longitude":-77.41833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":2.032,"Rain24h":2.794,"RainMidnight":2.794,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APJLSX","path":[{"address":"TCPIP","repeated":true},{"address":"qAS","repeated":false},{"address":"KG4EXY","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":38.818333333333335,"longitude_deg":-77.41833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"rain_1h":{"value":2.032,"unit":"mm"},"rain_24h":{"value":2.794,"unit":"mm"},"rain_since_midnight":{"value":2.794,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-479","title":"TestWxSpaceInWindGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L227","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":5.08,"unit":"mm"},"rain_since_midnight":{"value":5.08,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-480","title":"TestWxWaterLevel/positive_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F0123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":3.7490400000000004,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-481","title":"TestWxWaterLevel/negative_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F-042","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":-1.2801600000000002,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-482","title":"TestWxWaterLevel/missing_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F....","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-483","title":"TestWxRadiation/12_microsieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":12000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-484","title":"TestWxRadiation/45_millisieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X456","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":45000000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-485","title":"TestWxRadiation/zero_exponent","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X100","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":10,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-486","title":"TestWxRadiation/missing_radiation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-487","title":"TestWxBatteryVoltage/battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V128","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":12.8,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-488","title":"TestWxBatteryVoltage/missing_battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-489","title":"TestWxAllFieldsMissing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L435","packet":"N0CALL>APRS,TCPIP*:_12032359c...s...g...t...r...p...P...h..b.....#...Os...L...F....X...V...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":""}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-490","title":"TestWxPositionlessWithSnowfall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L492","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:_12032359c180s001g002t033r010p040P080#456b09860h98Os010L500","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":180,"WindSpeed":0.44704,"WindGust":0.89408,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":2.54,"Rain24h":10.16,"RainMidnight":20.32,"Snow24h":2.54,"Luminosity":500,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":180,"unit":"degrees"},"wind_speed":{"value":0.44704,"unit":"m/s"},"gust":{"value":0.89408,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":2.54,"unit":"mm"},"rain_24h":{"value":10.16,"unit":"mm"},"rain_since_midnight":{"value":20.32,"unit":"mm"},"snow_24h":{"value":2.54,"unit":"mm"},"luminosity":{"value":500,"unit":"W/m2"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-491","title":"TestULTW","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L13","packet":"N0CALL-14>APN391,WIDE2-1,qAo,IGATE-3:$ULTW0053002D028D02FA2813000D87BD000103E8015703430010000C","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APN391","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE-3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":64,"WindSpeed":0.3,"WindGust":2.3,"Temp":18.5,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1025.9,"Rain1h":null,"Rain24h":null,"RainMidnight":4.1,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APN391","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE-3","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":64,"unit":"degrees"},"wind_speed":{"value":0.3,"unit":"m/s"},"gust":{"value":2.3,"unit":"m/s"},"temperature":{"value":18.5,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1025.9,"unit":"hPa"},"rain_since_midnight":{"value":4.1,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-492","title":"TestULTWBelowZero","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L61","packet":"N0CALL>APN391,qAo,IGATE-1:$ULTW00000000FFEA0000296F000A9663000103E80016025D","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APN391","digipeaters":[{"Call":"qAo","WasDigied":false},{"Call":"IGATE-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":null,"WindGust":0,"Temp":-19,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1060.7,"Rain1h":null,"Rain24h":null,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APN391","path":[{"address":"qAo","repeated":false},{"address":"IGATE-1","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":-19,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1060.7,"unit":"hPa"},"rain_since_midnight":{"value":0,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-493","title":"TestULTWLogging","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L109","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D000028710166--------0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":null,"HumidityIn":null,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-494","title":"TestULTWLoggingHumidity","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L165","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D00002871016602BC031E0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":70,"HumidityIn":79,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"humidity":{"value":70,"unit":"percent"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-495","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L33","packet":"N0CALL-1>APRS,DIGI1,DIGI2*:)AID #2!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":[{"Call":"DIGI1","WasDigied":false},{"Call":"DIGI2","WasDigied":true}]},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[{"address":"DIGI1","repeated":false},{"address":"DIGI2","repeated":true}]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-496","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L41","packet":"N0CALL>APRS:T#324,000,038,255,.12,50.12,01000001","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":324,"Vals":[0,38,255,0.12,50.12],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":324,"analog":[0,38,255,0.12,50.12],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-497","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L50","packet":"N0CALL-1>BEACON-15,WIDE2-1,qAo,N0CALL-2:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125L500F0123X123V128XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"N0CALL-2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":500,"WaterLevel":3.7490400000000004,"Radiation":12000,"BatteryVoltage":12.8,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"N0CALL-2","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":0.89408,"unit":"m/s"},"gust":{"value":1.78816,"unit":"m/s"},"temperature":{"value":3.888888888888889,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":1.016,"unit":"mm"},"rain_since_midnight":{"value":0.508,"unit":"mm"},"luminosity":{"value":500,"unit":"W/m2"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} {"id":"FAP-498","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L99","packet":"N0CALL-14>APU25N,WIDE2-2,qAR,LANSNG:>051421>>Nashville,TN>>Toronto,ON","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"051421>>Nashville,TN>>Toronto,ON","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"status","text":"051421>>Nashville,TN>>Toronto,ON"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-499","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L121","packet":"N0CALL-1>BEACON-15,N0CALL-2*,WIDE:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"BEACON-15","digipeaters":[{"Call":"N0CALL-2","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"BEACON-15","path":[{"address":"N0CALL-2","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"/RELAY,WIDE, OH2AP Jarvenpaa"}}} -{"id":"FAP-500","title":"Supplementary literal / removed CLI log timestamp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/parse-speed-test/main_test.go#L12","packet":"N0CALL-1>APRS:;LEADER *000045z4903.50N/07201.75W>088/036","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER *","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_inv: invalid object alive/killed indicator: 0"},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"removed CLI log timestamp. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"original_wire":"N0CALL-1>APRS:;LEADER *000045z4903.50N/07201.75W>088/036"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"FAP-501","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L175","packet":"OH7LZB-2>APRS,WIDE1-1,WIDE2-1,qAo,OH7LZB:!6128.23N/02353.52E-PHG2360/Testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-2","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":61.4705,"Longitude":23.892,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"2360","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Testing","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"OH7LZB-2","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"position","comment":"Testing","messaging":false,"latitude_deg":61.4705,"longitude_deg":23.892,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"extensions":{"phg":{"power_w":4,"height_haat_ft":80,"gain_dbi":6,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"fields","reason":"Explicit FAP compatibility difference; source defaults/options or text normalization differ.","allowed_actual":{"$.payload.comment":"/Testing"}}} +{"id":"FAP-499","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L121","packet":"N0CALL-1>BEACON-15,N0CALL-2*,WIDE:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"BEACON-15","digipeaters":[{"Call":"N0CALL-2","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"BEACON-15","path":[{"address":"N0CALL-2","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-500","title":"Supplementary literal / removed CLI log timestamp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/parse-speed-test/main_test.go#L12","packet":"N0CALL-1>APRS:;LEADER *000045z4903.50N/07201.75W>088/036","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER *","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_inv: invalid object alive/killed indicator: 0"},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"removed CLI log timestamp. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"original_wire":"N0CALL-1>APRS:;LEADER *000045z4903.50N/07201.75W>088/036"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-501","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L175","packet":"OH7LZB-2>APRS,WIDE1-1,WIDE2-1,qAo,OH7LZB:!6128.23N/02353.52E-PHG2360/Testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-2","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":61.4705,"Longitude":23.892,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"2360","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Testing","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"OH7LZB-2","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"position","comment":"Testing","messaging":false,"latitude_deg":61.4705,"longitude_deg":23.892,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"extensions":{"phg":{"power_w":4,"height_haat_ft":80,"gain_dbi":6,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-502","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L25","packet":"N0CALL>APRS:!6304.03N/02739.63E#","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-503","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L30","packet":"N0CALL>APRS:!2338.56S/04647.82W#","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-23.642666666666667,"Longitude":-46.797,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-23.642666666666667,"longitude_deg":-46.797,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-504","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L35","packet":"N0CALL>APRS:!2259.99N/17759.99W#","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":22.999833333333335,"Longitude":-177.99983333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":22.999833333333335,"longitude_deg":-177.99983333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-505","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L40","packet":"N0CALL>APRS:!5221.84N/01406.27E>353/045/A=000314","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.364,"Longitude":14.1045,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":83.34,"Course":353,"Altitude":95.7072,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.364,"longitude_deg":14.1045,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":45.0,"course_deg":353},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":314.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-506","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L45","packet":"N0CALL>APRS:!5221.84N/01406.27E>/A=000314","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.364,"Longitude":14.1045,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":95.7072,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.364,"longitude_deg":14.1045,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":314.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-507","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L50","packet":"N0CALL>APRS:!5221.8 N/01406.2 E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.36416666666667,"Longitude":14.104166666666666,"PosAmbiguity":1,"PosResolution":185.2,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.36416666666667,"longitude_deg":14.104166666666666,"ambiguity":1,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"FAP-508","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L55","packet":"N0CALL>APRS:!5221. N/01406. E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.358333333333334,"Longitude":14.108333333333333,"PosAmbiguity":2,"PosResolution":1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.358333333333334,"longitude_deg":14.108333333333333,"ambiguity":2,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"FAP-509","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L60","packet":"N0CALL>APRS:!522 . N/0140 . E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.416666666666664,"Longitude":14.083333333333334,"PosAmbiguity":3,"PosResolution":18520,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.416666666666664,"longitude_deg":14.083333333333334,"ambiguity":3,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"FAP-510","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L65","packet":"N0CALL>APRS:!52 . N/014 . E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.5,"Longitude":14.5,"PosAmbiguity":4,"PosResolution":111120,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.5,"longitude_deg":14.5,"ambiguity":4,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"FAP-511","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L70","packet":"N0CALL>APRS:!3909.22N/08437.32W>!wjM!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":39.153800366300366,"Longitude":-84.62208058608059,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":39.153800366300366,"longitude_deg":-84.62208058608059,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-512","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L75","packet":"N0CALL>APRS:!3959.99N/08459.99W>!w{{!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":39.99999816849817,"Longitude":-84.99999816849817,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":39.99999816849817,"longitude_deg":-84.99999816849817,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} -{"id":"FAP-513","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L81","packet":"N0CALL>APRS:!4822.38N/01542.88E>321/034/A=000633Comment blah!wr^!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":48.37314835164835,"Longitude":15.714778388278388,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":62.968,"Course":321,"Altitude":192.9384,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"Comment blah","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Comment blah","messaging":false,"latitude_deg":48.37314835164835,"longitude_deg":15.714778388278388,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":34.0,"course_deg":321},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":633.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: !DAO! precision and datum extension"}} +{"id":"FAP-507","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L50","packet":"N0CALL>APRS:!5221.8 N/01406.2 E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.36416666666667,"Longitude":14.104166666666666,"PosAmbiguity":1,"PosResolution":185.2,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.36416666666667,"longitude_deg":14.104166666666666,"ambiguity":1,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-508","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L55","packet":"N0CALL>APRS:!5221. N/01406. E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.358333333333334,"Longitude":14.108333333333333,"PosAmbiguity":2,"PosResolution":1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.358333333333334,"longitude_deg":14.108333333333333,"ambiguity":2,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-509","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L60","packet":"N0CALL>APRS:!522 . N/0140 . E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.416666666666664,"Longitude":14.083333333333334,"PosAmbiguity":3,"PosResolution":18520,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.416666666666664,"longitude_deg":14.083333333333334,"ambiguity":3,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-510","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L65","packet":"N0CALL>APRS:!52 . N/014 . E>","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.5,"Longitude":14.5,"PosAmbiguity":4,"PosResolution":111120,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.5,"longitude_deg":14.5,"ambiguity":4,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-511","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L70","packet":"N0CALL>APRS:!3909.22N/08437.32W>!wjM!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":39.153800366300366,"Longitude":-84.62208058608059,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":39.153800366300366,"longitude_deg":-84.62208058608059,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-512","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L75","packet":"N0CALL>APRS:!3959.99N/08459.99W>!w{{!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":39.99999816849817,"Longitude":-84.99999816849817,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":39.99999816849817,"longitude_deg":-84.99999816849817,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-513","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L81","packet":"N0CALL>APRS:!4822.38N/01542.88E>321/034/A=000633Comment blah!wr^!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":48.37314835164835,"Longitude":15.714778388278388,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":62.968,"Course":321,"Altitude":192.9384,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"Comment blah","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"Comment blah","messaging":false,"latitude_deg":48.37314835164835,"longitude_deg":15.714778388278388,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":34.0,"course_deg":321},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":633.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-514","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L87","packet":"N0CALL>APRS:/123045h6304.03N/02739.63E#","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"123045","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-515","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L93","packet":"N0CALL>APRS:/000000h5221.84N/01406.27E>353/045/A=000314","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.364,"Longitude":14.1045,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":83.34,"Course":353,"Altitude":95.7072,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"000000","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":52.364,"longitude_deg":14.1045,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":45.0,"course_deg":353},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":314.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-516","title":"Supplementary literal / synthetic TNC2 header on expected encoder body","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_encode_test.go#L99","packet":"N0CALL>APRS:=6304.03N/02739.63E#","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"synthetic TNC2 header on expected encoder body. Encoder input coordinates are not asserted as the decoded coordinate; quantization and ambiguity change them.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} diff --git a/packages/aprs/tests/vectors/mic.jsonl b/packages/aprs/tests/vectors/mic.jsonl index 30198ad..6311d75 100644 --- a/packages/aprs/tests/vectors/mic.jsonl +++ b/packages/aprs/tests/vectors/mic.jsonl @@ -1,265 +1,265 @@ -{"id":"MIC-001","title":"Standard position comment 000","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>332UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"332UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"000","position_comment_set":"standard","position_comment":"Emergency","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"332UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"emergency","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-002","title":"Standard position comment 001","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>33RUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"33RUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"001","position_comment_set":"standard","position_comment":"Priority","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"33RUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"priority","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-003","title":"Standard position comment 010","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>3S2UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"3S2UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"010","position_comment_set":"standard","position_comment":"Special","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"3S2UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"special","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-004","title":"Standard position comment 011","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>3SRUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"3SRUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"011","position_comment_set":"standard","position_comment":"Committed","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"3SRUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"committed","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-005","title":"Standard position comment 100","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-006","title":"Standard position comment 101","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>S3RUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S3RUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"101","position_comment_set":"standard","position_comment":"In Service","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S3RUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"in_service","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-007","title":"Standard position comment 110","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>SS2UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"SS2UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"110","position_comment_set":"standard","position_comment":"En Route","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"SS2UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"en_route","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-008","title":"Standard position comment 111","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>SSRUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"SSRUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"111","position_comment_set":"standard","position_comment":"Off Duty","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"SSRUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"off_duty","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-009","title":"Custom position comment 001","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>33CUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"33CUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"001","position_comment_set":"custom","position_comment":"Custom-6","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"33CUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-010","title":"Custom position comment 010","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>3D2UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"3D2UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"010","position_comment_set":"custom","position_comment":"Custom-5","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"3D2UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-011","title":"Custom position comment 011","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>3DCUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"3DCUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"011","position_comment_set":"custom","position_comment":"Custom-4","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"3DCUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-012","title":"Custom position comment 100","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>D32UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"D32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"custom","position_comment":"Custom-3","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"D32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-013","title":"Custom position comment 101","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>D3CUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"D3CUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"101","position_comment_set":"custom","position_comment":"Custom-2","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"D3CUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-014","title":"Custom position comment 110","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>DD2UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"DD2UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"110","position_comment_set":"custom","position_comment":"Custom-1","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"DD2UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-015","title":"Custom position comment 111","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>DDCUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"DDCUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"111","position_comment_set":"custom","position_comment":"Custom-0","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"DDCUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-016","title":"Longitude degrees 000","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`v_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-0.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-0.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-017","title":"Longitude degrees 001","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`w_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-1.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-1.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-018","title":"Longitude degrees 002","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`x_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-2.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-2.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-019","title":"Longitude degrees 003","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`y_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-3.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-3.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-020","title":"Longitude degrees 004","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`z_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-4.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-4.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-021","title":"Longitude degrees 005","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`{_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-5.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-5.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-022","title":"Longitude degrees 006","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`|_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-6.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-6.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-023","title":"Longitude degrees 007","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`}_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-7.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-7.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-024","title":"Longitude degrees 008","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`~_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-8.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-8.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-025","title":"Longitude degrees 009","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`\u007f_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-9.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-9.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-026","title":"Longitude degrees 010","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`&_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-10.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-10.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-027","title":"Longitude degrees 011","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`'_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-11.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-11.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-028","title":"Longitude degrees 012","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-12.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-12.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-029","title":"Longitude degrees 013","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`)_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-13.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-13.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-030","title":"Longitude degrees 014","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`*_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-14.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-14.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-031","title":"Longitude degrees 015","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`+_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-15.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-15.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-032","title":"Longitude degrees 016","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`,_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-16.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-16.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-033","title":"Longitude degrees 017","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`-_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-17.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-17.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-034","title":"Longitude degrees 018","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`._f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-18.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-18.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-035","title":"Longitude degrees 019","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`/_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-19.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-19.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-036","title":"Longitude degrees 020","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`0_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-20.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-20.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-037","title":"Longitude degrees 021","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`1_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-21.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-21.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-038","title":"Longitude degrees 022","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`2_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-22.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-22.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-039","title":"Longitude degrees 023","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`3_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-23.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-23.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-040","title":"Longitude degrees 024","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`4_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-24.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-24.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-041","title":"Longitude degrees 025","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`5_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-25.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-25.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-042","title":"Longitude degrees 026","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`6_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-26.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-26.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-043","title":"Longitude degrees 027","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`7_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-27.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-27.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-044","title":"Longitude degrees 028","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`8_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-28.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-28.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-045","title":"Longitude degrees 029","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`9_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-29.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-29.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-046","title":"Longitude degrees 030","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`:_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-30.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-30.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-047","title":"Longitude degrees 031","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`;_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-31.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-31.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-048","title":"Longitude degrees 032","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`<_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-32.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-32.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-049","title":"Longitude degrees 033","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`=_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-33.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-33.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-050","title":"Longitude degrees 034","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`>_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-34.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-34.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-051","title":"Longitude degrees 035","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`?_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-35.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-35.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-052","title":"Longitude degrees 036","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`@_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-36.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-36.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-053","title":"Longitude degrees 037","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`A_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-37.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-37.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-054","title":"Longitude degrees 038","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`B_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-38.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-38.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-055","title":"Longitude degrees 039","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`C_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-39.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-39.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-056","title":"Longitude degrees 040","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`D_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-40.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-40.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-057","title":"Longitude degrees 041","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`E_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-41.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-41.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-058","title":"Longitude degrees 042","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`F_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-42.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-42.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-059","title":"Longitude degrees 043","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`G_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-43.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-43.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-060","title":"Longitude degrees 044","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`H_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-44.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-44.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-061","title":"Longitude degrees 045","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`I_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-45.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-45.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-062","title":"Longitude degrees 046","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`J_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-46.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-46.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-063","title":"Longitude degrees 047","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`K_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-47.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-47.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-064","title":"Longitude degrees 048","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`L_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-48.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-48.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-065","title":"Longitude degrees 049","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`M_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-49.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-49.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-066","title":"Longitude degrees 050","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`N_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-50.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-50.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-067","title":"Longitude degrees 051","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`O_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-51.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-51.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-068","title":"Longitude degrees 052","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`P_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-52.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-52.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-069","title":"Longitude degrees 053","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`Q_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-53.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-53.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-070","title":"Longitude degrees 054","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`R_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-54.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-54.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-071","title":"Longitude degrees 055","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`S_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-55.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-55.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-072","title":"Longitude degrees 056","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`T_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-56.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-56.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-073","title":"Longitude degrees 057","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`U_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-57.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-57.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-074","title":"Longitude degrees 058","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`V_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-58.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-58.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-075","title":"Longitude degrees 059","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`W_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-59.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-59.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-076","title":"Longitude degrees 060","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`X_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-60.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-60.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-077","title":"Longitude degrees 061","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`Y_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-61.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-61.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-078","title":"Longitude degrees 062","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`Z_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-62.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-62.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-079","title":"Longitude degrees 063","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`[_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-63.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-63.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-080","title":"Longitude degrees 064","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`\\_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-64.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-64.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-081","title":"Longitude degrees 065","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`]_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-65.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-65.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-082","title":"Longitude degrees 066","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`^_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-66.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-66.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-083","title":"Longitude degrees 067","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`__f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-67.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-67.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-084","title":"Longitude degrees 068","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:``_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-68.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-68.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-085","title":"Longitude degrees 069","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`a_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-69.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-69.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-086","title":"Longitude degrees 070","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`b_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-70.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-70.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-087","title":"Longitude degrees 071","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`c_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-71.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-71.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-088","title":"Longitude degrees 072","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`d_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-72.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-72.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-089","title":"Longitude degrees 073","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`e_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-73.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-73.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-090","title":"Longitude degrees 074","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`f_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-74.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-74.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-091","title":"Longitude degrees 075","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`g_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-75.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-75.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-092","title":"Longitude degrees 076","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`h_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-76.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-76.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-093","title":"Longitude degrees 077","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`i_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-77.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-77.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-094","title":"Longitude degrees 078","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`j_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-78.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-78.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-095","title":"Longitude degrees 079","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`k_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-79.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-79.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-096","title":"Longitude degrees 080","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`l_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-80.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-80.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-097","title":"Longitude degrees 081","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`m_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-81.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-81.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-098","title":"Longitude degrees 082","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`n_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-82.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-82.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-099","title":"Longitude degrees 083","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`o_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-83.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-83.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-100","title":"Longitude degrees 084","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`p_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-84.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-84.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-101","title":"Longitude degrees 085","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`q_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-85.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-85.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-102","title":"Longitude degrees 086","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`r_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-86.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-86.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-103","title":"Longitude degrees 087","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`s_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-87.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-87.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-104","title":"Longitude degrees 088","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`t_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-88.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-88.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-105","title":"Longitude degrees 089","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`u_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-89.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-89.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-106","title":"Longitude degrees 090","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`v_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-90.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-90.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-107","title":"Longitude degrees 091","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`w_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-91.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-91.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-108","title":"Longitude degrees 092","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`x_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-92.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-92.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-109","title":"Longitude degrees 093","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`y_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-93.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-93.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-110","title":"Longitude degrees 094","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`z_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-94.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-94.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-111","title":"Longitude degrees 095","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`{_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-95.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-95.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-112","title":"Longitude degrees 096","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`|_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-96.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-96.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-113","title":"Longitude degrees 097","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`}_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-97.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-97.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-114","title":"Longitude degrees 098","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`~_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-98.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-98.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-115","title":"Longitude degrees 099","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`\u007f_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-99.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-99.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-116","title":"Longitude degrees 100","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`l_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-100.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-100.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-117","title":"Longitude degrees 101","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`m_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-101.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-101.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-118","title":"Longitude degrees 102","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`n_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-102.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-102.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-119","title":"Longitude degrees 103","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`o_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-103.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-103.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-120","title":"Longitude degrees 104","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`p_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-104.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-104.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-121","title":"Longitude degrees 105","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`q_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-105.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-105.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-122","title":"Longitude degrees 106","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`r_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-106.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-106.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-123","title":"Longitude degrees 107","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`s_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-107.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-107.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-124","title":"Longitude degrees 108","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`t_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-108.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-108.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-125","title":"Longitude degrees 109","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`u_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-109.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-109.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-126","title":"Longitude degrees 110","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`&_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-110.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-110.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-127","title":"Longitude degrees 111","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`'_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-111.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-111.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-128","title":"Longitude degrees 112","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-129","title":"Longitude degrees 113","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`)_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-113.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-113.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-130","title":"Longitude degrees 114","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`*_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-114.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-114.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-131","title":"Longitude degrees 115","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`+_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-115.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-115.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-132","title":"Longitude degrees 116","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`,_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-116.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-116.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-133","title":"Longitude degrees 117","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`-_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-117.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-117.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-134","title":"Longitude degrees 118","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`._f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-118.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-118.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-135","title":"Longitude degrees 119","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`/_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-119.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-119.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-136","title":"Longitude degrees 120","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`0_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-120.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-120.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-137","title":"Longitude degrees 121","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`1_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-121.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-121.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-138","title":"Longitude degrees 122","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`2_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-122.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-122.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-139","title":"Longitude degrees 123","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`3_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-123.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-123.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-140","title":"Longitude degrees 124","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`4_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-124.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-124.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-141","title":"Longitude degrees 125","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`5_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-125.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-125.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-142","title":"Longitude degrees 126","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`6_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-126.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-126.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-143","title":"Longitude degrees 127","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`7_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-127.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-127.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-144","title":"Longitude degrees 128","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`8_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-128.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-128.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-145","title":"Longitude degrees 129","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`9_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-129.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-129.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-146","title":"Longitude degrees 130","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`:_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-130.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-130.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-147","title":"Longitude degrees 131","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`;_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-131.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-131.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-148","title":"Longitude degrees 132","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`<_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-132.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-132.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-149","title":"Longitude degrees 133","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`=_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-133.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-133.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-150","title":"Longitude degrees 134","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`>_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-134.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-134.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-151","title":"Longitude degrees 135","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`?_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-135.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-135.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-152","title":"Longitude degrees 136","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`@_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-136.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-136.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-153","title":"Longitude degrees 137","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`A_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-137.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-137.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-154","title":"Longitude degrees 138","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`B_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-138.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-138.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-155","title":"Longitude degrees 139","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`C_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-139.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-139.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-156","title":"Longitude degrees 140","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`D_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-140.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-140.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-157","title":"Longitude degrees 141","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`E_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-141.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-141.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-158","title":"Longitude degrees 142","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`F_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-142.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-142.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-159","title":"Longitude degrees 143","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`G_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-143.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-143.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-160","title":"Longitude degrees 144","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`H_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-144.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-144.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-161","title":"Longitude degrees 145","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`I_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-145.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-145.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-162","title":"Longitude degrees 146","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`J_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-146.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-146.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-163","title":"Longitude degrees 147","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`K_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-147.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-147.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-164","title":"Longitude degrees 148","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`L_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-148.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-148.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-165","title":"Longitude degrees 149","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`M_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-149.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-149.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-166","title":"Longitude degrees 150","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`N_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-150.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-150.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-167","title":"Longitude degrees 151","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`O_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-151.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-151.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-168","title":"Longitude degrees 152","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`P_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-152.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-152.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-169","title":"Longitude degrees 153","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`Q_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-153.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-153.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-170","title":"Longitude degrees 154","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`R_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-154.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-154.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-171","title":"Longitude degrees 155","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`S_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-155.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-155.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-172","title":"Longitude degrees 156","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`T_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-156.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-156.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-173","title":"Longitude degrees 157","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`U_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-157.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-157.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-174","title":"Longitude degrees 158","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`V_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-158.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-158.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-175","title":"Longitude degrees 159","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`W_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-159.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-159.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-176","title":"Longitude degrees 160","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`X_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-160.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-160.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-177","title":"Longitude degrees 161","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`Y_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-161.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-161.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-178","title":"Longitude degrees 162","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`Z_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-162.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-162.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-179","title":"Longitude degrees 163","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`[_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-163.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-163.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-180","title":"Longitude degrees 164","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`\\_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-164.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-164.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-181","title":"Longitude degrees 165","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`]_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-165.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-165.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-182","title":"Longitude degrees 166","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`^_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-166.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-166.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-183","title":"Longitude degrees 167","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`__f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-167.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-167.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-184","title":"Longitude degrees 168","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:``_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-168.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-168.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-185","title":"Longitude degrees 169","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`a_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-169.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-169.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-186","title":"Longitude degrees 170","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`b_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-170.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-170.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-187","title":"Longitude degrees 171","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`c_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-171.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-171.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-188","title":"Longitude degrees 172","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`d_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-172.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-172.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-189","title":"Longitude degrees 173","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`e_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-173.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-173.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-190","title":"Longitude degrees 174","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`f_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-174.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-174.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-191","title":"Longitude degrees 175","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`g_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-175.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-175.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-192","title":"Longitude degrees 176","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`h_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-176.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-176.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-193","title":"Longitude degrees 177","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`i_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-177.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-177.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-194","title":"Longitude degrees 178","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`j_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-178.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-178.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-195","title":"Longitude degrees 179","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`k_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-179.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-179.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-196","title":"Longitude minutes 0","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(Xf\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.012333333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.012333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-197","title":"Longitude minutes 1","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(Yf\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.029,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.029,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-198","title":"Longitude minutes 8","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(`f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.145666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.145666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-199","title":"Longitude minutes 9","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(af\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.162333333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.162333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-200","title":"Longitude minutes 10","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(&f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.179,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.179,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-201","title":"Longitude minutes 11","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`('f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.195666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.195666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-202","title":"Longitude minutes 58","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(Vf\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.979,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.979,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-203","title":"Longitude minutes 59","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(Wf\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.995666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.995666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-204","title":"Longitude hundredths 0","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u001c\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.116666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.116666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-205","title":"Longitude hundredths 1","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u001d\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.116833333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.116833333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-206","title":"Longitude hundredths 2","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u001e\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.117,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.117,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-207","title":"Longitude hundredths 3","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u001f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.117166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.117166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-208","title":"Longitude hundredths 4","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_ \u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.117333333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.117333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-209","title":"Longitude hundredths 95","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_{\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.1325,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.1325,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-210","title":"Longitude hundredths 96","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_|\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.132666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.132666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-211","title":"Longitude hundredths 97","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_}\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.132833333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.132833333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-212","title":"Longitude hundredths 98","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_~\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.133,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.133,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-213","title":"Longitude hundredths 99","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u007f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.133166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.133166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-214","title":"Movement 0 kt / 0 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u001c\u001c\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":0,"speed_kmh":0.0,"course_code":0,"course_deg":0},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":0,"speed_knots":0,"course_code":0}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-215","title":"Movement 0 kt / 0 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fl \u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":0,"speed_kmh":0.0,"course_code":0,"course_deg":0},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":0,"speed_knots":0,"course_code":0}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-216","title":"Movement 0 kt / 1 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u001c\u001c\u001dj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":0,"speed_kmh":0.0,"course_code":1,"course_deg":1},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":1,"speed_knots":0,"course_code":1}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-217","title":"Movement 0 kt / 1 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fl \u001dj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":0,"speed_kmh":0.0,"course_code":1,"course_deg":1},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":1,"speed_knots":0,"course_code":1}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-218","title":"Movement 9 kt / 99 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u001cv\u007fj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":9,"speed_kmh":16.668,"course_code":99,"course_deg":99},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":99,"speed_knots":9,"course_code":99}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-219","title":"Movement 9 kt / 99 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_flz\u007fj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":9,"speed_kmh":16.668,"course_code":99,"course_deg":99},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":99,"speed_knots":9,"course_code":99}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-220","title":"Movement 10 kt / 100 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u001d\u001d\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":10,"speed_kmh":18.52,"course_code":100,"course_deg":100},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":100,"speed_knots":10,"course_code":100}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-221","title":"Movement 10 kt / 100 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fm!\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":10,"speed_kmh":18.52,"course_code":100,"course_deg":100},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":100,"speed_knots":10,"course_code":100}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-222","title":"Movement 73 kt / 294 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f#S32UVT:`(_fs@zj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":73,"speed_kmh":135.196,"course_code":294,"course_deg":294},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":294,"speed_knots":73,"course_code":294}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-224","title":"Movement 86 kt / 194 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f$Yzj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":86,"speed_kmh":159.272,"course_code":194,"course_deg":194},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":194,"speed_knots":86,"course_code":194}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-225","title":"Movement 86 kt / 194 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_ft]zj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":86,"speed_kmh":159.272,"course_code":194,"course_deg":194},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":194,"speed_knots":86,"course_code":194}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-226","title":"Movement 199 kt / 199 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f/w\u007fj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":199,"speed_kmh":368.548,"course_code":199,"course_deg":199},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":199,"speed_knots":199,"course_code":199}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-227","title":"Movement 199 kt / 199 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u007f{\u007fj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":199,"speed_kmh":368.548,"course_code":199,"course_deg":199},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":199,"speed_knots":199,"course_code":199}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-228","title":"Movement 200 kt / 200 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f0\u001e\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":200,"speed_kmh":370.4,"course_code":200,"course_deg":200},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":200,"speed_knots":200,"course_code":200}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-229","title":"Movement 200 kt / 200 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f0\"\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":200,"speed_kmh":370.4,"course_code":200,"course_deg":200},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":200,"speed_knots":200,"course_code":200}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-230","title":"Movement 799 kt / 360 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fkyXj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":799,"speed_kmh":1479.748,"course_code":360,"course_deg":360},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":360,"speed_knots":799,"course_code":360}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-231","title":"Movement 799 kt / 360 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fk}Xj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":799,"speed_kmh":1479.748,"course_code":360,"course_deg":360},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":360,"speed_knots":799,"course_code":360}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-232","title":"Hemisphere NE","profile":"core-1.1","source":"APRS101 pp. 43-49","packet":"N0CALL>S32UV4:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UV4","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UV4","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-233","title":"Hemisphere NW","profile":"core-1.1","source":"APRS101 pp. 43-49","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-234","title":"Hemisphere SE","profile":"core-1.1","source":"APRS101 pp. 43-49","packet":"N0CALL>S325V4:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S325V4","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":-33.427333333333,"longitude_deg":112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S325V4","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":-33.427333333333,"longitude_deg":112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-235","title":"Hemisphere SW","profile":"core-1.1","source":"APRS101 pp. 43-49","packet":"N0CALL>S325VT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S325VT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":-33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S325VT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":-33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-236","title":"Position ambiguity 1","profile":"core-1.1","source":"APRS101 pp. 53-54","packet":"N0CALL>S32UVZ:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVZ","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.4275,"longitude_deg":-112.129166666667,"ambiguity_digits":1,"cell_bounds_deg":{"latitude":[33.426666666667,33.428333333333],"longitude":[-112.13,-112.128333333333]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVZ","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.4275,"longitude_deg":-112.129166666667,"ambiguity":1,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-237","title":"Position ambiguity 2","profile":"core-1.1","source":"APRS101 pp. 53-54","packet":"N0CALL>S32UZZ:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UZZ","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.425,"longitude_deg":-112.125,"ambiguity_digits":2,"cell_bounds_deg":{"latitude":[33.416666666667,33.433333333333],"longitude":[-112.133333333333,-112.116666666667]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UZZ","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.425,"longitude_deg":-112.125,"ambiguity":2,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-238","title":"Position ambiguity 3","profile":"core-1.1","source":"APRS101 pp. 53-54","packet":"N0CALL>S32ZZZ:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32ZZZ","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.416666666667,"longitude_deg":-112.083333333333,"ambiguity_digits":3,"cell_bounds_deg":{"latitude":[33.333333333333,33.5],"longitude":[-112.166666666667,-112.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32ZZZ","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.416666666667,"longitude_deg":-112.083333333333,"ambiguity":3,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-239","title":"Position ambiguity 4","profile":"core-1.1","source":"APRS101 pp. 53-54","packet":"N0CALL>S3LZZZ:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S3LZZZ","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.5,"longitude_deg":-112.5,"ambiguity_digits":4,"cell_bounds_deg":{"latitude":[33.0,34.0],"longitude":[-113.0,-112.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S3LZZZ","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.5,"longitude_deg":-112.5,"ambiguity":4,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-240","title":"DTI / equipment '`'","profile":"core-1.1","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-241","title":"DTI / equipment \"'\"","profile":"core-1.1","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:'(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"old","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"old","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-242","title":"DTI / equipment \"']\"","profile":"core-1.1","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:'(_f\u001e\u001eOj/]Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current-for-TM-D700","type_marker":"]"},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-243","title":"DTI / equipment '`>'","profile":"core-1.1","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-244","title":"DTI / equipment '\\x1c'","profile":"historical-1.0","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:\u001c(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-245","title":"DTI / equipment '\\x1d'","profile":"historical-1.0","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:\u001d(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"old","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"old","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-246","title":"Altitude -10000 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-247","title":"Altitude 0 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-248","title":"Altitude 61 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-249","title":"Altitude 10000 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-250","title":"Altitude 743570 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-251","title":"Altitude -10000 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-252","title":"Altitude 0 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-253","title":"Altitude 61 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-254","title":"Altitude 10000 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-255","title":"Altitude 743570 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-256","title":"Altitude -10000 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-257","title":"Altitude 0 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-258","title":"Altitude 61 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-259","title":"Altitude 10000 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-260","title":"Altitude 743570 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-261","title":"Telemetry flag '`'","profile":"core-1.1","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/`1020","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[16,null,32,null,null],"encoding":"mic-e-hex"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[16,null,32,null,null],"encoding":"mic_e_hex"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-262","title":"Telemetry flag \"'\"","profile":"core-1.1","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/'102030FFff","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[16,32,48,255,255],"encoding":"mic-e-hex"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[16,32,48,255,255],"encoding":"mic_e_hex"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-263","title":"Telemetry flag '\\x1d'","profile":"historical-1.0","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\u001d\u0000\u0001\u007f\u0080\u00ff","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[0,1,127,128,255],"encoding":"mic-e-binary"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[0,1,127,128,255],"encoding":"mic_e_binary"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-264","title":"Mixed standard/custom bits","profile":"core-1.1","source":"APRS101 p. 45","packet":"N0CALL>D3RUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"D3RUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"101","position_comment_set":"mixed","position_comment":"unknown","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"D3RUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} -{"id":"MIC-265","title":"Grid locator in Mic-E status","profile":"core-1.1","source":"APRS101 p. 55","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>IO91SX/G Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":" Ready","grid_locator":"IO91SX","grid_symbol":{"table_id_raw":"/","table":"primary","code":"G","overlay":null}},"note":"Retain the encoded Mic-E position and grid independently; do not silently replace the higher-resolution coordinate by a grid center.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":" Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.grid_locator","$.grid_symbol.code","$.grid_symbol.overlay","$.grid_symbol.table","$.grid_symbol.table_id_raw","$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: Mic-E destination and information decoding"}} +{"id":"MIC-001","title":"Standard position comment 000","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>332UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"332UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"000","position_comment_set":"standard","position_comment":"Emergency","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"332UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"emergency","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-002","title":"Standard position comment 001","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>33RUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"33RUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"001","position_comment_set":"standard","position_comment":"Priority","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"33RUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"priority","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-003","title":"Standard position comment 010","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>3S2UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"3S2UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"010","position_comment_set":"standard","position_comment":"Special","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"3S2UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"special","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-004","title":"Standard position comment 011","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>3SRUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"3SRUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"011","position_comment_set":"standard","position_comment":"Committed","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"3SRUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"committed","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-005","title":"Standard position comment 100","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-006","title":"Standard position comment 101","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>S3RUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S3RUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"101","position_comment_set":"standard","position_comment":"In Service","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S3RUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"in_service","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-007","title":"Standard position comment 110","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>SS2UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"SS2UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"110","position_comment_set":"standard","position_comment":"En Route","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"SS2UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"en_route","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-008","title":"Standard position comment 111","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>SSRUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"SSRUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"111","position_comment_set":"standard","position_comment":"Off Duty","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"SSRUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"off_duty","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-009","title":"Custom position comment 001","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>33CUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"33CUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"001","position_comment_set":"custom","position_comment":"Custom-6","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"33CUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"custom_6","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-010","title":"Custom position comment 010","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>3D2UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"3D2UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"010","position_comment_set":"custom","position_comment":"Custom-5","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"3D2UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"custom_5","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-011","title":"Custom position comment 011","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>3DCUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"3DCUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"011","position_comment_set":"custom","position_comment":"Custom-4","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"3DCUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"custom_4","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-012","title":"Custom position comment 100","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>D32UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"D32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"custom","position_comment":"Custom-3","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"D32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"custom_3","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-013","title":"Custom position comment 101","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>D3CUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"D3CUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"101","position_comment_set":"custom","position_comment":"Custom-2","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"D3CUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"custom_2","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-014","title":"Custom position comment 110","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>DD2UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"DD2UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"110","position_comment_set":"custom","position_comment":"Custom-1","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"DD2UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"custom_1","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-015","title":"Custom position comment 111","profile":"core-1.1","source":"APRS101 pp. 43-46","packet":"N0CALL>DDCUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"DDCUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"111","position_comment_set":"custom","position_comment":"Custom-0","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"DDCUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"custom_0","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-016","title":"Longitude degrees 000","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`v_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-0.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-0.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-017","title":"Longitude degrees 001","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`w_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-1.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-1.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-018","title":"Longitude degrees 002","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`x_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-2.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-2.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-019","title":"Longitude degrees 003","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`y_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-3.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-3.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-020","title":"Longitude degrees 004","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`z_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-4.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-4.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-021","title":"Longitude degrees 005","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`{_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-5.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-5.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-022","title":"Longitude degrees 006","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`|_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-6.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-6.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-023","title":"Longitude degrees 007","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`}_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-7.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-7.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-024","title":"Longitude degrees 008","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`~_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-8.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-8.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-025","title":"Longitude degrees 009","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`\u007f_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-9.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-9.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-026","title":"Longitude degrees 010","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`&_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-10.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-10.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-027","title":"Longitude degrees 011","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`'_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-11.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-11.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-028","title":"Longitude degrees 012","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-12.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-12.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-029","title":"Longitude degrees 013","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`)_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-13.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-13.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-030","title":"Longitude degrees 014","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`*_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-14.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-14.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-031","title":"Longitude degrees 015","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`+_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-15.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-15.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-032","title":"Longitude degrees 016","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`,_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-16.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-16.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-033","title":"Longitude degrees 017","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`-_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-17.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-17.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-034","title":"Longitude degrees 018","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`._f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-18.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-18.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-035","title":"Longitude degrees 019","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`/_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-19.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-19.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-036","title":"Longitude degrees 020","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`0_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-20.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-20.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-037","title":"Longitude degrees 021","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`1_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-21.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-21.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-038","title":"Longitude degrees 022","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`2_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-22.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-22.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-039","title":"Longitude degrees 023","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`3_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-23.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-23.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-040","title":"Longitude degrees 024","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`4_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-24.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-24.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-041","title":"Longitude degrees 025","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`5_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-25.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-25.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-042","title":"Longitude degrees 026","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`6_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-26.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-26.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-043","title":"Longitude degrees 027","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`7_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-27.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-27.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-044","title":"Longitude degrees 028","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`8_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-28.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-28.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-045","title":"Longitude degrees 029","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`9_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-29.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-29.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-046","title":"Longitude degrees 030","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`:_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-30.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-30.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-047","title":"Longitude degrees 031","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`;_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-31.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-31.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-048","title":"Longitude degrees 032","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`<_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-32.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-32.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-049","title":"Longitude degrees 033","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`=_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-33.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-33.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-050","title":"Longitude degrees 034","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`>_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-34.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-34.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-051","title":"Longitude degrees 035","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`?_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-35.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-35.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-052","title":"Longitude degrees 036","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`@_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-36.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-36.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-053","title":"Longitude degrees 037","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`A_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-37.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-37.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-054","title":"Longitude degrees 038","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`B_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-38.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-38.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-055","title":"Longitude degrees 039","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`C_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-39.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-39.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-056","title":"Longitude degrees 040","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`D_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-40.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-40.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-057","title":"Longitude degrees 041","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`E_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-41.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-41.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-058","title":"Longitude degrees 042","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`F_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-42.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-42.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-059","title":"Longitude degrees 043","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`G_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-43.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-43.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-060","title":"Longitude degrees 044","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`H_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-44.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-44.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-061","title":"Longitude degrees 045","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`I_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-45.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-45.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-062","title":"Longitude degrees 046","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`J_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-46.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-46.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-063","title":"Longitude degrees 047","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`K_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-47.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-47.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-064","title":"Longitude degrees 048","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`L_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-48.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-48.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-065","title":"Longitude degrees 049","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`M_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-49.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-49.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-066","title":"Longitude degrees 050","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`N_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-50.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-50.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-067","title":"Longitude degrees 051","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`O_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-51.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-51.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-068","title":"Longitude degrees 052","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`P_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-52.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-52.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-069","title":"Longitude degrees 053","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`Q_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-53.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-53.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-070","title":"Longitude degrees 054","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`R_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-54.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-54.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-071","title":"Longitude degrees 055","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`S_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-55.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-55.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-072","title":"Longitude degrees 056","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`T_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-56.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-56.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-073","title":"Longitude degrees 057","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`U_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-57.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-57.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-074","title":"Longitude degrees 058","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`V_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-58.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-58.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-075","title":"Longitude degrees 059","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`W_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-59.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-59.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-076","title":"Longitude degrees 060","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`X_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-60.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-60.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-077","title":"Longitude degrees 061","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`Y_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-61.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-61.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-078","title":"Longitude degrees 062","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`Z_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-62.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-62.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-079","title":"Longitude degrees 063","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`[_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-63.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-63.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-080","title":"Longitude degrees 064","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`\\_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-64.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-64.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-081","title":"Longitude degrees 065","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`]_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-65.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-65.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-082","title":"Longitude degrees 066","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`^_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-66.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-66.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-083","title":"Longitude degrees 067","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`__f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-67.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-67.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-084","title":"Longitude degrees 068","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:``_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-68.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-68.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-085","title":"Longitude degrees 069","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`a_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-69.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-69.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-086","title":"Longitude degrees 070","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`b_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-70.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-70.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-087","title":"Longitude degrees 071","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`c_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-71.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-71.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-088","title":"Longitude degrees 072","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`d_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-72.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-72.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-089","title":"Longitude degrees 073","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`e_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-73.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-73.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-090","title":"Longitude degrees 074","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`f_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-74.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-74.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-091","title":"Longitude degrees 075","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`g_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-75.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-75.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-092","title":"Longitude degrees 076","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`h_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-76.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-76.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-093","title":"Longitude degrees 077","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`i_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-77.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-77.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-094","title":"Longitude degrees 078","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`j_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-78.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-78.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-095","title":"Longitude degrees 079","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`k_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-79.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-79.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-096","title":"Longitude degrees 080","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`l_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-80.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-80.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-097","title":"Longitude degrees 081","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`m_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-81.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-81.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-098","title":"Longitude degrees 082","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`n_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-82.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-82.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-099","title":"Longitude degrees 083","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`o_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-83.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-83.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-100","title":"Longitude degrees 084","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`p_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-84.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-84.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-101","title":"Longitude degrees 085","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`q_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-85.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-85.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-102","title":"Longitude degrees 086","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`r_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-86.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-86.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-103","title":"Longitude degrees 087","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`s_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-87.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-87.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-104","title":"Longitude degrees 088","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`t_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-88.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-88.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-105","title":"Longitude degrees 089","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`u_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-89.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-89.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-106","title":"Longitude degrees 090","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`v_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-90.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-90.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-107","title":"Longitude degrees 091","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`w_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-91.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-91.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-108","title":"Longitude degrees 092","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`x_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-92.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-92.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-109","title":"Longitude degrees 093","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`y_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-93.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-93.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-110","title":"Longitude degrees 094","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`z_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-94.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-94.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-111","title":"Longitude degrees 095","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`{_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-95.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-95.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-112","title":"Longitude degrees 096","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`|_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-96.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-96.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-113","title":"Longitude degrees 097","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`}_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-97.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-97.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-114","title":"Longitude degrees 098","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`~_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-98.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-98.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-115","title":"Longitude degrees 099","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32U6T:`\u007f_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32U6T","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-99.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":0,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32U6T","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-99.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-116","title":"Longitude degrees 100","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`l_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-100.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-100.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-117","title":"Longitude degrees 101","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`m_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-101.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-101.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-118","title":"Longitude degrees 102","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`n_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-102.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-102.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-119","title":"Longitude degrees 103","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`o_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-103.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-103.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-120","title":"Longitude degrees 104","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`p_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-104.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-104.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-121","title":"Longitude degrees 105","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`q_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-105.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-105.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-122","title":"Longitude degrees 106","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`r_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-106.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-106.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-123","title":"Longitude degrees 107","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`s_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-107.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-107.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-124","title":"Longitude degrees 108","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`t_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-108.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-108.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-125","title":"Longitude degrees 109","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`u_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-109.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-109.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-126","title":"Longitude degrees 110","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`&_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-110.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-110.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-127","title":"Longitude degrees 111","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`'_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-111.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-111.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-128","title":"Longitude degrees 112","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-129","title":"Longitude degrees 113","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`)_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-113.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-113.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-130","title":"Longitude degrees 114","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`*_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-114.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-114.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-131","title":"Longitude degrees 115","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`+_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-115.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-115.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-132","title":"Longitude degrees 116","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`,_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-116.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-116.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-133","title":"Longitude degrees 117","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`-_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-117.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-117.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-134","title":"Longitude degrees 118","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`._f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-118.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-118.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-135","title":"Longitude degrees 119","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`/_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-119.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-119.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-136","title":"Longitude degrees 120","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`0_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-120.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-120.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-137","title":"Longitude degrees 121","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`1_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-121.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-121.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-138","title":"Longitude degrees 122","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`2_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-122.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-122.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-139","title":"Longitude degrees 123","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`3_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-123.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-123.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-140","title":"Longitude degrees 124","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`4_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-124.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-124.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-141","title":"Longitude degrees 125","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`5_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-125.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-125.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-142","title":"Longitude degrees 126","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`6_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-126.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-126.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-143","title":"Longitude degrees 127","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`7_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-127.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-127.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-144","title":"Longitude degrees 128","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`8_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-128.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-128.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-145","title":"Longitude degrees 129","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`9_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-129.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-129.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-146","title":"Longitude degrees 130","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`:_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-130.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-130.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-147","title":"Longitude degrees 131","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`;_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-131.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-131.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-148","title":"Longitude degrees 132","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`<_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-132.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-132.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-149","title":"Longitude degrees 133","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`=_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-133.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-133.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-150","title":"Longitude degrees 134","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`>_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-134.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-134.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-151","title":"Longitude degrees 135","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`?_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-135.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-135.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-152","title":"Longitude degrees 136","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`@_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-136.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-136.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-153","title":"Longitude degrees 137","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`A_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-137.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-137.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-154","title":"Longitude degrees 138","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`B_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-138.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-138.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-155","title":"Longitude degrees 139","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`C_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-139.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-139.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-156","title":"Longitude degrees 140","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`D_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-140.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-140.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-157","title":"Longitude degrees 141","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`E_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-141.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-141.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-158","title":"Longitude degrees 142","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`F_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-142.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-142.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-159","title":"Longitude degrees 143","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`G_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-143.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-143.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-160","title":"Longitude degrees 144","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`H_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-144.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-144.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-161","title":"Longitude degrees 145","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`I_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-145.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-145.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-162","title":"Longitude degrees 146","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`J_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-146.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-146.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-163","title":"Longitude degrees 147","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`K_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-147.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-147.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-164","title":"Longitude degrees 148","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`L_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-148.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-148.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-165","title":"Longitude degrees 149","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`M_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-149.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-149.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-166","title":"Longitude degrees 150","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`N_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-150.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-150.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-167","title":"Longitude degrees 151","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`O_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-151.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-151.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-168","title":"Longitude degrees 152","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`P_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-152.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-152.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-169","title":"Longitude degrees 153","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`Q_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-153.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-153.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-170","title":"Longitude degrees 154","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`R_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-154.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-154.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-171","title":"Longitude degrees 155","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`S_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-155.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-155.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-172","title":"Longitude degrees 156","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`T_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-156.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-156.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-173","title":"Longitude degrees 157","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`U_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-157.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-157.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-174","title":"Longitude degrees 158","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`V_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-158.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-158.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-175","title":"Longitude degrees 159","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`W_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-159.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-159.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-176","title":"Longitude degrees 160","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`X_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-160.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-160.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-177","title":"Longitude degrees 161","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`Y_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-161.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-161.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-178","title":"Longitude degrees 162","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`Z_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-162.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-162.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-179","title":"Longitude degrees 163","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`[_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-163.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-163.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-180","title":"Longitude degrees 164","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`\\_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-164.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-164.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-181","title":"Longitude degrees 165","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`]_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-165.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-165.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-182","title":"Longitude degrees 166","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`^_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-166.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-166.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-183","title":"Longitude degrees 167","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`__f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-167.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-167.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-184","title":"Longitude degrees 168","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:``_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-168.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-168.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-185","title":"Longitude degrees 169","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`a_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-169.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-169.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-186","title":"Longitude degrees 170","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`b_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-170.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-170.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-187","title":"Longitude degrees 171","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`c_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-171.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-171.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-188","title":"Longitude degrees 172","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`d_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-172.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-172.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-189","title":"Longitude degrees 173","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`e_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-173.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-173.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-190","title":"Longitude degrees 174","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`f_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-174.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-174.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-191","title":"Longitude degrees 175","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`g_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-175.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-175.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-192","title":"Longitude degrees 176","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`h_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-176.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-176.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-193","title":"Longitude degrees 177","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`i_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-177.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-177.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-194","title":"Longitude degrees 178","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`j_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-178.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-178.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-195","title":"Longitude degrees 179","profile":"core-1.1","source":"APRS101 pp. 47-48; A11: Mic-E longitude erratum","packet":"N0CALL>S32UVT:`k_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-179.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-179.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-196","title":"Longitude minutes 0","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(Xf\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.012333333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.012333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-197","title":"Longitude minutes 1","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(Yf\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.029,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.029,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-198","title":"Longitude minutes 8","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(`f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.145666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.145666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-199","title":"Longitude minutes 9","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(af\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.162333333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.162333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-200","title":"Longitude minutes 10","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(&f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.179,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.179,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-201","title":"Longitude minutes 11","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`('f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.195666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.195666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-202","title":"Longitude minutes 58","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(Vf\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.979,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.979,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-203","title":"Longitude minutes 59","profile":"core-1.1","source":"APRS101 p. 48","packet":"N0CALL>S32UVT:`(Wf\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.995666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.995666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-204","title":"Longitude hundredths 0","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u001c\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.116666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.116666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-205","title":"Longitude hundredths 1","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u001d\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.116833333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.116833333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-206","title":"Longitude hundredths 2","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u001e\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.117,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.117,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-207","title":"Longitude hundredths 3","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u001f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.117166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.117166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-208","title":"Longitude hundredths 4","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_ \u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.117333333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.117333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-209","title":"Longitude hundredths 95","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_{\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.1325,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.1325,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-210","title":"Longitude hundredths 96","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_|\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.132666666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.132666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-211","title":"Longitude hundredths 97","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_}\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.132833333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.132833333333,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-212","title":"Longitude hundredths 98","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_~\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.133,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.133,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-213","title":"Longitude hundredths 99","profile":"core-1.1","source":"APRS101 p. 49","packet":"N0CALL>S32UVT:`(_\u007f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.133166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.133166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-214","title":"Movement 0 kt / 0 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u001c\u001c\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":0,"speed_kmh":0.0,"course_code":0,"course_deg":0},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":0,"speed_knots":0,"course_code":0}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-215","title":"Movement 0 kt / 0 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fl \u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":0,"speed_kmh":0.0,"course_code":0,"course_deg":0},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":0,"speed_knots":0,"course_code":0}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-216","title":"Movement 0 kt / 1 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u001c\u001c\u001dj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":0,"speed_kmh":0.0,"course_code":1,"course_deg":1},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":1,"speed_knots":0,"course_code":1}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-217","title":"Movement 0 kt / 1 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fl \u001dj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":0,"speed_kmh":0.0,"course_code":1,"course_deg":1},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":1,"speed_knots":0,"course_code":1}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-218","title":"Movement 9 kt / 99 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u001cv\u007fj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":9,"speed_kmh":16.668,"course_code":99,"course_deg":99},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":99,"speed_knots":9,"course_code":99}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-219","title":"Movement 9 kt / 99 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_flz\u007fj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":9,"speed_kmh":16.668,"course_code":99,"course_deg":99},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":99,"speed_knots":9,"course_code":99}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-220","title":"Movement 10 kt / 100 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u001d\u001d\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":10,"speed_kmh":18.52,"course_code":100,"course_deg":100},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":100,"speed_knots":10,"course_code":100}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-221","title":"Movement 10 kt / 100 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fm!\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":10,"speed_kmh":18.52,"course_code":100,"course_deg":100},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":100,"speed_knots":10,"course_code":100}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-222","title":"Movement 73 kt / 294 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f#S32UVT:`(_fs@zj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":73,"speed_kmh":135.196,"course_code":294,"course_deg":294},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":294,"speed_knots":73,"course_code":294}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-224","title":"Movement 86 kt / 194 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f$Yzj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":86,"speed_kmh":159.272,"course_code":194,"course_deg":194},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":194,"speed_knots":86,"course_code":194}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-225","title":"Movement 86 kt / 194 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_ft]zj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":86,"speed_kmh":159.272,"course_code":194,"course_deg":194},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":194,"speed_knots":86,"course_code":194}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-226","title":"Movement 199 kt / 199 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f/w\u007fj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":199,"speed_kmh":368.548,"course_code":199,"course_deg":199},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":199,"speed_knots":199,"course_code":199}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-227","title":"Movement 199 kt / 199 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f\u007f{\u007fj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":199,"speed_kmh":368.548,"course_code":199,"course_deg":199},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":199,"speed_knots":199,"course_code":199}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-228","title":"Movement 200 kt / 200 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f0\u001e\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":200,"speed_kmh":370.4,"course_code":200,"course_deg":200},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":200,"speed_knots":200,"course_code":200}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-229","title":"Movement 200 kt / 200 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_f0\"\u001cj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":200,"speed_kmh":370.4,"course_code":200,"course_deg":200},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":200,"speed_knots":200,"course_code":200}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-230","title":"Movement 799 kt / 360 deg / alternate=False","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fkyXj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":799,"speed_kmh":1479.748,"course_code":360,"course_deg":360},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":360,"speed_knots":799,"course_code":360}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-231","title":"Movement 799 kt / 360 deg / alternate=True","profile":"core-1.1","source":"APRS101 pp. 49-53","packet":"N0CALL>S32UVT:`(_fk}Xj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":799,"speed_kmh":1479.748,"course_code":360,"course_deg":360},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":360,"speed_knots":799,"course_code":360}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-232","title":"Hemisphere NE","profile":"core-1.1","source":"APRS101 pp. 43-49","packet":"N0CALL>S32UV4:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UV4","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UV4","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-233","title":"Hemisphere NW","profile":"core-1.1","source":"APRS101 pp. 43-49","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-234","title":"Hemisphere SE","profile":"core-1.1","source":"APRS101 pp. 43-49","packet":"N0CALL>S325V4:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S325V4","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":-33.427333333333,"longitude_deg":112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S325V4","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":-33.427333333333,"longitude_deg":112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-235","title":"Hemisphere SW","profile":"core-1.1","source":"APRS101 pp. 43-49","packet":"N0CALL>S325VT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S325VT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":-33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S325VT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":-33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-236","title":"Position ambiguity 1","profile":"core-1.1","source":"APRS101 pp. 53-54","packet":"N0CALL>S32UVZ:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVZ","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.4275,"longitude_deg":-112.129166666667,"ambiguity_digits":1,"cell_bounds_deg":{"latitude":[33.426666666667,33.428333333333],"longitude":[-112.13,-112.128333333333]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVZ","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.4275,"longitude_deg":-112.129166666667,"ambiguity":1,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-237","title":"Position ambiguity 2","profile":"core-1.1","source":"APRS101 pp. 53-54","packet":"N0CALL>S32UZZ:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UZZ","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.425,"longitude_deg":-112.125,"ambiguity_digits":2,"cell_bounds_deg":{"latitude":[33.416666666667,33.433333333333],"longitude":[-112.133333333333,-112.116666666667]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UZZ","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.425,"longitude_deg":-112.125,"ambiguity":2,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-238","title":"Position ambiguity 3","profile":"core-1.1","source":"APRS101 pp. 53-54","packet":"N0CALL>S32ZZZ:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32ZZZ","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.416666666667,"longitude_deg":-112.083333333333,"ambiguity_digits":3,"cell_bounds_deg":{"latitude":[33.333333333333,33.5],"longitude":[-112.166666666667,-112.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32ZZZ","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.416666666667,"longitude_deg":-112.083333333333,"ambiguity":3,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-239","title":"Position ambiguity 4","profile":"core-1.1","source":"APRS101 pp. 53-54","packet":"N0CALL>S3LZZZ:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S3LZZZ","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.5,"longitude_deg":-112.5,"ambiguity_digits":4,"cell_bounds_deg":{"latitude":[33.0,34.0],"longitude":[-113.0,-112.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S3LZZZ","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.5,"longitude_deg":-112.5,"ambiguity":4,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-240","title":"DTI / equipment '`'","profile":"core-1.1","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-241","title":"DTI / equipment \"'\"","profile":"core-1.1","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:'(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"old","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"old","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-242","title":"DTI / equipment \"']\"","profile":"core-1.1","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:'(_f\u001e\u001eOj/]Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current-for-TM-D700","type_marker":"]"},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-243","title":"DTI / equipment '`>'","profile":"core-1.1","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-244","title":"DTI / equipment '\\x1c'","profile":"historical-1.0","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:\u001c(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-245","title":"DTI / equipment '\\x1d'","profile":"historical-1.0","source":"APRS101 pp. 46, 55","packet":"N0CALL>S32UVT:\u001d(_f\u001e\u001eOj/Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"old","type_marker":null},"comment":"Ready"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"old","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-246","title":"Altitude -10000 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-247","title":"Altitude 0 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-248","title":"Altitude 61 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-249","title":"Altitude 10000 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-250","title":"Altitude 743570 m / marker ''","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":null},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-251","title":"Altitude -10000 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-252","title":"Altitude 0 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-253","title":"Altitude 61 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-254","title":"Altitude 10000 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-255","title":"Altitude 743570 m / marker '>'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-256","title":"Altitude -10000 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]!!!}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":-10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":-10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-257","title":"Altitude 0 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]\"3r}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":0,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":0,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-258","title":"Altitude 61 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]\"4T}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":61,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":61,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-259","title":"Altitude 10000 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]#Fh}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":10000,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":10000,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-260","title":"Altitude 743570 m / marker ']'","profile":"core-1.1","source":"APRS101 pp. 55-56; A11: altitude placement","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/]{{{}Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":"]"},"comment":"Ready","altitude":{"meters":743570,"encoding":"mic-e-base91"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"altitude":{"measurement":{"value":743570,"unit":"meters"},"encoding":"mic_e"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-261","title":"Telemetry flag '`'","profile":"core-1.1","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/`1020","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[16,null,32,null,null],"encoding":"mic-e-hex"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[16,null,32,null,null],"encoding":"mic_e_hex"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-262","title":"Telemetry flag \"'\"","profile":"core-1.1","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/'102030FFff","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[16,32,48,255,255],"encoding":"mic-e-hex"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[16,32,48,255,255],"encoding":"mic_e_hex"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-263","title":"Telemetry flag '\\x1d'","profile":"historical-1.0","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\u001d\u0000\u0001\u007f\u0080\u00ff","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[0,1,127,128,255],"encoding":"mic-e-binary"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[0,1,127,128,255],"encoding":"mic_e_binary"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-264","title":"Mixed standard/custom bits","profile":"core-1.1","source":"APRS101 p. 45","packet":"N0CALL>D3RUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"D3RUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"101","position_comment_set":"mixed","position_comment":"unknown","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"D3RUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"unknown","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-265","title":"Grid locator in Mic-E status","profile":"core-1.1","source":"APRS101 p. 55","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>IO91SX/G Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":" Ready","grid_locator":"IO91SX","grid_symbol":{"table_id_raw":"/","table":"primary","code":"G","overlay":null}},"note":"Retain the encoded Mic-E position and grid independently; do not silently replace the higher-resolution coordinate by a grid center.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":" Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.grid_locator","$.grid_symbol.code","$.grid_symbol.overlay","$.grid_symbol.table","$.grid_symbol.table_id_raw","$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} diff --git a/packages/aprs/tests/vectors/msg.jsonl b/packages/aprs/tests/vectors/msg.jsonl index f3b95c4..986e17d 100644 --- a/packages/aprs/tests/vectors/msg.jsonl +++ b/packages/aprs/tests/vectors/msg.jsonl @@ -23,23 +23,23 @@ {"id":"MSG-023","title":"Reply-ack {01}","profile":"core-1.1","source":"A11 REPLY-ACK","packet":"N0CALL>APRS::W1AW :Reply{01}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"Reply","message_id":"01","ack_requested":true,"reply_ack_capable":true,"reply_ack_id":null,"message_id_raw":"01}"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"Reply","message_id":"01","reply_ack":""}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id_raw"]} {"id":"MSG-024","title":"Reply-ack {01}02","profile":"core-1.1","source":"A11 REPLY-ACK","packet":"N0CALL>APRS::W1AW :Reply{01}02","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"Reply","message_id":"01","ack_requested":true,"reply_ack_capable":true,"reply_ack_id":"02","message_id_raw":"01}02"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"Reply","message_id":"01","reply_ack":"02"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id_raw"]} {"id":"MSG-025","title":"Standalone ack echoes reply-ack ID","profile":"core-1.1","source":"A11 REPLY-ACK","packet":"N0CALL>APRS::W1AW :ack01}02","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","subtype":"ack","ack_id_raw":"01}02","ack_id":"01","embedded_reply_ack_id":"02","ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"acknowledgment","addressee":"W1AW","message_id":"01","rejected":false}},"unmapped":["$.message.ack_id_raw","$.message.ack_requested","$.message.addressee_raw","$.message.embedded_reply_ack_id"]} -{"id":"MSG-026","title":"Automatic answer AA:Away from keyboard","profile":"core-1.1","source":"A11 auto-answer","packet":"N0CALL>APRS::W1AW :AA:Away from keyboard","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"AA:Away from keyboard","message_id":null,"ack_requested":false,"auto_answer":true}},"note":"Auto-answer has no message ID and does not request an ack. Power-up/cancel/retry rules are stateful, not inferred from this packet alone.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"auto_answer","addressee":"W1AW","text":"Away from keyboard","previous_ack":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-027","title":"Automatic answer AA:Away from keyboard}02","profile":"core-1.1","source":"A11 auto-answer","packet":"N0CALL>APRS::W1AW :AA:Away from keyboard}02","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"AA:Away from keyboard","message_id":null,"ack_requested":false,"auto_answer":true,"reply_ack_id":"02"}},"note":"Auto-answer has no message ID and does not request an ack. Power-up/cancel/retry rules are stateful, not inferred from this packet alone.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"auto_answer","addressee":"W1AW","text":"Away from keyboard","previous_ack":"02"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-028","title":"bulletin BLN0","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLN0 :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"bulletin","message":{"addressee":"BLN0","addressee_raw":"BLN0 ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"0","group":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"0","text":"Test notice","group":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-029","title":"bulletin BLN9","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLN9 :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"bulletin","message":{"addressee":"BLN9","addressee_raw":"BLN9 ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"9","group":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"9","text":"Test notice","group":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-030","title":"announcement BLNA","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLNA :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"announcement","message":{"addressee":"BLNA","addressee_raw":"BLNA ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"A","group":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"A","text":"Test notice","group":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-031","title":"announcement BLNZ","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLNZ :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"announcement","message":{"addressee":"BLNZ","addressee_raw":"BLNZ ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"Z","group":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"Z","text":"Test notice","group":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-032","title":"group-bulletin BLN4WX","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLN4WX :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"group-bulletin","message":{"addressee":"BLN4WX","addressee_raw":"BLN4WX ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"4","group":"WX"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"4","text":"Test notice","group":"WX"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-033","title":"group-bulletin BLN1ABCDE","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLN1ABCDE:Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"group-bulletin","message":{"addressee":"BLN1ABCDE","addressee_raw":"BLN1ABCDE","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"1","group":"ABCDE"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"1","text":"Test notice","group":"ABCDE"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-034","title":"NWS reference is not an ack request","profile":"core-1.1","source":"APRS101 p. 74","packet":"N0CALL>APRS::NWS-WARN :092010z,THUNDER_STORM,AR_ASHLEY,{S9JbA","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nws-bulletin","message":{"addressee":"NWS-WARN","addressee_raw":"NWS-WARN ","text":"092010z,THUNDER_STORM,AR_ASHLEY,","message_id":"S9JbA","ack_requested":false,"reference_id":"S9JbA"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nws_bulletin","addressee":"NWS-WARN","text":"092010z,THUNDER_STORM,AR_ASHLEY,","reference_id":"S9JbA"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.reference_id"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-035","title":"NTS N#","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N#\\12\\R\\HXA\\N0CALL\\5\\REDMOND WA\\1800\\OCT 15{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N#\\12\\R\\HXA\\N0CALL\\5\\REDMOND WA\\1800\\OCT 15","message_id":"001","ack_requested":true},"nts":{"record_type":"N#","fields":["12","R","HXA","N0CALL","5","REDMOND WA","1800","OCT 15"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_header","number":"12","precedence":"R","handling":"HXA","originator":"N0CALL","check":"5","place":"REDMOND WA","time":"1800","date":"OCT 15"},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-036","title":"NTS NA","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :NA\\ADAM\\123 MAIN ST\\REDMOND WA\\98052{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"NA\\ADAM\\123 MAIN ST\\REDMOND WA\\98052","message_id":"001","ack_requested":true},"nts":{"record_type":"NA","fields":["ADAM","123 MAIN ST","REDMOND WA","98052"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_address","lines":["ADAM","123 MAIN ST","REDMOND WA","98052"]},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-037","title":"NTS NP","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :NP\\5550100{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"NP\\5550100","message_id":"001","ack_requested":true},"nts":{"record_type":"NP","fields":["5550100"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_phone","number":"5550100"},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-038","title":"NTS N1","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N1\\LINE 1 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N1\\LINE 1 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N1","fields":["LINE 1 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 1 TEXT","line":1},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-039","title":"NTS N2","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N2\\LINE 2 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N2\\LINE 2 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N2","fields":["LINE 2 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 2 TEXT","line":2},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-040","title":"NTS N3","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N3\\LINE 3 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N3\\LINE 3 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N3","fields":["LINE 3 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 3 TEXT","line":3},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-041","title":"NTS N4","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N4\\LINE 4 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N4\\LINE 4 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N4","fields":["LINE 4 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 4 TEXT","line":4},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-042","title":"NTS N5","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N5\\LINE 5 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N5\\LINE 5 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N5","fields":["LINE 5 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 5 TEXT","line":5},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-043","title":"NTS N6","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N6\\LINE 6 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N6\\LINE 6 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N6","fields":["LINE 6 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 6 TEXT","line":6},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-044","title":"NTS NS","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :NS\\TEST SENDER{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"NS\\TEST SENDER","message_id":"001","ack_requested":true},"nts":{"record_type":"NS","fields":["TEST SENDER"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_signature","text":"TEST SENDER"},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"MSG-045","title":"NTS NR","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :NR\\W1AW\\151800Z\\N0CALL\\151805Z{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"NR\\W1AW\\151800Z\\N0CALL\\151805Z","message_id":"001","ack_requested":true},"nts":{"record_type":"NR","fields":["W1AW","151800Z","N0CALL","151805Z"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_routing","received_from":"W1AW","received_at":"151800Z","sent_to":"N0CALL","sent_at":"151805Z"},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"MSG-026","title":"Automatic answer AA:Away from keyboard","profile":"core-1.1","source":"A11 auto-answer","packet":"N0CALL>APRS::W1AW :AA:Away from keyboard","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"AA:Away from keyboard","message_id":null,"ack_requested":false,"auto_answer":true}},"note":"Auto-answer has no message ID and does not request an ack. Power-up/cancel/retry rules are stateful, not inferred from this packet alone.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"auto_answer","addressee":"W1AW","text":"Away from keyboard","previous_ack":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-027","title":"Automatic answer AA:Away from keyboard}02","profile":"core-1.1","source":"A11 auto-answer","packet":"N0CALL>APRS::W1AW :AA:Away from keyboard}02","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"AA:Away from keyboard","message_id":null,"ack_requested":false,"auto_answer":true,"reply_ack_id":"02"}},"note":"Auto-answer has no message ID and does not request an ack. Power-up/cancel/retry rules are stateful, not inferred from this packet alone.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"auto_answer","addressee":"W1AW","text":"Away from keyboard","previous_ack":"02"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-028","title":"bulletin BLN0","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLN0 :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"bulletin","message":{"addressee":"BLN0","addressee_raw":"BLN0 ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"0","group":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"0","text":"Test notice","group":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-029","title":"bulletin BLN9","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLN9 :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"bulletin","message":{"addressee":"BLN9","addressee_raw":"BLN9 ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"9","group":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"9","text":"Test notice","group":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-030","title":"announcement BLNA","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLNA :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"announcement","message":{"addressee":"BLNA","addressee_raw":"BLNA ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"A","group":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"A","text":"Test notice","group":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-031","title":"announcement BLNZ","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLNZ :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"announcement","message":{"addressee":"BLNZ","addressee_raw":"BLNZ ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"Z","group":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"Z","text":"Test notice","group":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-032","title":"group-bulletin BLN4WX","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLN4WX :Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"group-bulletin","message":{"addressee":"BLN4WX","addressee_raw":"BLN4WX ","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"4","group":"WX"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"4","text":"Test notice","group":"WX"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-033","title":"group-bulletin BLN1ABCDE","profile":"core-1.1","source":"APRS101 pp. 73-74","packet":"N0CALL>APRS::BLN1ABCDE:Test notice","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"group-bulletin","message":{"addressee":"BLN1ABCDE","addressee_raw":"BLN1ABCDE","text":"Test notice","message_id":null,"ack_requested":false,"bulletin_id":"1","group":"ABCDE"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"bulletin","identifier":"1","text":"Test notice","group":"ABCDE"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-034","title":"NWS reference is not an ack request","profile":"core-1.1","source":"APRS101 p. 74","packet":"N0CALL>APRS::NWS-WARN :092010z,THUNDER_STORM,AR_ASHLEY,{S9JbA","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nws-bulletin","message":{"addressee":"NWS-WARN","addressee_raw":"NWS-WARN ","text":"092010z,THUNDER_STORM,AR_ASHLEY,","message_id":"S9JbA","ack_requested":false,"reference_id":"S9JbA"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nws_bulletin","addressee":"NWS-WARN","text":"092010z,THUNDER_STORM,AR_ASHLEY,","reference_id":"S9JbA"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.reference_id"]} +{"id":"MSG-035","title":"NTS N#","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N#\\12\\R\\HXA\\N0CALL\\5\\REDMOND WA\\1800\\OCT 15{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N#\\12\\R\\HXA\\N0CALL\\5\\REDMOND WA\\1800\\OCT 15","message_id":"001","ack_requested":true},"nts":{"record_type":"N#","fields":["12","R","HXA","N0CALL","5","REDMOND WA","1800","OCT 15"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_header","number":"12","precedence":"R","handling":"HXA","originator":"N0CALL","check":"5","place":"REDMOND WA","time":"1800","date":"OCT 15"},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-036","title":"NTS NA","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :NA\\ADAM\\123 MAIN ST\\REDMOND WA\\98052{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"NA\\ADAM\\123 MAIN ST\\REDMOND WA\\98052","message_id":"001","ack_requested":true},"nts":{"record_type":"NA","fields":["ADAM","123 MAIN ST","REDMOND WA","98052"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_address","lines":["ADAM","123 MAIN ST","REDMOND WA","98052"]},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-037","title":"NTS NP","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :NP\\5550100{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"NP\\5550100","message_id":"001","ack_requested":true},"nts":{"record_type":"NP","fields":["5550100"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_phone","number":"5550100"},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-038","title":"NTS N1","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N1\\LINE 1 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N1\\LINE 1 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N1","fields":["LINE 1 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 1 TEXT","line":1},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-039","title":"NTS N2","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N2\\LINE 2 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N2\\LINE 2 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N2","fields":["LINE 2 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 2 TEXT","line":2},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-040","title":"NTS N3","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N3\\LINE 3 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N3\\LINE 3 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N3","fields":["LINE 3 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 3 TEXT","line":3},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-041","title":"NTS N4","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N4\\LINE 4 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N4\\LINE 4 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N4","fields":["LINE 4 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 4 TEXT","line":4},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-042","title":"NTS N5","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N5\\LINE 5 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N5\\LINE 5 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N5","fields":["LINE 5 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 5 TEXT","line":5},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-043","title":"NTS N6","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :N6\\LINE 6 TEXT{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N6\\LINE 6 TEXT","message_id":"001","ack_requested":true},"nts":{"record_type":"N6","fields":["LINE 6 TEXT"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_text","text":"LINE 6 TEXT","line":6},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-044","title":"NTS NS","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :NS\\TEST SENDER{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"NS\\TEST SENDER","message_id":"001","ack_requested":true},"nts":{"record_type":"NS","fields":["TEST SENDER"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_signature","text":"TEST SENDER"},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"MSG-045","title":"NTS NR","profile":"core-1.1","source":"APRS101 p. 75","packet":"N0CALL>APRS::W1AW :NR\\W1AW\\151800Z\\N0CALL\\151805Z{001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"NR\\W1AW\\151800Z\\N0CALL\\151805Z","message_id":"001","ack_requested":true},"nts":{"record_type":"NR","fields":["W1AW","151800Z","N0CALL","151805Z"]}},"note":"Generic APRS implementations may leave NTS as message text. Structured NTS decoding is an optional capability.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"radiogram","addressee":"W1AW","record":{"type":"nts_routing","received_from":"W1AW","received_at":"151800Z","sent_to":"N0CALL","sent_at":"151805Z"},"message_id":"001"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} diff --git a/packages/aprs/tests/vectors/net.jsonl b/packages/aprs/tests/vectors/net.jsonl index 4400861..e660145 100644 --- a/packages/aprs/tests/vectors/net.jsonl +++ b/packages/aprs/tests/vectors/net.jsonl @@ -11,5 +11,5 @@ {"id":"NET-011","title":"Preserve APRS-IS q token qAI","profile":"aprs-is","source":"A11 APRS-IS; FAP aprsis_paths_test.go","packet":"N0CALL>APRS,WIDE1-1,qAI,IGATE:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated_marker":false},{"address":"qAI","repeated_marker":false},{"address":"IGATE","repeated_marker":false}]},"kind":"status","status_text":"Ready","aprs_is":{"q_construct_raw":"qAI","following_path":["IGATE"]}},"note":"q token case is significant. This case asserts preservation, not server-side q validation or RF address validity.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"qAI","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.aprs_is.following_path","$.aprs_is.q_construct_raw"]} {"id":"NET-012","title":"Preserve APRS-IS q token qAS","profile":"aprs-is","source":"A11 APRS-IS; FAP aprsis_paths_test.go","packet":"N0CALL>APRS,WIDE1-1,qAS,IGATE:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated_marker":false},{"address":"qAS","repeated_marker":false},{"address":"IGATE","repeated_marker":false}]},"kind":"status","status_text":"Ready","aprs_is":{"q_construct_raw":"qAS","following_path":["IGATE"]}},"note":"q token case is significant. This case asserts preservation, not server-side q validation or RF address validity.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"qAS","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.aprs_is.following_path","$.aprs_is.q_construct_raw"]} {"id":"NET-013","title":"Preserve APRS-IS q token qAo","profile":"aprs-is","source":"A11 APRS-IS; FAP aprsis_paths_test.go","packet":"N0CALL>APRS,WIDE1-1,qAo,IGATE:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated_marker":false},{"address":"qAo","repeated_marker":false},{"address":"IGATE","repeated_marker":false}]},"kind":"status","status_text":"Ready","aprs_is":{"q_construct_raw":"qAo","following_path":["IGATE"]}},"note":"q token case is significant. This case asserts preservation, not server-side q validation or RF address validity.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"WIDE1-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.aprs_is.following_path","$.aprs_is.q_construct_raw"]} -{"id":"NET-014","title":"AEA transport adapter","profile":"aea-transport","source":"APRS101 pp. 83-85","packet":"N0CALL>DIGI1*>WIDE>APRS:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"DIGI1","repeated_marker":true},{"address":"WIDE","repeated_marker":false}]},"kind":"status","status_text":"Ready","normalized_tnc2":"N0CALL>APRS,DIGI1*,WIDE:>Ready"},"note":"Parse this through an AEA adapter, not by interpreting the entire remainder as a TNC2 destination.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"DIGI1","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.normalized_tnc2"],"gap":{"kind":"fields","reason":"AEA framing adapter is not implemented.","allowed_actual":{"$.type":"malformed","$.header":{"missing":true},"$.payload":{"missing":true}}}} +{"id":"NET-014","title":"AEA transport adapter","profile":"aea-transport","source":"APRS101 pp. 83-85","packet":"N0CALL>DIGI1*>WIDE>APRS:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[{"address":"DIGI1","repeated_marker":true},{"address":"WIDE","repeated_marker":false}]},"kind":"status","status_text":"Ready","normalized_tnc2":"N0CALL>APRS,DIGI1*,WIDE:>Ready"},"note":"Parse this through an AEA adapter, not by interpreting the entire remainder as a TNC2 destination.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"DIGI1","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.normalized_tnc2"]} {"id":"NET-015","title":"Third-party opaque payload","profile":"core-1.1","source":"APRS101 pp.85,87-88","packet":"N0GATE>APRS:}W1AW>APRS:{{zopaque","outcome":"accept","source_expected":{"header":{"source":"N0GATE","destination":"APRS","path":[]},"kind":"third-party","inner_packet":"W1AW>APRS:{{zopaque","inner":{"header":{"source":"W1AW","destination":"APRS","path":[]},"kind":"user-defined","user_id":"{","user_type":"z","data":"opaque"}},"expected":{"type":"packet","header":{"source":"N0GATE","destination":"APRS","path":[]},"payload":{"type":"third_party","packet":{"header":{"source":"W1AW","destination":"APRS","path":[]},"payload":{"type":"user_defined","user_id":"{","user_type":"z","data":"opaque"}}}},"unmapped":["$.inner_packet"]} diff --git a/packages/aprs/tests/vectors/nme.jsonl b/packages/aprs/tests/vectors/nme.jsonl index 8721101..cfb4ef7 100644 --- a/packages/aprs/tests/vectors/nme.jsonl +++ b/packages/aprs/tests/vectors/nme.jsonl @@ -1,36 +1,36 @@ -{"id":"NME-001","title":"GPGGA with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPGGA,102705,5157.9762,N,00029.3256,W,1,04,2.0,75.7,M,47.6,M,,*62","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGGA","fields_raw":["102705","5157.9762","N","00029.3256","W","1","04","2.0","75.7","M","47.6","M","",""],"checksum_supplied":"62","checksum_valid":true,"time_utc_raw":"102705","fix_quality":1,"satellites":4,"hdop":2.0,"geoid_separation_m":47.6,"dgps_age_raw":"","dgps_station_raw":""},"position":{"latitude_deg":51.96627,"longitude_deg":-0.48876},"altitude":{"meters":75.7,"reference":"mean-sea-level"}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gga","time_utc":"102705","dgps_age":"","dgps_station":"","fix_quality":1,"satellites":4,"hdop":2.0,"geoid_separation_m":47.6,"coordinates":{"latitude_deg":51.96627,"longitude_deg":-0.48876},"altitude_msl_m":75.7},"metadata":{"talker":"GP","checksum_supplied":"62","checksum_valid":true,"fields_raw":["102705","5157.9762","N","00029.3256","W","1","04","2.0","75.7","M","47.6","M","",""]}}},"unmapped":["$.altitude.reference"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-002","title":"GPGLL with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPGLL,2554.459,N,08020.187,W,154027.281,A*22","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["2554.459","N","08020.187","W","154027.281","A"],"checksum_supplied":"22","checksum_valid":true,"time_utc_raw":"154027.281","fix_status":"A"},"position":{"latitude_deg":25.90765,"longitude_deg":-80.33645}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gll","time_utc":"154027.281","fix_status":"A","coordinates":{"latitude_deg":25.90765,"longitude_deg":-80.33645}},"metadata":{"talker":"GP","checksum_supplied":"22","checksum_valid":true,"fields_raw":["2554.459","N","08020.187","W","154027.281","A"]}}},"unmapped":[],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-003","title":"GPRMC with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPRMC,063909,A,3349.4302,N,11700.3721,W,43.022,89.3,291099,13.6,E*52","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPRMC","fields_raw":["063909","A","3349.4302","N","11700.3721","W","43.022","89.3","291099","13.6","E"],"checksum_supplied":"52","checksum_valid":true,"time_utc_raw":"063909","fix_status":"A","date_ddmmyy_raw":"291099","magnetic_variation_raw":"13.6","magnetic_variation_direction":"E"},"position":{"latitude_deg":33.823836666667,"longitude_deg":-117.006201666667},"motion":{"speed_knots":43.022,"speed_kmh":79.676744,"course_deg":89.3}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"rmc","time_utc":"063909","date_ddmmyy":"291099","fix_status":"A","magnetic_variation_direction":"E","magnetic_variation":13.6,"coordinates":{"latitude_deg":33.823836666667,"longitude_deg":-117.006201666667},"speed_knots":43.022,"course_deg":89.3},"metadata":{"talker":"GP","checksum_supplied":"52","checksum_valid":true,"fields_raw":["063909","A","3349.4302","N","11700.3721","W","43.022","89.3","291099","13.6","E"]}}},"unmapped":["$.motion.speed_kmh"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-004","title":"GPVTG with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPVTG,318.7,T,,M,35.1,N,65.0,K*69","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPVTG","fields_raw":["318.7","T","","M","35.1","N","65.0","K"],"checksum_supplied":"69","checksum_valid":true},"motion":{"course_true_deg":318.7,"course_magnetic_deg":null,"speed_knots":35.1,"speed_kmh_reported":65.0}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"vtg","speed_knots":35.1},"metadata":{"talker":"GP","checksum_supplied":"69","checksum_valid":true,"fields_raw":["318.7","T","","M","35.1","N","65.0","K"]}}},"unmapped":["$.motion.course_magnetic_deg","$.motion.course_true_deg","$.motion.speed_kmh_reported"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-005","title":"GPWPL with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPWPL,4903.50,N,07201.75,W,AID2*2A","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPWPL","fields_raw":["4903.50","N","07201.75","W","AID2"],"checksum_supplied":"2A","checksum_valid":true},"waypoint":{"name":"AID2","latitude_deg":49.058333333333,"longitude_deg":-72.029166666667}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"wpl","name":"AID2","coordinates":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667}},"metadata":{"talker":"GP","checksum_supplied":"2A","checksum_valid":true,"fields_raw":["4903.50","N","07201.75","W","AID2"]}}},"unmapped":[],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-006","title":"GPGGA with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,*4F","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGGA","fields_raw":["123519","4807.038","N","01131.000","E","1","08","0.9","545.4","M","47.0","M","",""],"checksum_supplied":"4F","checksum_valid":true,"time_utc_raw":"123519","fix_quality":1,"satellites":8,"hdop":0.9,"geoid_separation_m":47.0,"dgps_age_raw":"","dgps_station_raw":""},"position":{"latitude_deg":48.1173,"longitude_deg":11.516666666667},"altitude":{"meters":545.4,"reference":"mean-sea-level"}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gga","time_utc":"123519","dgps_age":"","dgps_station":"","fix_quality":1,"satellites":8,"hdop":0.9,"geoid_separation_m":47.0,"coordinates":{"latitude_deg":48.1173,"longitude_deg":11.516666666667},"altitude_msl_m":545.4},"metadata":{"talker":"GP","checksum_supplied":"4F","checksum_valid":true,"fields_raw":["123519","4807.038","N","01131.000","E","1","08","0.9","545.4","M","47.0","M","",""]}}},"unmapped":["$.altitude.reference"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-007","title":"GPGLL with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":[],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-008","title":"GPRMC with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPRMC,180000.50,A,3350.000,S,15112.000,E,0.0,0.0,151026,0.0,E*4B","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPRMC","fields_raw":["180000.50","A","3350.000","S","15112.000","E","0.0","0.0","151026","0.0","E"],"checksum_supplied":"4B","checksum_valid":true,"time_utc_raw":"180000.50","fix_status":"A","date_ddmmyy_raw":"151026","magnetic_variation_raw":"0.0","magnetic_variation_direction":"E"},"position":{"latitude_deg":-33.833333333333,"longitude_deg":151.2},"motion":{"speed_knots":0.0,"speed_kmh":0.0,"course_deg":0.0}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"rmc","time_utc":"180000.50","date_ddmmyy":"151026","fix_status":"A","magnetic_variation_direction":"E","magnetic_variation":0.0,"coordinates":{"latitude_deg":-33.833333333333,"longitude_deg":151.2},"speed_knots":0.0,"course_deg":0.0},"metadata":{"talker":"GP","checksum_supplied":"4B","checksum_valid":true,"fields_raw":["180000.50","A","3350.000","S","15112.000","E","0.0","0.0","151026","0.0","E"]}}},"unmapped":["$.motion.speed_kmh"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-009","title":"GLL without optional checksum","profile":"nmea-supported","source":"APRS101 p. 34; FAP nmea_test.go","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":null,"checksum_valid":null,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":null,"checksum_valid":null,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":[],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-010","title":"GLL checksum bad","profile":"nmea-supported","source":"FAP nmea_test.go","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*00","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"nmea-checksum","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*00"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-011","title":"GLL checksum empty","profile":"nmea-supported","source":"FAP nmea_test.go","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"nmea-checksum","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-012","title":"Invalid fix GPRMC","profile":"nmea-supported","source":"FAP nmea_test.go; APRS101 p. 25","packet":"N0CALL>APRS:$GPRMC,041518,V,,,,,,,230309,,*33","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPRMC","fields_raw":["041518","V","","","","","","","230309","",""],"checksum_supplied":"33","checksum_valid":true,"time_utc_raw":"041518","fix_status":"V","date_ddmmyy_raw":"230309","magnetic_variation_raw":"","magnetic_variation_direction":""},"position_usable":false},"note":"Checksum is deliberately correct, so this case isolates invalid fix status from checksum failure.","expected":{"original_wire":"N0CALL>APRS:$GPRMC,041518,V,,,,,,,230309,,*33"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-013","title":"Invalid fix GPGLL","profile":"nmea-supported","source":"FAP nmea_test.go; APRS101 p. 25","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,V*26","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","V"],"checksum_supplied":"26","checksum_valid":true,"time_utc_raw":"225444","fix_status":"V"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"position_usable":false},"note":"Checksum is deliberately correct, so this case isolates invalid fix status from checksum failure.","expected":{"original_wire":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,V*26"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-014","title":"Invalid fix GPGGA","profile":"nmea-supported","source":"FAP nmea_test.go; APRS101 p. 25","packet":"N0CALL>APRS:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*4E","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGGA","fields_raw":["123519","4807.038","N","01131.000","E","0","08","0.9","545.4","M","47.0","M","",""],"checksum_supplied":"4E","checksum_valid":true,"time_utc_raw":"123519","fix_quality":0,"satellites":8,"hdop":0.9,"geoid_separation_m":47.0,"dgps_age_raw":"","dgps_station_raw":""},"position":{"latitude_deg":48.1173,"longitude_deg":11.516666666667},"altitude":{"meters":545.4,"reference":"mean-sea-level"},"position_usable":false},"note":"Checksum is deliberately correct, so this case isolates invalid fix status from checksum failure.","expected":{"original_wire":"N0CALL>APRS:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*4E"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-015","title":"Destination symbol GPSC30","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSC30:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSC30","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSC30","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-016","title":"Destination symbol GPSE30","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSE30:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSE30","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"\\","table":"alternate","code":">","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSE30","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"\\","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-017","title":"Destination symbol GPSMV","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSMV:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSMV","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSMV","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-018","title":"Destination symbol GPSNV3","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSNV3:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSNV3","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"3","table":"alternate","code":">","overlay":"3"}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSNV3","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"3","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-019","title":"Destination symbol GPSBM","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSBM:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSBM","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":",","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSBM","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":","},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-020","title":"Destination symbol GPSE12","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSE12:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSE12","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"\\","table":"alternate","code":",","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSE12","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"\\","code":","},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-001","title":"GPGGA with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPGGA,102705,5157.9762,N,00029.3256,W,1,04,2.0,75.7,M,47.6,M,,*62","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGGA","fields_raw":["102705","5157.9762","N","00029.3256","W","1","04","2.0","75.7","M","47.6","M","",""],"checksum_supplied":"62","checksum_valid":true,"time_utc_raw":"102705","fix_quality":1,"satellites":4,"hdop":2.0,"geoid_separation_m":47.6,"dgps_age_raw":"","dgps_station_raw":""},"position":{"latitude_deg":51.96627,"longitude_deg":-0.48876},"altitude":{"meters":75.7,"reference":"mean-sea-level"}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gga","time_utc":"102705","dgps_age":null,"dgps_station":null,"fix_quality":1,"satellites":4,"hdop":2.0,"geoid_separation_m":47.6,"coordinates":{"latitude_deg":51.96627,"longitude_deg":-0.48876},"altitude_msl_m":75.7},"metadata":{"talker":"GP","checksum_supplied":"62","checksum_valid":true,"fields_raw":["102705","5157.9762","N","00029.3256","W","1","04","2.0","75.7","M","47.6","M","",""]}}},"unmapped":["$.altitude.reference"]} +{"id":"NME-002","title":"GPGLL with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPGLL,2554.459,N,08020.187,W,154027.281,A*22","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["2554.459","N","08020.187","W","154027.281","A"],"checksum_supplied":"22","checksum_valid":true,"time_utc_raw":"154027.281","fix_status":"A"},"position":{"latitude_deg":25.90765,"longitude_deg":-80.33645}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gll","time_utc":"154027.281","fix_status":"A","coordinates":{"latitude_deg":25.90765,"longitude_deg":-80.33645}},"metadata":{"talker":"GP","checksum_supplied":"22","checksum_valid":true,"fields_raw":["2554.459","N","08020.187","W","154027.281","A"]}}},"unmapped":[]} +{"id":"NME-003","title":"GPRMC with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPRMC,063909,A,3349.4302,N,11700.3721,W,43.022,89.3,291099,13.6,E*52","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPRMC","fields_raw":["063909","A","3349.4302","N","11700.3721","W","43.022","89.3","291099","13.6","E"],"checksum_supplied":"52","checksum_valid":true,"time_utc_raw":"063909","fix_status":"A","date_ddmmyy_raw":"291099","magnetic_variation_raw":"13.6","magnetic_variation_direction":"E"},"position":{"latitude_deg":33.823836666667,"longitude_deg":-117.006201666667},"motion":{"speed_knots":43.022,"speed_kmh":79.676744,"course_deg":89.3}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"rmc","time_utc":"063909","date_ddmmyy":"291099","fix_status":"A","magnetic_variation_direction":"E","magnetic_variation":13.6,"coordinates":{"latitude_deg":33.823836666667,"longitude_deg":-117.006201666667},"speed_knots":43.022,"course_deg":89.3},"metadata":{"talker":"GP","checksum_supplied":"52","checksum_valid":true,"fields_raw":["063909","A","3349.4302","N","11700.3721","W","43.022","89.3","291099","13.6","E"]}}},"unmapped":["$.motion.speed_kmh"]} +{"id":"NME-004","title":"GPVTG with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPVTG,318.7,T,,M,35.1,N,65.0,K*69","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPVTG","fields_raw":["318.7","T","","M","35.1","N","65.0","K"],"checksum_supplied":"69","checksum_valid":true},"motion":{"course_true_deg":318.7,"course_magnetic_deg":null,"speed_knots":35.1,"speed_kmh_reported":65.0}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"vtg","speed_knots":35.1,"course_true_deg":318.7,"course_magnetic_deg":null,"speed_kmh_reported":65.0},"metadata":{"talker":"GP","checksum_supplied":"69","checksum_valid":true,"fields_raw":["318.7","T","","M","35.1","N","65.0","K"]}}},"unmapped":[]} +{"id":"NME-005","title":"GPWPL with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPWPL,4903.50,N,07201.75,W,AID2*2A","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPWPL","fields_raw":["4903.50","N","07201.75","W","AID2"],"checksum_supplied":"2A","checksum_valid":true},"waypoint":{"name":"AID2","latitude_deg":49.058333333333,"longitude_deg":-72.029166666667}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"wpl","name":"AID2","coordinates":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667}},"metadata":{"talker":"GP","checksum_supplied":"2A","checksum_valid":true,"fields_raw":["4903.50","N","07201.75","W","AID2"]}}},"unmapped":[]} +{"id":"NME-006","title":"GPGGA with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,*4F","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGGA","fields_raw":["123519","4807.038","N","01131.000","E","1","08","0.9","545.4","M","47.0","M","",""],"checksum_supplied":"4F","checksum_valid":true,"time_utc_raw":"123519","fix_quality":1,"satellites":8,"hdop":0.9,"geoid_separation_m":47.0,"dgps_age_raw":"","dgps_station_raw":""},"position":{"latitude_deg":48.1173,"longitude_deg":11.516666666667},"altitude":{"meters":545.4,"reference":"mean-sea-level"}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gga","time_utc":"123519","dgps_age":null,"dgps_station":null,"fix_quality":1,"satellites":8,"hdop":0.9,"geoid_separation_m":47.0,"coordinates":{"latitude_deg":48.1173,"longitude_deg":11.516666666667},"altitude_msl_m":545.4},"metadata":{"talker":"GP","checksum_supplied":"4F","checksum_valid":true,"fields_raw":["123519","4807.038","N","01131.000","E","1","08","0.9","545.4","M","47.0","M","",""]}}},"unmapped":["$.altitude.reference"]} +{"id":"NME-007","title":"GPGLL with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":[]} +{"id":"NME-008","title":"GPRMC with correct checksum","profile":"nmea-supported","source":"APRS101 pp. 25,34; FAP nmea.go; A11 WPL correction","packet":"N0CALL>APRS:$GPRMC,180000.50,A,3350.000,S,15112.000,E,0.0,0.0,151026,0.0,E*4B","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPRMC","fields_raw":["180000.50","A","3350.000","S","15112.000","E","0.0","0.0","151026","0.0","E"],"checksum_supplied":"4B","checksum_valid":true,"time_utc_raw":"180000.50","fix_status":"A","date_ddmmyy_raw":"151026","magnetic_variation_raw":"0.0","magnetic_variation_direction":"E"},"position":{"latitude_deg":-33.833333333333,"longitude_deg":151.2},"motion":{"speed_knots":0.0,"speed_kmh":0.0,"course_deg":0.0}},"note":"All raw sentence fields are included. NMEA field interpretation is the optional NMEA capability; VTG has no position, and WPL describes a waypoint rather than the transmitting station.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"rmc","time_utc":"180000.50","date_ddmmyy":"151026","fix_status":"A","magnetic_variation_direction":"E","magnetic_variation":0.0,"coordinates":{"latitude_deg":-33.833333333333,"longitude_deg":151.2},"speed_knots":0.0,"course_deg":0.0},"metadata":{"talker":"GP","checksum_supplied":"4B","checksum_valid":true,"fields_raw":["180000.50","A","3350.000","S","15112.000","E","0.0","0.0","151026","0.0","E"]}}},"unmapped":["$.motion.speed_kmh"]} +{"id":"NME-009","title":"GLL without optional checksum","profile":"nmea-supported","source":"APRS101 p. 34; FAP nmea_test.go","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":null,"checksum_valid":null,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"nmea","sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":null,"checksum_valid":null,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":[]} +{"id":"NME-010","title":"GLL checksum bad","profile":"nmea-supported","source":"FAP nmea_test.go","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*00","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"nmea-checksum","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*00"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"NME-011","title":"GLL checksum empty","profile":"nmea-supported","source":"FAP nmea_test.go","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"nmea-checksum","position_usable":false},"expected":{"original_wire":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"NME-012","title":"Invalid fix GPRMC","profile":"nmea-supported","source":"FAP nmea_test.go; APRS101 p. 25","packet":"N0CALL>APRS:$GPRMC,041518,V,,,,,,,230309,,*33","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPRMC","fields_raw":["041518","V","","","","","","","230309","",""],"checksum_supplied":"33","checksum_valid":true,"time_utc_raw":"041518","fix_status":"V","date_ddmmyy_raw":"230309","magnetic_variation_raw":"","magnetic_variation_direction":""},"position_usable":false},"note":"Checksum is deliberately correct, so this case isolates invalid fix status from checksum failure.","expected":{"original_wire":"N0CALL>APRS:$GPRMC,041518,V,,,,,,,230309,,*33"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"NME-013","title":"Invalid fix GPGLL","profile":"nmea-supported","source":"FAP nmea_test.go; APRS101 p. 25","packet":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,V*26","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","V"],"checksum_supplied":"26","checksum_valid":true,"time_utc_raw":"225444","fix_status":"V"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"position_usable":false},"note":"Checksum is deliberately correct, so this case isolates invalid fix status from checksum failure.","expected":{"original_wire":"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,V*26"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"NME-014","title":"Invalid fix GPGGA","profile":"nmea-supported","source":"FAP nmea_test.go; APRS101 p. 25","packet":"N0CALL>APRS:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*4E","outcome":"reject-fix","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGGA","fields_raw":["123519","4807.038","N","01131.000","E","0","08","0.9","545.4","M","47.0","M","",""],"checksum_supplied":"4E","checksum_valid":true,"time_utc_raw":"123519","fix_quality":0,"satellites":8,"hdop":0.9,"geoid_separation_m":47.0,"dgps_age_raw":"","dgps_station_raw":""},"position":{"latitude_deg":48.1173,"longitude_deg":11.516666666667},"altitude":{"meters":545.4,"reference":"mean-sea-level"},"position_usable":false},"note":"Checksum is deliberately correct, so this case isolates invalid fix status from checksum failure.","expected":{"original_wire":"N0CALL>APRS:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*4E"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"NME-015","title":"Destination symbol GPSC30","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSC30:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSC30","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSC30","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-016","title":"Destination symbol GPSE30","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSE30:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSE30","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"\\","table":"alternate","code":">","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSE30","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"\\","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-017","title":"Destination symbol GPSMV","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSMV:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSMV","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSMV","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-018","title":"Destination symbol GPSNV3","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSNV3:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSNV3","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"3","table":"alternate","code":">","overlay":"3"}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSNV3","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"3","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-019","title":"Destination symbol GPSBM","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSBM:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSBM","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":",","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSBM","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":","},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-020","title":"Destination symbol GPSE12","profile":"nmea-supported","source":"APRS101 pp. 90-93, Appendix 2","packet":"N0CALL-7>GPSE12:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSE12","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"\\","table":"alternate","code":",","overlay":null}},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSE12","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"\\","code":","},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} {"id":"NME-021","title":"Information symbol wins over destination and SSID","profile":"core-1.1","source":"APRS101 p. 93","packet":"N0CALL-7>GPSMV:!0123.45N/01234.56Wj","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPSMV","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":1.390833333333,"longitude_deg":-12.576,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPSMV","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":1.390833333333,"longitude_deg":-12.576,"ambiguity":0,"symbol":{"table_id":"/","code":"j"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} -{"id":"NME-022","title":"Historical source-SSID icon 1","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-1>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-1","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"a","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"a"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-023","title":"Historical source-SSID icon 2","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-2>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-2","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"U","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-2","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"U"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-024","title":"Historical source-SSID icon 3","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-3>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-3","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"f","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-3","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"f"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-025","title":"Historical source-SSID icon 4","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-4>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-4","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"b","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-4","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"b"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-026","title":"Historical source-SSID icon 5","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-5>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-5","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"Y","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-5","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"Y"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-027","title":"Historical source-SSID icon 6","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-6>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-6","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"X","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-6","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"X"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-028","title":"Historical source-SSID icon 7","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-7>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"'","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"'"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-029","title":"Historical source-SSID icon 8","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-8>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-8","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"s","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-8","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"s"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-030","title":"Historical source-SSID icon 9","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-9>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-9","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-9","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-031","title":"Historical source-SSID icon 10","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-10>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-10","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"<","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-10","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"<"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-032","title":"Historical source-SSID icon 11","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-11>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-11","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"O","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"O"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-033","title":"Historical source-SSID icon 12","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-12>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-12","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-12","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"j"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-034","title":"Historical source-SSID icon 13","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-13>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-13","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"R","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-13","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"R"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-035","title":"Historical source-SSID icon 14","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-14>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-14","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"k","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"k"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"NME-036","title":"Historical source-SSID icon 15","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-15>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-15","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"v","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-15","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"v"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"NME-022","title":"Historical source-SSID icon 1","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-1>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-1","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"a","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"a"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-023","title":"Historical source-SSID icon 2","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-2>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-2","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"U","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-2","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"U"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-024","title":"Historical source-SSID icon 3","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-3>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-3","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"f","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-3","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"f"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-025","title":"Historical source-SSID icon 4","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-4>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-4","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"b","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-4","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"b"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-026","title":"Historical source-SSID icon 5","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-5>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-5","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"Y","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-5","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"Y"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-027","title":"Historical source-SSID icon 6","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-6>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-6","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"X","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-6","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"X"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-028","title":"Historical source-SSID icon 7","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-7>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-7","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"'","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-7","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"'"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-029","title":"Historical source-SSID icon 8","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-8>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-8","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"s","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-8","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"s"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-030","title":"Historical source-SSID icon 9","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-9>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-9","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-9","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":">"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-031","title":"Historical source-SSID icon 10","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-10>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-10","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"<","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-10","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"<"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-032","title":"Historical source-SSID icon 11","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-11>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-11","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"O","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"O"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-033","title":"Historical source-SSID icon 12","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-12>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-12","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-12","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"j"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-034","title":"Historical source-SSID icon 13","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-13>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-13","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"R","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-13","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"R"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-035","title":"Historical source-SSID icon 14","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-14>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-14","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"k","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"k"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"NME-036","title":"Historical source-SSID icon 15","profile":"historical-1.0","source":"APRS101 p. 93; A11 SSIDs","packet":"N0CALL-15>GPS:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"header":{"source":"N0CALL-15","destination":"GPS","path":[]},"kind":"nmea","format":"nmea","nmea":{"sentence":"GPGLL","fields_raw":["4916.45","N","12311.12","W","225444","A"],"checksum_supplied":"31","checksum_valid":true,"time_utc_raw":"225444","fix_status":"A"},"position":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333},"symbol":{"table_id_raw":"/","table":"primary","code":"v","overlay":null}},"note":"The current linked SSID recommendations explicitly make this legacy icon inference optional/obsolete; do not require it in the modern core.","expected":{"type":"packet","header":{"source":"N0CALL-15","destination":"GPS","path":[]},"payload":{"type":"nmea","symbol":{"table_id":"/","code":"v"},"sentence":{"type":"gll","time_utc":"225444","fix_status":"A","coordinates":{"latitude_deg":49.274166666667,"longitude_deg":-123.185333333333}},"metadata":{"talker":"GP","checksum_supplied":"31","checksum_valid":true,"fields_raw":["4916.45","N","12311.12","W","225444","A"]}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} diff --git a/packages/aprs/tests/vectors/obj.jsonl b/packages/aprs/tests/vectors/obj.jsonl index 7e9cabb..043418f 100644 --- a/packages/aprs/tests/vectors/obj.jsonl +++ b/packages/aprs/tests/vectors/obj.jsonl @@ -1,53 +1,53 @@ -{"id":"OBJ-001","title":"Object LEADER alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"LEADER","name_raw":"LEADER ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-002","title":"Object LEADER alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;LEADER _092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"LEADER","name_raw":"LEADER ","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-003","title":"Object leader alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;leader *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"leader","name_raw":"leader ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"leader","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-004","title":"Object leader alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;leader _092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"leader","name_raw":"leader ","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"leader","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-005","title":"Object A alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;A *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"A","name_raw":"A ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"A","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-006","title":"Object A alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;A _092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"A","name_raw":"A ","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"A","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-007","title":"Object ABCDEFGHI alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;ABCDEFGHI*092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"ABCDEFGHI","name_raw":"ABCDEFGHI","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"ABCDEFGHI","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-008","title":"Object ABCDEFGHI alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;ABCDEFGHI_092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"ABCDEFGHI","name_raw":"ABCDEFGHI","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"ABCDEFGHI","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-009","title":"Object AID #2 alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;AID #2 *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AID #2","name_raw":"AID #2 ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AID #2","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-010","title":"Object AID #2 alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;AID #2 _092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AID #2","name_raw":"AID #2 ","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AID #2","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-011","title":"Compressed object","profile":"core-1.1","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;MOBILE *092345z/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"MOBILE","name_raw":"MOBILE ","alive":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"note":"Defined format; the addendum discourages its use on RF, which is not a syntax prohibition.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"MOBILE","alive":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-012","title":"Moving object","profile":"core-1.1","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;MOBILE *092345z4903.50N/07201.75W>088/036Moving","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"MOBILE","name_raw":"MOBILE ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"Moving","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"Moving","name":"MOBILE","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-013","title":"Item AID #2 alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)AID #2!4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"AID #2","name_raw":"AID #2","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-014","title":"Item AID #2 alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)AID #2_4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"AID #2","name_raw":"AID #2","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-015","title":"Item abc alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)abc!4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"abc","name_raw":"abc","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"abc","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-016","title":"Item abc alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)abc_4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"abc","name_raw":"abc","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"abc","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-017","title":"Item ABCDEFGHI alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)ABCDEFGHI!4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"ABCDEFGHI","name_raw":"ABCDEFGHI","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"ABCDEFGHI","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-018","title":"Item ABCDEFGHI alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)ABCDEFGHI_4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"ABCDEFGHI","name_raw":"ABCDEFGHI","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"ABCDEFGHI","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-019","title":"Item MixedCase alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)MixedCase!4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"MixedCase","name_raw":"MixedCase","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"MixedCase","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-020","title":"Item MixedCase alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)MixedCase_4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"MixedCase","name_raw":"MixedCase","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"MixedCase","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-021","title":"Compressed item","profile":"core-1.1","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)MOBILE!/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"MOBILE","name_raw":"MOBILE","alive":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Defined format; the addendum discourages its use on RF, which is not a syntax prohibition.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"MOBILE","alive":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-022","title":"Moving item","profile":"core-1.1","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)MOBILE!4903.50N/07201.75W>088/036Moving","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"MOBILE","name_raw":"MOBILE","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"Moving","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"Moving","name":"MOBILE","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"course_deg":88,"speed_knots":36}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-023","title":"Area shape 0","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl010/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":0,"shape":"open-circle","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"center"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":0,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-024","title":"Area shape 1","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl110/310{5}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":1,"shape":"line-down-right","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right","corridor_half_width_miles":5}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":1,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.corridor_half_width_miles","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-025","title":"Area shape 2","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl210/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":2,"shape":"open-ellipse","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":2,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-026","title":"Area shape 3","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl310/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":3,"shape":"open-triangle","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":3,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-027","title":"Area shape 4","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl410/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-028","title":"Area shape 5","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl510/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":5,"shape":"filled-circle","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"center"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":5,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-029","title":"Area shape 6","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl610/310{5}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":6,"shape":"line-down-left","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-left","corridor_half_width_miles":5}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":6,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.corridor_half_width_miles","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-030","title":"Area shape 7","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl710/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":7,"shape":"filled-ellipse","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":7,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-031","title":"Area shape 8","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl810/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":8,"shape":"filled-triangle","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":8,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-032","title":"Area shape 9","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl910/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":9,"shape":"filled-box","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":9,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-033","title":"Area color 0","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/020","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":0,"color":"black","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":0}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-034","title":"Area color 1","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/120","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":1,"color":"blue","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":1}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-035","title":"Area color 2","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/220","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":2,"color":"green","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":2}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-036","title":"Area color 3","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/320","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":3,"color":"cyan","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":3}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-037","title":"Area color 4","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/420","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":4,"color":"red","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":4}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-038","title":"Area color 5","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/520","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":5,"color":"violet","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":5}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-039","title":"Area color 6","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/620","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":6,"color":"yellow","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":6}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-040","title":"Area color 7","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/720","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":7,"color":"gray","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":7}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-041","title":"Area color 8","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/820","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":8,"color":"black","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":8}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-042","title":"Area color 9","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/920","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":9,"color":"blue","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":9}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-043","title":"Area color 10","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101020","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":10,"color":"green","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-044","title":"Area color 11","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101120","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":11,"color":"cyan","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":11}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-045","title":"Area color 12","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101220","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":12,"color":"red","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":12}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-046","title":"Area color 13","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101320","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":13,"color":"violet","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":13}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-047","title":"Area color 14","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101420","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":14,"color":"yellow","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":14}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-048","title":"Area color 15","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101520","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":15,"color":"gray","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":15}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-049","title":"Signpost 5","profile":"core-1.1","source":"APRS101 p. 61","packet":"N0CALL>APRS:)SIGN!4903.50N\\07201.75Wm{5}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"SIGN","name_raw":"SIGN","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"m","overlay":null},"comment":"","signpost":{"label":"5"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"SIGN","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"m"},"extensions":{"signpost":{"label":"5"}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-050","title":"Signpost 55","profile":"core-1.1","source":"APRS101 p. 61","packet":"N0CALL>APRS:)SIGN!4903.50N\\07201.75Wm{55}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"SIGN","name_raw":"SIGN","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"m","overlay":null},"comment":"","signpost":{"label":"55"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"SIGN","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"m"},"extensions":{"signpost":{"label":"55"}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-051","title":"Signpost ABC","profile":"core-1.1","source":"APRS101 p. 61","packet":"N0CALL>APRS:)SIGN!4903.50N\\07201.75Wm{ABC}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"SIGN","name_raw":"SIGN","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"m","overlay":null},"comment":"","signpost":{"label":"ABC"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"SIGN","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"m"},"extensions":{"signpost":{"label":"ABC"}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-052","title":"Object name boundary 'STATION '","profile":"core-1.1","source":"A11 names","packet":"N0CALL>APRS:;STATION *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STATION","name_raw":"STATION ","alive":true,"timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STATION","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OBJ-053","title":"Object name boundary ' STATION '","profile":"strict-validation","source":"A11 names","packet":"N0CALL>APRS:; STATION *092345z4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"leading-space-in-name"},"expected":{"original_wire":"N0CALL>APRS:; STATION *092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source.","gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OBJ-001","title":"Object LEADER alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;LEADER *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"LEADER","name_raw":"LEADER ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-002","title":"Object LEADER alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;LEADER _092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"LEADER","name_raw":"LEADER ","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-003","title":"Object leader alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;leader *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"leader","name_raw":"leader ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"leader","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-004","title":"Object leader alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;leader _092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"leader","name_raw":"leader ","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"leader","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-005","title":"Object A alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;A *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"A","name_raw":"A ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"A","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-006","title":"Object A alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;A _092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"A","name_raw":"A ","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"A","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-007","title":"Object ABCDEFGHI alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;ABCDEFGHI*092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"ABCDEFGHI","name_raw":"ABCDEFGHI","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"ABCDEFGHI","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-008","title":"Object ABCDEFGHI alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;ABCDEFGHI_092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"ABCDEFGHI","name_raw":"ABCDEFGHI","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"ABCDEFGHI","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-009","title":"Object AID #2 alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;AID #2 *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AID #2","name_raw":"AID #2 ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AID #2","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-010","title":"Object AID #2 alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:;AID #2 _092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AID #2","name_raw":"AID #2 ","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AID #2","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-011","title":"Compressed object","profile":"core-1.1","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;MOBILE *092345z/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"MOBILE","name_raw":"MOBILE ","alive":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"note":"Defined format; the addendum discourages its use on RF, which is not a syntax prohibition.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"MOBILE","alive":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-012","title":"Moving object","profile":"core-1.1","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:;MOBILE *092345z4903.50N/07201.75W>088/036Moving","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"MOBILE","name_raw":"MOBILE ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"Moving","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"Moving","name":"MOBILE","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-013","title":"Item AID #2 alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)AID #2!4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"AID #2","name_raw":"AID #2","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"]} +{"id":"OBJ-014","title":"Item AID #2 alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)AID #2_4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"AID #2","name_raw":"AID #2","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"]} +{"id":"OBJ-015","title":"Item abc alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)abc!4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"abc","name_raw":"abc","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"abc","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"]} +{"id":"OBJ-016","title":"Item abc alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)abc_4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"abc","name_raw":"abc","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"abc","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"]} +{"id":"OBJ-017","title":"Item ABCDEFGHI alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)ABCDEFGHI!4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"ABCDEFGHI","name_raw":"ABCDEFGHI","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"ABCDEFGHI","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"]} +{"id":"OBJ-018","title":"Item ABCDEFGHI alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)ABCDEFGHI_4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"ABCDEFGHI","name_raw":"ABCDEFGHI","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"ABCDEFGHI","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"]} +{"id":"OBJ-019","title":"Item MixedCase alive=True","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)MixedCase!4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"MixedCase","name_raw":"MixedCase","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"MixedCase","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"]} +{"id":"OBJ-020","title":"Item MixedCase alive=False","profile":"core-1.1","source":"APRS101 pp. 57-59; A11 names","packet":"N0CALL>APRS:)MixedCase_4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"MixedCase","name_raw":"MixedCase","alive":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"MixedCase","alive":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"]} +{"id":"OBJ-021","title":"Compressed item","profile":"core-1.1","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)MOBILE!/5L!!<*e7>7P[","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"MOBILE","name_raw":"MOBILE","alive":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"motion":{"course_deg":88,"speed_knots":36.232012168838,"speed_kmh":67.101686536688},"comment":""},"note":"Defined format; the addendum discourages its use on RF, which is not a syntax prohibition.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"MOBILE","alive":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":">"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"motion":{"course_deg":88,"speed_knots":36.232012168838}}}},"unmapped":["$.compression.type_value","$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table"]} +{"id":"OBJ-022","title":"Moving item","profile":"core-1.1","source":"APRS101 pp. 58-59","packet":"N0CALL>APRS:)MOBILE!4903.50N/07201.75W>088/036Moving","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"MOBILE","name_raw":"MOBILE","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":"Moving","motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"Moving","name":"MOBILE","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"course_deg":88,"speed_knots":36}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table"]} +{"id":"OBJ-023","title":"Area shape 0","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl010/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":0,"shape":"open-circle","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"center"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":0,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-024","title":"Area shape 1","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl110/310{5}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":1,"shape":"line-down-right","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right","corridor_half_width_miles":5}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":1,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10,"corridor_half_width_miles":5}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-025","title":"Area shape 2","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl210/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":2,"shape":"open-ellipse","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":2,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-026","title":"Area shape 3","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl310/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":3,"shape":"open-triangle","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":3,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-027","title":"Area shape 4","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl410/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-028","title":"Area shape 5","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl510/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":5,"shape":"filled-circle","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"center"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":5,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-029","title":"Area shape 6","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl610/310{5}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":6,"shape":"line-down-left","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-left","corridor_half_width_miles":5}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":6,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10,"corridor_half_width_miles":5}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-030","title":"Area shape 7","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl710/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":7,"shape":"filled-ellipse","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":7,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-031","title":"Area shape 8","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl810/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":8,"shape":"filled-triangle","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":8,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-032","title":"Area shape 9","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;AREA *092345z4903.50N\\07201.75Wl910/310","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"AREA","name_raw":"AREA ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":9,"shape":"filled-box","color_code":3,"color":"cyan","intensity":"high","latitude_offset_code":10,"longitude_offset_code":10,"latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.066666666667,"transmitted_anchor":"lower-right"}},"note":"Use offset_code^2/1500 degrees. The transmitted coordinate is the lower reference point (circle center), not the upper offset-reference point. See ambiguity register for triangles/ellipses.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"AREA","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":9,"color_code":3,"latitude_offset_code":10,"longitude_offset_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-033","title":"Area color 0","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/020","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":0,"color":"black","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":0}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-034","title":"Area color 1","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/120","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":1,"color":"blue","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":1}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-035","title":"Area color 2","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/220","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":2,"color":"green","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":2}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-036","title":"Area color 3","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/320","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":3,"color":"cyan","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":3}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-037","title":"Area color 4","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/420","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":4,"color":"red","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":4}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-038","title":"Area color 5","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/520","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":5,"color":"violet","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":5}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-039","title":"Area color 6","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/620","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":6,"color":"yellow","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":6}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-040","title":"Area color 7","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/720","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":7,"color":"gray","intensity":"high","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":7}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-041","title":"Area color 8","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/820","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":8,"color":"black","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":8}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-042","title":"Area color 9","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl410/920","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":9,"color":"blue","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":9}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-043","title":"Area color 10","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101020","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":10,"color":"green","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":10}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-044","title":"Area color 11","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101120","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":11,"color":"cyan","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":11}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-045","title":"Area color 12","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101220","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":12,"color":"red","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":12}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-046","title":"Area color 13","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101320","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":13,"color":"violet","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":13}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-047","title":"Area color 14","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101420","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":14,"color":"yellow","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":14}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-048","title":"Area color 15","profile":"core-1.1","source":"APRS101 pp. 60-61; A11 AREA","packet":"N0CALL>APRS:;BOX *092345z4903.50N\\07201.75Wl4101520","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"BOX","name_raw":"BOX ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"l","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"area":{"shape_code":4,"shape":"open-box","color_code":15,"color":"gray","intensity":"low","latitude_offset_deg":0.066666666667,"longitude_offset_deg":0.266666666667,"transmitted_anchor":"lower-right"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"BOX","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"l"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"area":{"shape_code":4,"color_code":15}}}},"unmapped":["$.area.color","$.area.intensity","$.area.latitude_offset_deg","$.area.longitude_offset_deg","$.area.shape","$.area.transmitted_anchor","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-049","title":"Signpost 5","profile":"core-1.1","source":"APRS101 p. 61","packet":"N0CALL>APRS:)SIGN!4903.50N\\07201.75Wm{5}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"SIGN","name_raw":"SIGN","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"m","overlay":null},"comment":"","signpost":{"label":"5"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"SIGN","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"m"},"extensions":{"signpost":{"label":"5"}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"]} +{"id":"OBJ-050","title":"Signpost 55","profile":"core-1.1","source":"APRS101 p. 61","packet":"N0CALL>APRS:)SIGN!4903.50N\\07201.75Wm{55}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"SIGN","name_raw":"SIGN","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"m","overlay":null},"comment":"","signpost":{"label":"55"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"SIGN","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"m"},"extensions":{"signpost":{"label":"55"}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"]} +{"id":"OBJ-051","title":"Signpost ABC","profile":"core-1.1","source":"APRS101 p. 61","packet":"N0CALL>APRS:)SIGN!4903.50N\\07201.75Wm{ABC}","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"item","name":"SIGN","name_raw":"SIGN","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"m","overlay":null},"comment":"","signpost":{"label":"ABC"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"SIGN","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"m"},"extensions":{"signpost":{"label":"ABC"}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table"]} +{"id":"OBJ-052","title":"Object name boundary 'STATION '","profile":"core-1.1","source":"A11 names","packet":"N0CALL>APRS:;STATION *092345z4903.50N/07201.75W>","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STATION","name_raw":"STATION ","alive":true,"timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":">","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STATION","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"OBJ-053","title":"Object name boundary ' STATION '","profile":"strict-validation","source":"A11 names","packet":"N0CALL>APRS:; STATION *092345z4903.50N/07201.75W>","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"leading-space-in-name"},"expected":{"original_wire":"N0CALL>APRS:; STATION *092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} diff --git a/packages/aprs/tests/vectors/oth.jsonl b/packages/aprs/tests/vectors/oth.jsonl index b1e5503..fcb4467 100644 --- a/packages/aprs/tests/vectors/oth.jsonl +++ b/packages/aprs/tests/vectors/oth.jsonl @@ -1,16 +1,16 @@ -{"id":"OTH-001","title":"Raw weather Ultimeter 2000 !!006","profile":"opaque-vendor","source":"APRS101 p. 62","packet":"N0CALL>APRS:!!006B005803500000----03E9--------002105140000005D","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"raw-weather","vendor":"Ultimeter 2000","raw_payload":"!!006B005803500000----03E9--------002105140000005D","decoded_measurements":null},"note":"APRS101 gives examples but not the vendor measurement layout. See FAP appendix for tested ULTW decoded measurements. Peet #/* needs a vendor specification before assigning measurements.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"raw_weather","information":"!!006B005803500000----03E9--------002105140000005D","format":"ultimeter_2000"}},"unmapped":["$.decoded_measurements"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} -{"id":"OTH-002","title":"Raw weather Peet Bros U-II #50B7","profile":"opaque-vendor","source":"APRS101 p. 62","packet":"N0CALL>APRS:#50B7500820082","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"raw-weather","vendor":"Peet Bros U-II","raw_payload":"#50B7500820082","decoded_measurements":null},"note":"APRS101 gives examples but not the vendor measurement layout. See FAP appendix for tested ULTW decoded measurements. Peet #/* needs a vendor specification before assigning measurements.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"raw_weather","information":"#50B7500820082"}},"unmapped":["$.decoded_measurements"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} -{"id":"OTH-003","title":"Raw weather Ultimeter 2000 $ULTW","profile":"opaque-vendor","source":"APRS101 p. 62","packet":"N0CALL>APRS:$ULTW0031003702CE0069----000086A00001----011901CC00000005","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"raw-weather","vendor":"Ultimeter 2000","raw_payload":"$ULTW0031003702CE0069----000086A00001----011901CC00000005","decoded_measurements":null},"note":"APRS101 gives examples but not the vendor measurement layout. See FAP appendix for tested ULTW decoded measurements. Peet #/* needs a vendor specification before assigning measurements.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"raw_weather","information":"$ULTW0031003702CE0069----000086A00001----011901CC00000005","format":"ultimeter_2000"}},"unmapped":["$.decoded_measurements"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} -{"id":"OTH-004","title":"Raw weather Peet Bros U-II *7007","profile":"opaque-vendor","source":"APRS101 p. 62","packet":"N0CALL>APRS:*7007600000000","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"raw-weather","vendor":"Peet Bros U-II","raw_payload":"*7007600000000","decoded_measurements":null},"note":"APRS101 gives examples but not the vendor measurement layout. See FAP appendix for tested ULTW decoded measurements. Peet #/* needs a vendor specification before assigning measurements.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"raw_weather","information":"*7007600000000"}},"unmapped":["$.decoded_measurements"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: vendor raw-weather interpretation"}} +{"id":"OTH-001","title":"Raw weather Ultimeter 2000 !!006","profile":"opaque-vendor","source":"APRS101 p. 62","packet":"N0CALL>APRS:!!006B005803500000----03E9--------002105140000005D","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"raw-weather","vendor":"Ultimeter 2000","raw_payload":"!!006B005803500000----03E9--------002105140000005D","decoded_measurements":null},"note":"APRS101 gives examples but not the vendor measurement layout. See FAP appendix for tested ULTW decoded measurements. Peet #/* needs a vendor specification before assigning measurements.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"raw_weather","information":"!!006B005803500000----03E9--------002105140000005D","format":"ultimeter_2000"}},"unmapped":["$.decoded_measurements"]} +{"id":"OTH-002","title":"Raw weather Peet Bros U-II #50B7","profile":"opaque-vendor","source":"APRS101 p. 62","packet":"N0CALL>APRS:#50B7500820082","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"raw-weather","vendor":"Peet Bros U-II","raw_payload":"#50B7500820082","decoded_measurements":null},"note":"APRS101 gives examples but not the vendor measurement layout. See FAP appendix for tested ULTW decoded measurements. Peet #/* needs a vendor specification before assigning measurements.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"raw_weather","information":"#50B7500820082"}},"unmapped":["$.decoded_measurements"]} +{"id":"OTH-003","title":"Raw weather Ultimeter 2000 $ULTW","profile":"opaque-vendor","source":"APRS101 p. 62","packet":"N0CALL>APRS:$ULTW0031003702CE0069----000086A00001----011901CC00000005","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"raw-weather","vendor":"Ultimeter 2000","raw_payload":"$ULTW0031003702CE0069----000086A00001----011901CC00000005","decoded_measurements":null},"note":"APRS101 gives examples but not the vendor measurement layout. See FAP appendix for tested ULTW decoded measurements. Peet #/* needs a vendor specification before assigning measurements.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"raw_weather","information":"$ULTW0031003702CE0069----000086A00001----011901CC00000005","format":"ultimeter_2000"}},"unmapped":["$.decoded_measurements"]} +{"id":"OTH-004","title":"Raw weather Peet Bros U-II *7007","profile":"opaque-vendor","source":"APRS101 p. 62","packet":"N0CALL>APRS:*7007600000000","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"raw-weather","vendor":"Peet Bros U-II","raw_payload":"*7007600000000","decoded_measurements":null},"note":"APRS101 gives examples but not the vendor measurement layout. See FAP appendix for tested ULTW decoded measurements. Peet #/* needs a vendor specification before assigning measurements.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"raw_weather","information":"*7007600000000"}},"unmapped":["$.decoded_measurements"]} {"id":"OTH-005","title":"User-defined '{Q1'","profile":"core-1.1","source":"APRS101 pp. 87-88","packet":"N0CALL>APRS:{Q1qwerty","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"user-defined","user_id":"Q","user_type":"1","data":"qwerty"},"note":"Unknown user formats are safely ignored or exposed as opaque bytes; binary data is allowed even though printable ASCII is recommended.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"user_defined","user_id":"Q","user_type":"1","data":"qwerty"}},"unmapped":[]} {"id":"OTH-006","title":"User-defined '{{z'","profile":"core-1.1","source":"APRS101 pp. 87-88","packet":"N0CALL>APRS:{{zasdfg","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"user-defined","user_id":"{","user_type":"z","data":"asdfg"},"note":"Unknown user formats are safely ignored or exposed as opaque bytes; binary data is allowed even though printable ASCII is recommended.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"user_defined","user_id":"{","user_type":"z","data":"asdfg"}},"unmapped":[]} {"id":"OTH-007","title":"User-defined '{{z'","profile":"core-1.1","source":"APRS101 pp. 87-88","packet":"N0CALL>APRS:{{z\u0000\u00ff","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"user-defined","user_id":"{","user_type":"z","data":"\u0000\u00ff"},"note":"Unknown user formats are safely ignored or exposed as opaque bytes; binary data is allowed even though printable ASCII is recommended.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"user_defined","user_id":"{","user_type":"z","data":"\u0000\u00ff"}},"unmapped":[]} {"id":"OTH-008","title":"Explicit invalid/test data","profile":"core-1.1","source":"APRS101 p. 89","packet":"N0CALL>APRS:,191146,V,4214.2466,N,07303.5181,W,417.238,114.5,091099,14.7,W/GPS FIX","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"invalid-or-test","data":"191146,V,4214.2466,N,07303.5181,W,417.238,114.5,091099,14.7,W/GPS FIX","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"invalid","data":"191146,V,4214.2466,N,07303.5181,W,417.238,114.5,091099,14.7,W/GPS FIX"}},"unmapped":["$.position_usable"]} -{"id":"OTH-009","title":"Non-APRS / obsolete UIDIGI ready","profile":"core-1.1","source":"APRS101 pp. 61,75,89","packet":"N0CALL>APRS:UIDIGI ready","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"non-aprs-beacon","raw_text":"UIDIGI ready","status_fallback_permitted":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"beacon","text":"UIDIGI ready"}},"unmapped":["$.status_fallback_permitted"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OTH-010","title":"Non-APRS / obsolete LEADER *09","profile":"core-1.1","source":"APRS101 pp. 61,75,89","packet":"N0CALL>APRS:LEADER *092345z4903.50N/07201.75W>","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"non-aprs-beacon","raw_text":"LEADER *092345z4903.50N/07201.75W>","status_fallback_permitted":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"beacon","text":"LEADER *092345z4903.50N/07201.75W>"}},"unmapped":["$.status_fallback_permitted"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OTH-011","title":"Non-APRS / obsolete BLN1 :Ol","profile":"core-1.1","source":"APRS101 pp. 61,75,89","packet":"N0CALL>APRS:BLN1 :Old notice","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"non-aprs-beacon","raw_text":"BLN1 :Old notice","status_fallback_permitted":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"beacon","text":"BLN1 :Old notice"}},"unmapped":["$.status_fallback_permitted"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OTH-012","title":"Obsolete bracket grid IO91","profile":"historical-1.0","source":"APRS101 pp. 25,33","packet":"N0CALL>APRS:[IO91]","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"legacy-grid-beacon","grid":{"locator":"IO91","bounds_deg":{"latitude":[51,52],"longitude":[-2,0]},"center_deg":[51.5,-1.0]}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"maidenhead","grid":{"locator":"IO91"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OTH-013","title":"Obsolete bracket grid IO91SX","profile":"historical-1.0","source":"APRS101 pp. 25,33","packet":"N0CALL>APRS:[IO91SX]","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"legacy-grid-beacon","grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"maidenhead","grid":{"locator":"IO91SX"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OTH-009","title":"Non-APRS / obsolete UIDIGI ready","profile":"core-1.1","source":"APRS101 pp. 61,75,89","packet":"N0CALL>APRS:UIDIGI ready","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"non-aprs-beacon","raw_text":"UIDIGI ready","status_fallback_permitted":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"beacon","text":"UIDIGI ready"}},"unmapped":["$.status_fallback_permitted"]} +{"id":"OTH-010","title":"Non-APRS / obsolete LEADER *09","profile":"core-1.1","source":"APRS101 pp. 61,75,89","packet":"N0CALL>APRS:LEADER *092345z4903.50N/07201.75W>","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"non-aprs-beacon","raw_text":"LEADER *092345z4903.50N/07201.75W>","status_fallback_permitted":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"beacon","text":"LEADER *092345z4903.50N/07201.75W>"}},"unmapped":["$.status_fallback_permitted"]} +{"id":"OTH-011","title":"Non-APRS / obsolete BLN1 :Ol","profile":"core-1.1","source":"APRS101 pp. 61,75,89","packet":"N0CALL>APRS:BLN1 :Old notice","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"non-aprs-beacon","raw_text":"BLN1 :Old notice","status_fallback_permitted":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"beacon","text":"BLN1 :Old notice"}},"unmapped":["$.status_fallback_permitted"]} +{"id":"OTH-012","title":"Obsolete bracket grid IO91","profile":"historical-1.0","source":"APRS101 pp. 25,33","packet":"N0CALL>APRS:[IO91]","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"legacy-grid-beacon","grid":{"locator":"IO91","bounds_deg":{"latitude":[51,52],"longitude":[-2,0]},"center_deg":[51.5,-1.0]}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"maidenhead","grid":{"locator":"IO91"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg"]} +{"id":"OTH-013","title":"Obsolete bracket grid IO91SX","profile":"historical-1.0","source":"APRS101 pp. 25,33","packet":"N0CALL>APRS:[IO91SX]","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"legacy-grid-beacon","grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"maidenhead","grid":{"locator":"IO91SX"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg"]} {"id":"OTH-014","title":"Unspecified / reserved DTI '\"'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:\"TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"\"","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"\"TEST"}},"unmapped":["$.position_usable"]} {"id":"OTH-015","title":"Unspecified / reserved DTI '%'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:%TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"%","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"%TEST"}},"unmapped":["$.position_usable"]} {"id":"OTH-016","title":"Unspecified / reserved DTI '&'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:&TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"&","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"&TEST"}},"unmapped":["$.position_usable"]} @@ -30,9 +30,9 @@ {"id":"OTH-030","title":"Unspecified / reserved DTI '|'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:|TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"|","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"|TEST"}},"unmapped":["$.position_usable"]} {"id":"OTH-031","title":"Unspecified / reserved DTI '~'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:~TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"~","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"~TEST"}},"unmapped":["$.position_usable"]} {"id":"OTH-032","title":"Modern exclamation offset 0","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} -{"id":"OTH-033","title":"Modern exclamation offset 1","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:X!4903.50N/07201.75W-","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"non-aprs-beacon","raw_text":"X!4903.50N/07201.75W-","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"beacon","text":"X!4903.50N/07201.75W-"}},"unmapped":["$.position_usable"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OTH-034","title":"Legacy X1J offset 1","profile":"historical-1.0","source":"APRS101 p. 18","packet":"N0CALL>BEACON:X!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OTH-035","title":"Modern exclamation offset 39","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"non-aprs-beacon","raw_text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"beacon","text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-"}},"unmapped":["$.position_usable"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OTH-036","title":"Legacy X1J offset 39","profile":"historical-1.0","source":"APRS101 p. 18","packet":"N0CALL>BEACON:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"OTH-037","title":"Modern exclamation offset 40","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"non-aprs-beacon","raw_text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"beacon","text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-"}},"unmapped":["$.position_usable"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"OTH-033","title":"Modern exclamation offset 1","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:X!4903.50N/07201.75W-","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"non-aprs-beacon","raw_text":"X!4903.50N/07201.75W-","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"beacon","text":"X!4903.50N/07201.75W-"}},"unmapped":["$.position_usable"]} +{"id":"OTH-034","title":"Legacy X1J offset 1","profile":"historical-1.0","source":"APRS101 p. 18","packet":"N0CALL>BEACON:X!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"OTH-035","title":"Modern exclamation offset 39","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"non-aprs-beacon","raw_text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"beacon","text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-"}},"unmapped":["$.position_usable"]} +{"id":"OTH-036","title":"Legacy X1J offset 39","profile":"historical-1.0","source":"APRS101 p. 18","packet":"N0CALL>BEACON:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"OTH-037","title":"Modern exclamation offset 40","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"non-aprs-beacon","raw_text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"beacon","text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-"}},"unmapped":["$.position_usable"]} {"id":"OTH-038","title":"Historical grid locator in destination","profile":"historical-1.0","source":"APRS101 p.15","packet":"N0CALL>IO91SX:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"IO91SX","path":[]},"kind":"status","status_text":"Ready","destination_grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]}},"note":"The six-character destination is a Maidenhead locator in this historical convention. Preserve its area independently of status text; do not treat its center as an exact position fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"IO91SX","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_grid.bounds_deg.latitude","$.destination_grid.bounds_deg.longitude","$.destination_grid.center_deg","$.destination_grid.locator"]} diff --git a/packages/aprs/tests/vectors/pos.jsonl b/packages/aprs/tests/vectors/pos.jsonl index d021901..5a580d4 100644 --- a/packages/aprs/tests/vectors/pos.jsonl +++ b/packages/aprs/tests/vectors/pos.jsonl @@ -11,18 +11,18 @@ {"id":"POS-011","title":"Coordinate boundary 9000.00S 18000.00W","profile":"core-1.1","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!9000.00S/18000.00W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-90.0,"longitude_deg":-180.0,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-90.0,"longitude_deg":-180.0,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} {"id":"POS-012","title":"Coordinate boundary 8959.99N 17959.99W","profile":"core-1.1","source":"APRS101 pp. 23-25","packet":"N0CALL>APRS:!8959.99N/17959.99W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":89.999833333333,"longitude_deg":-179.999833333333,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":89.999833333333,"longitude_deg":-179.999833333333,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} {"id":"POS-013","title":"Specified unknown-position convention","profile":"core-1.1","source":"APRS101 p. 25","packet":"N0CALL>APRS:!0000.00N\\00000.00W.","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":0.0,"longitude_deg":-0.0,"ambiguity_digits":0,"is_null_position":true},"symbol":{"table_id_raw":"\\","table":"alternate","code":".","overlay":null},"comment":""},"note":"Do not turn every numeric (0,0) coordinate into missing data; the null convention includes the indeterminate symbol.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":0.0,"longitude_deg":-0.0,"ambiguity":0,"symbol":{"table_id":"\\","code":"."}}},"unmapped":["$.position.is_null_position","$.symbol.overlay","$.symbol.table"]} -{"id":"POS-014","title":"Ambiguity 1 NW","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!4903.5 N/07201.7 W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.059166666667,"longitude_deg":-72.029166666667,"ambiguity_digits":1,"cell_bounds_deg":{"latitude":[49.058333333333,49.06],"longitude":[-72.03,-72.028333333333]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.059166666667,"longitude_deg":-72.029166666667,"ambiguity":1,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"POS-015","title":"Ambiguity 1 SE","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!4903.5 S/07201.7 E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.059166666667,"longitude_deg":72.029166666667,"ambiguity_digits":1,"cell_bounds_deg":{"latitude":[-49.06,-49.058333333333],"longitude":[72.028333333333,72.03]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.059166666667,"longitude_deg":72.029166666667,"ambiguity":1,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"POS-016","title":"Latitude-imposed ambiguity 1","profile":"core-1.1","source":"APRS101 p. 24","packet":"N0CALL>APRS:!4903.5 N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.059166666667,"longitude_deg":-72.029166666667,"ambiguity_digits":1,"cell_bounds_deg":{"latitude":[49.058333333333,49.06],"longitude":[-72.03,-72.028333333333]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.059166666667,"longitude_deg":-72.029166666667,"ambiguity":1,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"POS-017","title":"Ambiguity 2 NW","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!4903. N/07201. W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.025,"ambiguity_digits":2,"cell_bounds_deg":{"latitude":[49.05,49.066666666667],"longitude":[-72.033333333333,-72.016666666667]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.025,"ambiguity":2,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"POS-018","title":"Ambiguity 2 SE","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!4903. S/07201. E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.058333333333,"longitude_deg":72.025,"ambiguity_digits":2,"cell_bounds_deg":{"latitude":[-49.066666666667,-49.05],"longitude":[72.016666666667,72.033333333333]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.058333333333,"longitude_deg":72.025,"ambiguity":2,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"POS-019","title":"Latitude-imposed ambiguity 2","profile":"core-1.1","source":"APRS101 p. 24","packet":"N0CALL>APRS:!4903. N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.025,"ambiguity_digits":2,"cell_bounds_deg":{"latitude":[49.05,49.066666666667],"longitude":[-72.033333333333,-72.016666666667]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.025,"ambiguity":2,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"POS-020","title":"Ambiguity 3 NW","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!490 . N/0720 . W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.083333333333,"longitude_deg":-72.083333333333,"ambiguity_digits":3,"cell_bounds_deg":{"latitude":[49.0,49.166666666667],"longitude":[-72.166666666667,-72.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.083333333333,"longitude_deg":-72.083333333333,"ambiguity":3,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"POS-021","title":"Ambiguity 3 SE","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!490 . S/0720 . E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.083333333333,"longitude_deg":72.083333333333,"ambiguity_digits":3,"cell_bounds_deg":{"latitude":[-49.166666666667,-49.0],"longitude":[72.0,72.166666666667]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.083333333333,"longitude_deg":72.083333333333,"ambiguity":3,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"POS-022","title":"Latitude-imposed ambiguity 3","profile":"core-1.1","source":"APRS101 p. 24","packet":"N0CALL>APRS:!490 . N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.083333333333,"longitude_deg":-72.083333333333,"ambiguity_digits":3,"cell_bounds_deg":{"latitude":[49.0,49.166666666667],"longitude":[-72.166666666667,-72.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.083333333333,"longitude_deg":-72.083333333333,"ambiguity":3,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"POS-023","title":"Ambiguity 4 NW","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!49 . N/072 . W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.5,"longitude_deg":-72.5,"ambiguity_digits":4,"cell_bounds_deg":{"latitude":[49.0,50.0],"longitude":[-73.0,-72.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.5,"ambiguity":4,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"POS-024","title":"Ambiguity 4 SE","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!49 . S/072 . E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.5,"longitude_deg":72.5,"ambiguity_digits":4,"cell_bounds_deg":{"latitude":[-50.0,-49.0],"longitude":[72.0,73.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.5,"longitude_deg":72.5,"ambiguity":4,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} -{"id":"POS-025","title":"Latitude-imposed ambiguity 4","profile":"core-1.1","source":"APRS101 p. 24","packet":"N0CALL>APRS:!49 . N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.5,"longitude_deg":-72.5,"ambiguity_digits":4,"cell_bounds_deg":{"latitude":[49.0,50.0],"longitude":[-73.0,-72.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.5,"ambiguity":4,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: position ambiguity is not implemented"}} +{"id":"POS-014","title":"Ambiguity 1 NW","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!4903.5 N/07201.7 W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.059166666667,"longitude_deg":-72.029166666667,"ambiguity_digits":1,"cell_bounds_deg":{"latitude":[49.058333333333,49.06],"longitude":[-72.03,-72.028333333333]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.059166666667,"longitude_deg":-72.029166666667,"ambiguity":1,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"POS-015","title":"Ambiguity 1 SE","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!4903.5 S/07201.7 E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.059166666667,"longitude_deg":72.029166666667,"ambiguity_digits":1,"cell_bounds_deg":{"latitude":[-49.06,-49.058333333333],"longitude":[72.028333333333,72.03]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.059166666667,"longitude_deg":72.029166666667,"ambiguity":1,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"POS-016","title":"Latitude-imposed ambiguity 1","profile":"core-1.1","source":"APRS101 p. 24","packet":"N0CALL>APRS:!4903.5 N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.059166666667,"longitude_deg":-72.029166666667,"ambiguity_digits":1,"cell_bounds_deg":{"latitude":[49.058333333333,49.06],"longitude":[-72.03,-72.028333333333]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.059166666667,"longitude_deg":-72.029166666667,"ambiguity":1,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"POS-017","title":"Ambiguity 2 NW","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!4903. N/07201. W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.025,"ambiguity_digits":2,"cell_bounds_deg":{"latitude":[49.05,49.066666666667],"longitude":[-72.033333333333,-72.016666666667]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.025,"ambiguity":2,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"POS-018","title":"Ambiguity 2 SE","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!4903. S/07201. E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.058333333333,"longitude_deg":72.025,"ambiguity_digits":2,"cell_bounds_deg":{"latitude":[-49.066666666667,-49.05],"longitude":[72.016666666667,72.033333333333]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.058333333333,"longitude_deg":72.025,"ambiguity":2,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"POS-019","title":"Latitude-imposed ambiguity 2","profile":"core-1.1","source":"APRS101 p. 24","packet":"N0CALL>APRS:!4903. N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.025,"ambiguity_digits":2,"cell_bounds_deg":{"latitude":[49.05,49.066666666667],"longitude":[-72.033333333333,-72.016666666667]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.025,"ambiguity":2,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"POS-020","title":"Ambiguity 3 NW","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!490 . N/0720 . W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.083333333333,"longitude_deg":-72.083333333333,"ambiguity_digits":3,"cell_bounds_deg":{"latitude":[49.0,49.166666666667],"longitude":[-72.166666666667,-72.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.083333333333,"longitude_deg":-72.083333333333,"ambiguity":3,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"POS-021","title":"Ambiguity 3 SE","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!490 . S/0720 . E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.083333333333,"longitude_deg":72.083333333333,"ambiguity_digits":3,"cell_bounds_deg":{"latitude":[-49.166666666667,-49.0],"longitude":[72.0,72.166666666667]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.083333333333,"longitude_deg":72.083333333333,"ambiguity":3,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"POS-022","title":"Latitude-imposed ambiguity 3","profile":"core-1.1","source":"APRS101 p. 24","packet":"N0CALL>APRS:!490 . N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.083333333333,"longitude_deg":-72.083333333333,"ambiguity_digits":3,"cell_bounds_deg":{"latitude":[49.0,49.166666666667],"longitude":[-72.166666666667,-72.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.083333333333,"longitude_deg":-72.083333333333,"ambiguity":3,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"POS-023","title":"Ambiguity 4 NW","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!49 . N/072 . W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.5,"longitude_deg":-72.5,"ambiguity_digits":4,"cell_bounds_deg":{"latitude":[49.0,50.0],"longitude":[-73.0,-72.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.5,"ambiguity":4,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"POS-024","title":"Ambiguity 4 SE","profile":"core-1.1","source":"APRS101 pp. 24-25","packet":"N0CALL>APRS:!49 . S/072 . E-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":-49.5,"longitude_deg":72.5,"ambiguity_digits":4,"cell_bounds_deg":{"latitude":[-50.0,-49.0],"longitude":[72.0,73.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The cell is normative; the center is this corpus's deterministic representative, not a recovered exact fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":-49.5,"longitude_deg":72.5,"ambiguity":4,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} +{"id":"POS-025","title":"Latitude-imposed ambiguity 4","profile":"core-1.1","source":"APRS101 p. 24","packet":"N0CALL>APRS:!49 . N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.5,"longitude_deg":-72.5,"ambiguity_digits":4,"cell_bounds_deg":{"latitude":[49.0,50.0],"longitude":[-73.0,-72.0]},"representative":"cell-center"},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.5,"longitude_deg":-72.5,"ambiguity":4,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.position.cell_bounds_deg.latitude","$.position.cell_bounds_deg.longitude","$.position.representative","$.symbol.overlay","$.symbol.table"]} {"id":"POS-026","title":"Comment preservation / length 0","profile":"core-1.1","source":"APRS101 pp. 20, 32","packet":"N0CALL>APRS:!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"note":"The raw comment is byte-preserving. Trimming is a separate presentation or compatibility choice.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} {"id":"POS-027","title":"Comment preservation / length 22","profile":"core-1.1","source":"APRS101 pp. 20, 32","packet":"N0CALL>APRS:!4903.50N/07201.75W- leading and trailing ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":" leading and trailing "},"note":"The raw comment is byte-preserving. Trimming is a separate presentation or compatibility choice.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":" leading and trailing ","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} {"id":"POS-028","title":"Comment preservation / length 7","profile":"core-1.1","source":"APRS101 pp. 20, 32","packet":"N0CALL>APRS:!4903.50N/07201.75W-A:B > C","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"A:B > C"},"note":"The raw comment is byte-preserving. Trimming is a separate presentation or compatibility choice.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"A:B > C","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} diff --git a/packages/aprs/tests/vectors/qry.jsonl b/packages/aprs/tests/vectors/qry.jsonl index 702984f..9dc68f8 100644 --- a/packages/aprs/tests/vectors/qry.jsonl +++ b/packages/aprs/tests/vectors/qry.jsonl @@ -1,20 +1,20 @@ -{"id":"QRY-001","title":"General APRS","profile":"core-1.1","source":"APRS101 pp. 77-78","packet":"N0CALL>APRS:?APRS?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"APRS","directed":false,"recognized":true,"ack_requested":false}},"note":"Unknown queries are ignored safely; no response is required.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRS"}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.recognized"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"QRY-002","title":"General IGATE","profile":"core-1.1","source":"APRS101 pp. 77-78","packet":"N0CALL>APRS:?IGATE?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"IGATE","directed":false,"recognized":true,"ack_requested":false}},"note":"Unknown queries are ignored safely; no response is required.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"IGATE"}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.recognized"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"QRY-003","title":"General WX","profile":"core-1.1","source":"APRS101 pp. 77-78","packet":"N0CALL>APRS:?WX?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"WX","directed":false,"recognized":true,"ack_requested":false}},"note":"Unknown queries are ignored safely; no response is required.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"WX"}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.recognized"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"QRY-004","title":"General UNKNOWN","profile":"core-1.1","source":"APRS101 pp. 77-78","packet":"N0CALL>APRS:?UNKNOWN?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"UNKNOWN","directed":false,"recognized":false,"ack_requested":false}},"note":"Unknown queries are ignored safely; no response is required.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"UNKNOWN"}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.recognized"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"QRY-005","title":"Target footprint 34.02,-117.15","profile":"core-1.1","source":"APRS101 p. 78","packet":"N0CALL>APRS:?APRS? 34.02,-117.15,0200","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"APRS","directed":false,"latitude_deg":34.02,"longitude_deg":-117.15,"radius_miles":200,"radius_km":321.8688,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRS","footprint":{"center":{"latitude_deg":34.02,"longitude_deg":-117.15},"radius_miles":200}}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.radius_km"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"QRY-006","title":"Target footprint -34.02, 117.15","profile":"core-1.1","source":"APRS101 p. 78","packet":"N0CALL>APRS:?APRS?-34.02, 117.15,0200","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"APRS","directed":false,"latitude_deg":-34.02,"longitude_deg":117.15,"radius_miles":200,"radius_km":321.8688,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRS","footprint":{"center":{"latitude_deg":-34.02,"longitude_deg":117.15},"radius_miles":200}}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.radius_km"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"QRY-007","title":"Directed APRSD","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSD","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSD","message_id":null,"ack_requested":false},"query":{"type":"APRSD","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSD","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"QRY-008","title":"Directed APRSH N0CALL ","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSH N0CALL ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSH N0CALL ","message_id":null,"ack_requested":false},"query":{"type":"APRSH","directed":true,"ack_requested":false,"heard_station":"N0CALL"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSH","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed","$.query.heard_station"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"QRY-009","title":"Directed APRSM","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSM","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSM","message_id":null,"ack_requested":false},"query":{"type":"APRSM","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSM","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"QRY-010","title":"Directed APRSO","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSO","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSO","message_id":null,"ack_requested":false},"query":{"type":"APRSO","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSO","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"QRY-011","title":"Directed APRSP","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSP","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSP","message_id":null,"ack_requested":false},"query":{"type":"APRSP","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSP","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"QRY-012","title":"Directed APRSS","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSS","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSS","message_id":null,"ack_requested":false},"query":{"type":"APRSS","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSS","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"QRY-013","title":"Directed APRST","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRST","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRST","message_id":null,"ack_requested":false},"query":{"type":"APRST","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRST","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"QRY-014","title":"Directed PING?","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?PING?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?PING?","message_id":null,"ack_requested":false},"query":{"type":"PING","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"PING","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"QRY-015","title":"Query response Directs= W1AW W2ABC","profile":"core-1.1","source":"APRS101 p. 79","packet":"N0CALL>APRS::W1AW :Directs= W1AW W2ABC","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"Directs= W1AW W2ABC","message_id":null,"ack_requested":false}},"note":"Colons and greater-than signs inside the message do not begin a new outer envelope.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"Directs= W1AW W2ABC","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} -{"id":"QRY-016","title":"Query response N0CALL HEARD: 1 3 2 . . 4 5 6","profile":"core-1.1","source":"APRS101 p. 79","packet":"N0CALL>APRS::W1AW :N0CALL HEARD: 1 3 2 . . 4 5 6","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N0CALL HEARD: 1 3 2 . . 4 5 6","message_id":null,"ack_requested":false}},"note":"Colons and greater-than signs inside the message do not begin a new outer envelope.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"N0CALL HEARD: 1 3 2 . . 4 5 6","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} -{"id":"QRY-017","title":"Query response N0CALL>APRS,DIGI1,WIDE*:","profile":"core-1.1","source":"APRS101 p. 79","packet":"N0CALL>APRS::W1AW :N0CALL>APRS,DIGI1,WIDE*:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N0CALL>APRS,DIGI1,WIDE*:","message_id":null,"ack_requested":false}},"note":"Colons and greater-than signs inside the message do not begin a new outer envelope.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"W1AW","text":"N0CALL>APRS,DIGI1,WIDE*:","message_id":null}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} -{"id":"QRY-018","title":"Capabilities IGATE,MSG_CNT=43,LOC_CNT=14","profile":"core-1.1","source":"APRS101 p. 77","packet":"N0CALL>APRS:APRS:APRS:APRS:?APRS?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"APRS","directed":false,"recognized":true,"ack_requested":false}},"note":"Unknown queries are ignored safely; no response is required.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRS"}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.recognized"]} +{"id":"QRY-002","title":"General IGATE","profile":"core-1.1","source":"APRS101 pp. 77-78","packet":"N0CALL>APRS:?IGATE?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"IGATE","directed":false,"recognized":true,"ack_requested":false}},"note":"Unknown queries are ignored safely; no response is required.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"IGATE"}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.recognized"]} +{"id":"QRY-003","title":"General WX","profile":"core-1.1","source":"APRS101 pp. 77-78","packet":"N0CALL>APRS:?WX?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"WX","directed":false,"recognized":true,"ack_requested":false}},"note":"Unknown queries are ignored safely; no response is required.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"WX"}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.recognized"]} +{"id":"QRY-004","title":"General UNKNOWN","profile":"core-1.1","source":"APRS101 pp. 77-78","packet":"N0CALL>APRS:?UNKNOWN?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"UNKNOWN","directed":false,"recognized":false,"ack_requested":false}},"note":"Unknown queries are ignored safely; no response is required.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"UNKNOWN"}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.recognized"]} +{"id":"QRY-005","title":"Target footprint 34.02,-117.15","profile":"core-1.1","source":"APRS101 p. 78","packet":"N0CALL>APRS:?APRS? 34.02,-117.15,0200","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"APRS","directed":false,"latitude_deg":34.02,"longitude_deg":-117.15,"radius_miles":200,"radius_km":321.8688,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRS","footprint":{"center":{"latitude_deg":34.02,"longitude_deg":-117.15},"radius_miles":200}}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.radius_km"]} +{"id":"QRY-006","title":"Target footprint -34.02, 117.15","profile":"core-1.1","source":"APRS101 p. 78","packet":"N0CALL>APRS:?APRS?-34.02, 117.15,0200","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","query":{"type":"APRS","directed":false,"latitude_deg":-34.02,"longitude_deg":117.15,"radius_miles":200,"radius_km":321.8688,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRS","footprint":{"center":{"latitude_deg":-34.02,"longitude_deg":117.15},"radius_miles":200}}},"unmapped":["$.query.ack_requested","$.query.directed","$.query.radius_km"]} +{"id":"QRY-007","title":"Directed APRSD","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSD","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSD","message_id":null,"ack_requested":false},"query":{"type":"APRSD","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSD","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"]} +{"id":"QRY-008","title":"Directed APRSH N0CALL ","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSH N0CALL ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSH N0CALL ","message_id":null,"ack_requested":false},"query":{"type":"APRSH","directed":true,"ack_requested":false,"heard_station":"N0CALL"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSH","heard_station":"N0CALL","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"]} +{"id":"QRY-009","title":"Directed APRSM","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSM","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSM","message_id":null,"ack_requested":false},"query":{"type":"APRSM","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSM","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"]} +{"id":"QRY-010","title":"Directed APRSO","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSO","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSO","message_id":null,"ack_requested":false},"query":{"type":"APRSO","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSO","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"]} +{"id":"QRY-011","title":"Directed APRSP","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSP","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSP","message_id":null,"ack_requested":false},"query":{"type":"APRSP","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSP","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"]} +{"id":"QRY-012","title":"Directed APRSS","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRSS","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRSS","message_id":null,"ack_requested":false},"query":{"type":"APRSS","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRSS","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"]} +{"id":"QRY-013","title":"Directed APRST","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?APRST","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?APRST","message_id":null,"ack_requested":false},"query":{"type":"APRST","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"APRST","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"]} +{"id":"QRY-014","title":"Directed PING?","profile":"core-1.1","source":"APRS101 pp. 77,79","packet":"N0CALL>APRS::W1AW :?PING?","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"query","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"?PING?","message_id":null,"ack_requested":false},"query":{"type":"PING","directed":true,"ack_requested":false}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"query","name":"PING","addressee":"W1AW"}},"unmapped":["$.message.ack_requested","$.message.addressee_raw","$.message.message_id","$.message.text","$.query.ack_requested","$.query.directed"]} +{"id":"QRY-015","title":"Query response Directs= W1AW W2ABC","profile":"core-1.1","source":"APRS101 p. 79","packet":"N0CALL>APRS::W1AW :Directs= W1AW W2ABC","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"Directs= W1AW W2ABC","message_id":null,"ack_requested":false}},"note":"Colons and greater-than signs inside the message do not begin a new outer envelope.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"response","addressee":"W1AW","response":{"type":"direct_stations","stations":["W1AW","W2ABC"]}}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"QRY-016","title":"Query response N0CALL HEARD: 1 3 2 . . 4 5 6","profile":"core-1.1","source":"APRS101 p. 79","packet":"N0CALL>APRS::W1AW :N0CALL HEARD: 1 3 2 . . 4 5 6","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N0CALL HEARD: 1 3 2 . . 4 5 6","message_id":null,"ack_requested":false}},"note":"Colons and greater-than signs inside the message do not begin a new outer envelope.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"response","addressee":"W1AW","response":{"type":"heard_station","station":"N0CALL","counts":[1,3,2,null,null,4,5,6]}}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"QRY-017","title":"Query response N0CALL>APRS,DIGI1,WIDE*:","profile":"core-1.1","source":"APRS101 p. 79","packet":"N0CALL>APRS::W1AW :N0CALL>APRS,DIGI1,WIDE*:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"message","message":{"addressee":"W1AW","addressee_raw":"W1AW ","text":"N0CALL>APRS,DIGI1,WIDE*:","message_id":null,"ack_requested":false}},"note":"Colons and greater-than signs inside the message do not begin a new outer envelope.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"response","addressee":"W1AW","response":{"type":"trace","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"DIGI1","repeated":false},{"address":"WIDE","repeated":true}]}}}},"unmapped":["$.message.ack_requested","$.message.addressee_raw"]} +{"id":"QRY-018","title":"Capabilities IGATE,MSG_CNT=43,LOC_CNT=14","profile":"core-1.1","source":"APRS101 p. 77","packet":"N0CALL>APRS:APRS:APRS:APRS:;CHECKPT *151800z4903.50N/07201.75WA","outcome":"stateful","source_expected":{"name":"CHECKPT","owner":"W1AW","alive":true,"visible":true},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-001.2","title":"Object ownership, kill and revival","profile":"stateful","source":"APRS101 p.57; A11 Objects/names","sequence":"SEQ-001","packet":"W2ABC>APRS:;CHECKPT *151801z4904.50N/07201.75WA","outcome":"stateful","source_expected":{"name":"CHECKPT","owner":"W2ABC","alive":true,"visible":true,"latitude_deg":49.075},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-001.3","title":"Object ownership, kill and revival","profile":"stateful","source":"APRS101 p.57; A11 Objects/names","sequence":"SEQ-001","packet":"W2ABC>APRS:;CHECKPT _151802z4904.50N/07201.75WA","outcome":"stateful","source_expected":{"name":"CHECKPT","owner":"W2ABC","alive":false,"visible":false,"record_retained":true},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-001.4","title":"Object ownership, kill and revival","profile":"stateful","source":"APRS101 p.57; A11 Objects/names","sequence":"SEQ-001","packet":"W2ABC>APRS:;CHECKPT *151803z4904.50N/07201.75WA","outcome":"stateful","source_expected":{"name":"CHECKPT","owner":"W2ABC","alive":true,"visible":true},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-002.1","title":"Name case and right padding","profile":"stateful","source":"APRS101 pp.58-59; A11 names","sequence":"SEQ-002","packet":"W1AW>APRS:;Leader *151800z4903.50N/07201.75W>","outcome":"stateful","source_expected":{"entity_key":"Leader","entity_count":1},"note":"One shared name namespace; strip right padding only. Do not uppercase object or item names.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-002.2","title":"Name case and right padding","profile":"stateful","source":"APRS101 pp.58-59; A11 names","sequence":"SEQ-002","packet":"W1AW>APRS:;LEADER *151801z4903.50N/07201.75W>","outcome":"stateful","source_expected":{"entity_key":"LEADER","entity_count":2},"note":"One shared name namespace; strip right padding only. Do not uppercase object or item names.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-002.3","title":"Name case and right padding","profile":"stateful","source":"APRS101 pp.58-59; A11 names","sequence":"SEQ-002","packet":"W1AW>APRS:)Leader!4903.50N/07201.75W>","outcome":"stateful","source_expected":{"entity_key":"Leader","entity_count":2,"type_of_Leader":"item"},"note":"One shared name namespace; strip right padding only. Do not uppercase object or item names.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-003.1","title":"Message duplication and reply acknowledgment","profile":"stateful","source":"APRS101 pp.71-72; A11 REPLY-ACK","sequence":"SEQ-003","packet":"W1AW>APRS::N0CALL :Hello{01}","outcome":"stateful","source_expected":{"deliveries":1,"ack_to":"W1AW","ack_payload":":W1AW :ack01}","pending_reply_ack":"01"},"note":"Receiver N0CALL has outbound message 02 pending. Deduplication uses sender + message ID/content, excluding the changing piggyback ACK; sending/retry timing is not executed by this corpus.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-003.2","title":"Message duplication and reply acknowledgment","profile":"stateful","source":"APRS101 pp.71-72; A11 REPLY-ACK","sequence":"SEQ-003","packet":"W1AW>APRS::N0CALL :Hello{01}02","outcome":"stateful","source_expected":{"deliveries":1,"ack_to":"W1AW","ack_payload":":W1AW :ack01}02","outbound_message_02_acked":true,"pending_reply_ack":"01"},"note":"Receiver N0CALL has outbound message 02 pending. Deduplication uses sender + message ID/content, excluding the changing piggyback ACK; sending/retry timing is not executed by this corpus.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-003.3","title":"Message duplication and reply acknowledgment","profile":"stateful","source":"APRS101 pp.71-72; A11 REPLY-ACK","sequence":"SEQ-003","packet":"N0CALL>APRS::W1AW :Reply{03}01","outcome":"stateful","source_expected":{"message_id":"03","piggyback_ack":"01"},"note":"Receiver N0CALL has outbound message 02 pending. Deduplication uses sender + message ID/content, excluding the changing piggyback ACK; sending/retry timing is not executed by this corpus.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-004.1","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS::N0CALL :PARM.Battery,Temp,,,,Camra,Chut","outcome":"stateful","source_expected":{"A1":"Battery","A2":"Temp","B1":"Camra","B2":"Chut"},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-004.2","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS::N0CALL :UNIT.v/100,deg.F,,,,Click,OPEN","outcome":"stateful","source_expected":{"A1_unit":"v/100","A2_unit":"deg.F","B1_label":"Click","B2_label":"OPEN"},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-004.3","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS::N0CALL :EQNS.0,5.2,0,0,.53,-32","outcome":"stateful","source_expected":{"A1_coefficients":[0,5.2,0],"A2_coefficients":[0,0.53,-32]},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-004.4","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS::N0CALL :BITS.10110000,Balloon","outcome":"stateful","source_expected":{"sense_bits":"10110000","project":"Balloon"},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-004.5","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS:T#005,199,100,255,073,123,10110000","outcome":"stateful","source_expected":{"raw_analog":[199,100,255,73,123],"A1_calibrated":1034.8,"A1_volts":10.348,"A2_fahrenheit":21,"B1_label_active":true,"B2_label_active":true},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-005.1","title":"Bulletin replacement is source-scoped","profile":"stateful","source":"APRS101 p.76","sequence":"SEQ-005","packet":"W1AW>APRS::BLN1 :Road open","outcome":"stateful","source_expected":{"bulletins":{"W1AW/1":"Road open"}},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-005.2","title":"Bulletin replacement is source-scoped","profile":"stateful","source":"APRS101 p.76","sequence":"SEQ-005","packet":"W2ABC>APRS::BLN1 :Meeting at noon","outcome":"stateful","source_expected":{"bulletins":{"W1AW/1":"Road open","W2ABC/1":"Meeting at noon"}},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-005.3","title":"Bulletin replacement is source-scoped","profile":"stateful","source":"APRS101 p.76","sequence":"SEQ-005","packet":"W1AW>APRS::BLN1 :Road closed","outcome":"stateful","source_expected":{"bulletins":{"W1AW/1":"Road closed","W2ABC/1":"Meeting at noon"}},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-006.1","title":"Non-APRS beacon cannot overwrite explicit status","profile":"stateful","source":"APRS101 p.89","sequence":"SEQ-006","packet":"N0CALL>ID:Starting","outcome":"stateful","source_expected":{"fallback_status":"Starting"},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-006.2","title":"Non-APRS beacon cannot overwrite explicit status","profile":"stateful","source":"APRS101 p.89","sequence":"SEQ-006","packet":"N0CALL>APRS:>Operational","outcome":"stateful","source_expected":{"status":"Operational"},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-006.3","title":"Non-APRS beacon cannot overwrite explicit status","profile":"stateful","source":"APRS101 p.89","sequence":"SEQ-006","packet":"N0CALL>ID:UIDIGI ready","outcome":"stateful","source_expected":{"status":"Operational","fallback_status_does_not_replace_explicit":true},"expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-007.1","title":"Weather location association","profile":"stateful","source":"APRS101 p.65","sequence":"SEQ-007","packet":"N0CALL>APRS:!4903.50N/07201.75W_","outcome":"stateful","source_expected":{"station_latitude_deg":49.058333333333,"station_longitude_deg":-72.029166666667},"note":"Associate positionless weather with the same station identity, not with the immediately previous station in the input stream.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} -{"id":"SEQ-007.2","title":"Weather location association","profile":"stateful","source":"APRS101 p.65","sequence":"SEQ-007","packet":"N0CALL>APRS:_10151800c220s004g005t077","outcome":"stateful","source_expected":{"weather_latitude_deg":49.058333333333,"weather_longitude_deg":-72.029166666667,"temperature_c":25,"position_inherited_not_transmitted":true},"note":"Associate positionless weather with the same station identity, not with the immediately previous station in the input stream.","expected":null,"unresolved":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review.","gap":{"kind":"unresolved","reason":"State assertions are not decoded packet outputs; a packet-model expectation needs separate review."}} +{"id":"SEQ-001.1","title":"Object ownership, kill and revival","profile":"stateful","source":"APRS101 p.57; A11 Objects/names","sequence":"SEQ-001","packet":"W1AW>APRS:;CHECKPT *151800z4903.50N/07201.75WA","outcome":"stateful","source_expected":{"name":"CHECKPT","owner":"W1AW","alive":true,"visible":true},"expected":{"type":"packet"},"state_expected":{"name":"CHECKPT","owner":"W1AW","alive":true,"visible":true}} +{"id":"SEQ-001.2","title":"Object ownership, kill and revival","profile":"stateful","source":"APRS101 p.57; A11 Objects/names","sequence":"SEQ-001","packet":"W2ABC>APRS:;CHECKPT *151801z4904.50N/07201.75WA","outcome":"stateful","source_expected":{"name":"CHECKPT","owner":"W2ABC","alive":true,"visible":true,"latitude_deg":49.075},"expected":{"type":"packet"},"state_expected":{"name":"CHECKPT","owner":"W2ABC","alive":true,"visible":true,"latitude_deg":49.075}} +{"id":"SEQ-001.3","title":"Object ownership, kill and revival","profile":"stateful","source":"APRS101 p.57; A11 Objects/names","sequence":"SEQ-001","packet":"W2ABC>APRS:;CHECKPT _151802z4904.50N/07201.75WA","outcome":"stateful","source_expected":{"name":"CHECKPT","owner":"W2ABC","alive":false,"visible":false,"record_retained":true},"expected":{"type":"packet"},"state_expected":{"name":"CHECKPT","owner":"W2ABC","alive":false,"visible":false,"record_retained":true}} +{"id":"SEQ-001.4","title":"Object ownership, kill and revival","profile":"stateful","source":"APRS101 p.57; A11 Objects/names","sequence":"SEQ-001","packet":"W2ABC>APRS:;CHECKPT *151803z4904.50N/07201.75WA","outcome":"stateful","source_expected":{"name":"CHECKPT","owner":"W2ABC","alive":true,"visible":true},"expected":{"type":"packet"},"state_expected":{"name":"CHECKPT","owner":"W2ABC","alive":true,"visible":true}} +{"id":"SEQ-002.1","title":"Name case and right padding","profile":"stateful","source":"APRS101 pp.58-59; A11 names","sequence":"SEQ-002","packet":"W1AW>APRS:;Leader *151800z4903.50N/07201.75W>","outcome":"stateful","source_expected":{"entity_key":"Leader","entity_count":1},"note":"One shared name namespace; strip right padding only. Do not uppercase object or item names.","expected":{"type":"packet"},"state_expected":{"entity_key":"Leader","entity_count":1}} +{"id":"SEQ-002.2","title":"Name case and right padding","profile":"stateful","source":"APRS101 pp.58-59; A11 names","sequence":"SEQ-002","packet":"W1AW>APRS:;LEADER *151801z4903.50N/07201.75W>","outcome":"stateful","source_expected":{"entity_key":"LEADER","entity_count":2},"note":"One shared name namespace; strip right padding only. Do not uppercase object or item names.","expected":{"type":"packet"},"state_expected":{"entity_key":"LEADER","entity_count":2}} +{"id":"SEQ-002.3","title":"Name case and right padding","profile":"stateful","source":"APRS101 pp.58-59; A11 names","sequence":"SEQ-002","packet":"W1AW>APRS:)Leader!4903.50N/07201.75W>","outcome":"stateful","source_expected":{"entity_key":"Leader","entity_count":2,"type_of_Leader":"item"},"note":"One shared name namespace; strip right padding only. Do not uppercase object or item names.","expected":{"type":"packet"},"state_expected":{"entity_key":"Leader","entity_count":2,"type_of_Leader":"item"}} +{"id":"SEQ-003.1","title":"Message duplication and reply acknowledgment","profile":"stateful","source":"APRS101 pp.71-72; A11 REPLY-ACK","sequence":"SEQ-003","packet":"W1AW>APRS::N0CALL :Hello{01}","outcome":"stateful","source_expected":{"deliveries":1,"ack_to":"W1AW","ack_payload":":W1AW :ack01}","pending_reply_ack":"01"},"note":"Receiver N0CALL has outbound message 02 pending. Deduplication uses sender + message ID/content, excluding the changing piggyback ACK; sending/retry timing is not executed by this corpus.","expected":{"type":"packet"},"state_expected":{"deliveries":1,"ack_to":"W1AW","ack_payload":":W1AW :ack01}","pending_reply_ack":"01"}} +{"id":"SEQ-003.2","title":"Message duplication and reply acknowledgment","profile":"stateful","source":"APRS101 pp.71-72; A11 REPLY-ACK","sequence":"SEQ-003","packet":"W1AW>APRS::N0CALL :Hello{01}02","outcome":"stateful","source_expected":{"deliveries":1,"ack_to":"W1AW","ack_payload":":W1AW :ack01}02","outbound_message_02_acked":true,"pending_reply_ack":"01"},"note":"Receiver N0CALL has outbound message 02 pending. Deduplication uses sender + message ID/content, excluding the changing piggyback ACK; sending/retry timing is not executed by this corpus.","expected":{"type":"packet"},"state_expected":{"deliveries":1,"ack_to":"W1AW","ack_payload":":W1AW :ack01}02","outbound_message_02_acked":true,"pending_reply_ack":"01"}} +{"id":"SEQ-003.3","title":"Message duplication and reply acknowledgment","profile":"stateful","source":"APRS101 pp.71-72; A11 REPLY-ACK","sequence":"SEQ-003","packet":"N0CALL>APRS::W1AW :Reply{03}01","outcome":"stateful","source_expected":{"message_id":"03","piggyback_ack":"01"},"note":"Receiver N0CALL has outbound message 02 pending. Deduplication uses sender + message ID/content, excluding the changing piggyback ACK; sending/retry timing is not executed by this corpus.","expected":{"type":"packet"},"state_expected":{"message_id":"03","piggyback_ack":"01"}} +{"id":"SEQ-004.1","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS::N0CALL :PARM.Battery,Temp,,,,Camra,Chut","outcome":"stateful","source_expected":{"A1":"Battery","A2":"Temp","B1":"Camra","B2":"Chut"},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":{"type":"packet"},"state_expected":{"A1":"Battery","A2":"Temp","B1":"Camra","B2":"Chut"}} +{"id":"SEQ-004.2","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS::N0CALL :UNIT.v/100,deg.F,,,,Click,OPEN","outcome":"stateful","source_expected":{"A1_unit":"v/100","A2_unit":"deg.F","B1_label":"Click","B2_label":"OPEN"},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":{"type":"packet"},"state_expected":{"A1_unit":"v/100","A2_unit":"deg.F","B1_label":"Click","B2_label":"OPEN"}} +{"id":"SEQ-004.3","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS::N0CALL :EQNS.0,5.2,0,0,.53,-32","outcome":"stateful","source_expected":{"A1_coefficients":[0,5.2,0],"A2_coefficients":[0,0.53,-32]},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":{"type":"packet"},"state_expected":{"A1_coefficients":[0,5.2,0],"A2_coefficients":[0,0.53,-32]}} +{"id":"SEQ-004.4","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS::N0CALL :BITS.10110000,Balloon","outcome":"stateful","source_expected":{"sense_bits":"10110000","project":"Balloon"},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":{"type":"packet"},"state_expected":{"sense_bits":"10110000","project":"Balloon"}} +{"id":"SEQ-004.5","title":"Telemetry calibration and bit sense","profile":"stateful","source":"APRS101 pp.68-70","sequence":"SEQ-004","packet":"N0CALL>APRS:T#005,199,100,255,073,123,10110000","outcome":"stateful","source_expected":{"raw_analog":[199,100,255,73,123],"A1_calibrated":1034.8,"A1_volts":10.348,"A2_fahrenheit":21,"B1_label_active":true,"B2_label_active":true},"note":"Definition messages can arrive before or after values. Keep raw samples to permit recalculation. Do not invent coefficients for undefined channels.","expected":{"type":"packet"},"state_expected":{"raw_analog":[199,100,255,73,123],"A1_calibrated":1034.8,"A1_volts":10.348,"A2_fahrenheit":21,"B1_label_active":true,"B2_label_active":true}} +{"id":"SEQ-005.1","title":"Bulletin replacement is source-scoped","profile":"stateful","source":"APRS101 p.76","sequence":"SEQ-005","packet":"W1AW>APRS::BLN1 :Road open","outcome":"stateful","source_expected":{"bulletins":{"W1AW/1":"Road open"}},"expected":{"type":"packet"},"state_expected":{"bulletins":{"W1AW/1":"Road open"}}} +{"id":"SEQ-005.2","title":"Bulletin replacement is source-scoped","profile":"stateful","source":"APRS101 p.76","sequence":"SEQ-005","packet":"W2ABC>APRS::BLN1 :Meeting at noon","outcome":"stateful","source_expected":{"bulletins":{"W1AW/1":"Road open","W2ABC/1":"Meeting at noon"}},"expected":{"type":"packet"},"state_expected":{"bulletins":{"W1AW/1":"Road open","W2ABC/1":"Meeting at noon"}}} +{"id":"SEQ-005.3","title":"Bulletin replacement is source-scoped","profile":"stateful","source":"APRS101 p.76","sequence":"SEQ-005","packet":"W1AW>APRS::BLN1 :Road closed","outcome":"stateful","source_expected":{"bulletins":{"W1AW/1":"Road closed","W2ABC/1":"Meeting at noon"}},"expected":{"type":"packet"},"state_expected":{"bulletins":{"W1AW/1":"Road closed","W2ABC/1":"Meeting at noon"}}} +{"id":"SEQ-006.1","title":"Non-APRS beacon cannot overwrite explicit status","profile":"stateful","source":"APRS101 p.89","sequence":"SEQ-006","packet":"N0CALL>ID:Starting","outcome":"stateful","source_expected":{"fallback_status":"Starting"},"expected":{"type":"packet"},"state_expected":{"fallback_status":"Starting"}} +{"id":"SEQ-006.2","title":"Non-APRS beacon cannot overwrite explicit status","profile":"stateful","source":"APRS101 p.89","sequence":"SEQ-006","packet":"N0CALL>APRS:>Operational","outcome":"stateful","source_expected":{"status":"Operational"},"expected":{"type":"packet"},"state_expected":{"status":"Operational"}} +{"id":"SEQ-006.3","title":"Non-APRS beacon cannot overwrite explicit status","profile":"stateful","source":"APRS101 p.89","sequence":"SEQ-006","packet":"N0CALL>ID:UIDIGI ready","outcome":"stateful","source_expected":{"status":"Operational","fallback_status_does_not_replace_explicit":true},"expected":{"type":"packet"},"state_expected":{"status":"Operational","fallback_status_does_not_replace_explicit":true}} +{"id":"SEQ-007.1","title":"Weather location association","profile":"stateful","source":"APRS101 p.65","sequence":"SEQ-007","packet":"N0CALL>APRS:!4903.50N/07201.75W_","outcome":"stateful","source_expected":{"station_latitude_deg":49.058333333333,"station_longitude_deg":-72.029166666667},"note":"Associate positionless weather with the same station identity, not with the immediately previous station in the input stream.","expected":{"type":"packet"},"state_expected":{"station_latitude_deg":49.058333333333,"station_longitude_deg":-72.029166666667}} +{"id":"SEQ-007.2","title":"Weather location association","profile":"stateful","source":"APRS101 p.65","sequence":"SEQ-007","packet":"N0CALL>APRS:_10151800c220s004g005t077","outcome":"stateful","source_expected":{"weather_latitude_deg":49.058333333333,"weather_longitude_deg":-72.029166666667,"temperature_c":25,"position_inherited_not_transmitted":true},"note":"Associate positionless weather with the same station identity, not with the immediately previous station in the input stream.","expected":{"type":"packet"},"state_expected":{"weather_latitude_deg":49.058333333333,"weather_longitude_deg":-72.029166666667,"temperature_c":25,"position_inherited_not_transmitted":true}} diff --git a/packages/aprs/tests/vectors/sta.jsonl b/packages/aprs/tests/vectors/sta.jsonl index 0d345c8..99f8729 100644 --- a/packages/aprs/tests/vectors/sta.jsonl +++ b/packages/aprs/tests/vectors/sta.jsonl @@ -5,25 +5,25 @@ {"id":"STA-005","title":"Status length 7","profile":"core-1.1","source":"APRS101 p. 80","packet":"N0CALL>APRS:>A:B > C","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"A:B > C"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"A:B > C"}},"unmapped":[]} {"id":"STA-006","title":"Status length 23","profile":"core-1.1","source":"APRS101 p. 80","packet":"N0CALL>APRS:>1234567 not a timestamp","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"1234567 not a timestamp"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"1234567 not a timestamp"}},"unmapped":[]} {"id":"STA-007","title":"Timed status","profile":"core-1.1","source":"APRS101 p. 80","packet":"N0CALL>APRS:>092345zxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"status_text":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"text":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}},"unmapped":["$.timestamp.raw"]} -{"id":"STA-008","title":"Grid IO91","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>IO91/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"IO91","bounds_deg":{"latitude":[51,52],"longitude":[-2,0]},"center_deg":[51.5,-1.0]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"IO91"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.symbol":null,"$.payload.text":"IO91/- Home","$.payload.grid":null}}} -{"id":"STA-009","title":"Grid IO91SX","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>IO91SX/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"IO91SX"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.symbol":null,"$.payload.text":"IO91SX/- Home","$.payload.grid":null}}} -{"id":"STA-010","title":"Grid io91sx","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>io91sx/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"IO91SX"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.symbol":null,"$.payload.text":"io91sx/- Home","$.payload.grid":null}}} -{"id":"STA-011","title":"Grid AA00AA","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>AA00AA/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"AA00AA","bounds_deg":{"latitude":[-90.0,-89.958333333333],"longitude":[-180.0,-179.916666666667]},"center_deg":[-89.979166666667,-179.958333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"AA00AA"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.symbol":null,"$.payload.text":"AA00AA/- Home","$.payload.grid":null}}} -{"id":"STA-012","title":"Grid RR99XX","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>RR99XX/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"RR99XX","bounds_deg":{"latitude":[89.958333333333,90.0],"longitude":[179.916666666667,180.0]},"center_deg":[89.979166666667,179.958333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"RR99XX"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.symbol":null,"$.payload.text":"RR99XX/- Home","$.payload.grid":null}}} -{"id":"STA-013","title":"Beam/ERP 01","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^01","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":0,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":0,"erp_w":10}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^01","$.payload.beam":null}}} -{"id":"STA-014","title":"Beam/ERP 0:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^0:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":0,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":0,"erp_w":1000}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^0:","$.payload.beam":null}}} -{"id":"STA-015","title":"Beam/ERP 0K","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^0K","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":0,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":0,"erp_w":7290}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^0K","$.payload.beam":null}}} -{"id":"STA-016","title":"Beam/ERP 91","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^91","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":90,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":90,"erp_w":10}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^91","$.payload.beam":null}}} -{"id":"STA-017","title":"Beam/ERP 9:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^9:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":90,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":90,"erp_w":1000}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^9:","$.payload.beam":null}}} -{"id":"STA-018","title":"Beam/ERP 9K","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^9K","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":90,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":90,"erp_w":7290}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^9K","$.payload.beam":null}}} -{"id":"STA-019","title":"Beam/ERP A1","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^A1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":100,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":100,"erp_w":10}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^A1","$.payload.beam":null}}} -{"id":"STA-020","title":"Beam/ERP A:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^A:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":100,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":100,"erp_w":1000}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^A:","$.payload.beam":null}}} -{"id":"STA-021","title":"Beam/ERP AK","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^AK","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":100,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":100,"erp_w":7290}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^AK","$.payload.beam":null}}} -{"id":"STA-022","title":"Beam/ERP B1","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^B1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":110,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":110,"erp_w":10}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^B1","$.payload.beam":null}}} -{"id":"STA-023","title":"Beam/ERP B:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^B:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":110,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":110,"erp_w":1000}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^B:","$.payload.beam":null}}} -{"id":"STA-024","title":"Beam/ERP BK","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^BK","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":110,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":110,"erp_w":7290}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^BK","$.payload.beam":null}}} -{"id":"STA-025","title":"Beam/ERP Z1","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^Z1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":350,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":350,"erp_w":10}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^Z1","$.payload.beam":null}}} -{"id":"STA-026","title":"Beam/ERP Z:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^Z:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":350,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":350,"erp_w":1000}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^Z:","$.payload.beam":null}}} -{"id":"STA-027","title":"Beam/ERP ZK","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^ZK","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":350,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":350,"erp_w":7290}}},"unmapped":[],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.text":"Ready^ZK","$.payload.beam":null}}} -{"id":"STA-028","title":"Grid plus meteor scatter","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>IO91SX/- ^B7","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" ","beam_heading_deg":110,"erp_w":490},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" ","grid":{"locator":"IO91SX"},"beam":{"heading_deg":110,"erp_w":490}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"],"gap":{"kind":"fields","reason":"Status grid/beam suffix decoding is not implemented; suffix remains text.","allowed_actual":{"$.payload.symbol":null,"$.payload.text":"IO91SX/- ^B7","$.payload.grid":null,"$.payload.beam":null}}} +{"id":"STA-008","title":"Grid IO91","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>IO91/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"IO91","bounds_deg":{"latitude":[51,52],"longitude":[-2,0]},"center_deg":[51.5,-1.0]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"IO91"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"]} +{"id":"STA-009","title":"Grid IO91SX","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>IO91SX/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"IO91SX"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"]} +{"id":"STA-010","title":"Grid io91sx","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>io91sx/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"IO91SX"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"]} +{"id":"STA-011","title":"Grid AA00AA","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>AA00AA/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"AA00AA","bounds_deg":{"latitude":[-90.0,-89.958333333333],"longitude":[-180.0,-179.916666666667]},"center_deg":[-89.979166666667,-179.958333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"AA00AA"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"]} +{"id":"STA-012","title":"Grid RR99XX","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>RR99XX/- Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"RR99XX","bounds_deg":{"latitude":[89.958333333333,90.0],"longitude":[179.916666666667,180.0]},"center_deg":[89.979166666667,179.958333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" Home"},"note":"Grid is an area. The reported center is a convention, not the precise station location; lowercase reception is explicitly supported.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" Home","grid":{"locator":"RR99XX"}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"]} +{"id":"STA-013","title":"Beam/ERP 01","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^01","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":0,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":0,"erp_w":10}}},"unmapped":[]} +{"id":"STA-014","title":"Beam/ERP 0:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^0:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":0,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":0,"erp_w":1000}}},"unmapped":[]} +{"id":"STA-015","title":"Beam/ERP 0K","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^0K","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":0,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":0,"erp_w":7290}}},"unmapped":[]} +{"id":"STA-016","title":"Beam/ERP 91","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^91","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":90,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":90,"erp_w":10}}},"unmapped":[]} +{"id":"STA-017","title":"Beam/ERP 9:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^9:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":90,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":90,"erp_w":1000}}},"unmapped":[]} +{"id":"STA-018","title":"Beam/ERP 9K","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^9K","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":90,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":90,"erp_w":7290}}},"unmapped":[]} +{"id":"STA-019","title":"Beam/ERP A1","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^A1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":100,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":100,"erp_w":10}}},"unmapped":[]} +{"id":"STA-020","title":"Beam/ERP A:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^A:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":100,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":100,"erp_w":1000}}},"unmapped":[]} +{"id":"STA-021","title":"Beam/ERP AK","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^AK","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":100,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":100,"erp_w":7290}}},"unmapped":[]} +{"id":"STA-022","title":"Beam/ERP B1","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^B1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":110,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":110,"erp_w":10}}},"unmapped":[]} +{"id":"STA-023","title":"Beam/ERP B:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^B:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":110,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":110,"erp_w":1000}}},"unmapped":[]} +{"id":"STA-024","title":"Beam/ERP BK","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^BK","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":110,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":110,"erp_w":7290}}},"unmapped":[]} +{"id":"STA-025","title":"Beam/ERP Z1","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^Z1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":350,"erp_w":10},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":350,"erp_w":10}}},"unmapped":[]} +{"id":"STA-026","title":"Beam/ERP Z:","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^Z:","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":350,"erp_w":1000},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":350,"erp_w":1000}}},"unmapped":[]} +{"id":"STA-027","title":"Beam/ERP ZK","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^ZK","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready","beam_heading_deg":350,"erp_w":7290},"note":"Decode ^HP only at the end of the status text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready","beam":{"heading_deg":350,"erp_w":7290}}},"unmapped":[]} +{"id":"STA-028","title":"Grid plus meteor scatter","profile":"core-1.1","source":"APRS101 pp. 81-82","packet":"N0CALL>APRS:>IO91SX/- ^B7","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"status_text":" ","beam_heading_deg":110,"erp_w":490},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","symbol":{"table_id":"/","code":"-"},"text":" ","grid":{"locator":"IO91SX"},"beam":{"heading_deg":110,"erp_w":490}}},"unmapped":["$.grid.bounds_deg.latitude","$.grid.bounds_deg.longitude","$.grid.center_deg","$.symbol.overlay","$.symbol.table"]} {"id":"STA-029","title":"Embedded beam-looking text","profile":"core-1.1","source":"APRS101 p. 81","packet":"N0CALL>APRS:>Ready^B7 later","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"status","status_text":"Ready^B7 later"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"status","text":"Ready^B7 later"}},"unmapped":[]} diff --git a/packages/aprs/tests/vectors/tim.jsonl b/packages/aprs/tests/vectors/tim.jsonl index d70230d..abd7a74 100644 --- a/packages/aprs/tests/vectors/tim.jsonl +++ b/packages/aprs/tests/vectors/tim.jsonl @@ -5,9 +5,9 @@ {"id":"TIM-005","title":"Position timestamp 000000h","profile":"core-1.1","source":"APRS101 pp. 22-23","packet":"N0CALL>APRS:@000000h4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"","timestamp":{"raw":"000000h","format":"HMS","zone":"UTC","hour":0,"minute":0,"second":0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"timestamp":{"kind":"hms_utc","hour":0,"minute":0,"second":0}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} {"id":"TIM-006","title":"Position timestamp 235959h","profile":"core-1.1","source":"APRS101 pp. 22-23","packet":"N0CALL>APRS:@235959h4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"","timestamp":{"raw":"235959h","format":"HMS","zone":"UTC","hour":23,"minute":59,"second":59}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"timestamp":{"kind":"hms_utc","hour":23,"minute":59,"second":59}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} {"id":"TIM-007","title":"Position timestamp 092345z","profile":"core-1.1","source":"APRS101 pp. 22-23","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"position","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} -{"id":"TIM-008","title":"Positionless weather timestamp 01010000","profile":"core-1.1","source":"APRS101 pp. 22, 63-64","packet":"N0CALL>APRS:_01010000c...s...g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"01010000","format":"MDHM","zone":"UTC","month":1,"day":1,"hour":0,"minute":0},"weather":{"wind_direction_deg":null,"wind_speed_mph":null,"gust_mph":null,"temperature_f":null}},"note":"Year is absent; February 29 is not invalid without a year context.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":1,"month":1,"hour":0,"minute":0},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"TIM-009","title":"Positionless weather timestamp 12312359","profile":"core-1.1","source":"APRS101 pp. 22, 63-64","packet":"N0CALL>APRS:_12312359c...s...g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"12312359","format":"MDHM","zone":"UTC","month":12,"day":31,"hour":23,"minute":59},"weather":{"wind_direction_deg":null,"wind_speed_mph":null,"gust_mph":null,"temperature_f":null}},"note":"Year is absent; February 29 is not invalid without a year context.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":31,"month":12,"hour":23,"minute":59},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"TIM-010","title":"Positionless weather timestamp 02291234","profile":"core-1.1","source":"APRS101 pp. 22, 63-64","packet":"N0CALL>APRS:_02291234c...s...g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"02291234","format":"MDHM","zone":"UTC","month":2,"day":29,"hour":12,"minute":34},"weather":{"wind_direction_deg":null,"wind_speed_mph":null,"gust_mph":null,"temperature_f":null}},"note":"Year is absent; February 29 is not invalid without a year context.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":29,"month":2,"hour":12,"minute":34},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"TIM-008","title":"Positionless weather timestamp 01010000","profile":"core-1.1","source":"APRS101 pp. 22, 63-64","packet":"N0CALL>APRS:_01010000c...s...g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"01010000","format":"MDHM","zone":"UTC","month":1,"day":1,"hour":0,"minute":0},"weather":{"wind_direction_deg":null,"wind_speed_mph":null,"gust_mph":null,"temperature_f":null}},"note":"Year is absent; February 29 is not invalid without a year context.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":1,"month":1,"hour":0,"minute":0},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw"]} +{"id":"TIM-009","title":"Positionless weather timestamp 12312359","profile":"core-1.1","source":"APRS101 pp. 22, 63-64","packet":"N0CALL>APRS:_12312359c...s...g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"12312359","format":"MDHM","zone":"UTC","month":12,"day":31,"hour":23,"minute":59},"weather":{"wind_direction_deg":null,"wind_speed_mph":null,"gust_mph":null,"temperature_f":null}},"note":"Year is absent; February 29 is not invalid without a year context.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":31,"month":12,"hour":23,"minute":59},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw"]} +{"id":"TIM-010","title":"Positionless weather timestamp 02291234","profile":"core-1.1","source":"APRS101 pp. 22, 63-64","packet":"N0CALL>APRS:_02291234c...s...g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"02291234","format":"MDHM","zone":"UTC","month":2,"day":29,"hour":12,"minute":34},"weather":{"wind_direction_deg":null,"wind_speed_mph":null,"gust_mph":null,"temperature_f":null}},"note":"Year is absent; February 29 is not invalid without a year context.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":29,"month":2,"hour":12,"minute":34},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw"]} {"id":"TIM-011","title":"Invalid timestamp 000000z","profile":"core-1.1","source":"APRS101 p. 22","packet":"N0CALL>APRS:@000000z4903.50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-timestamp","partial":{"position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0}}},"note":"Reject the timestamp; retaining other fields with a warning is allowed. No normalized instant may be fabricated.","expected":{"original_wire":"N0CALL>APRS:@000000z4903.50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"TIM-012","title":"Invalid timestamp 322359z","profile":"core-1.1","source":"APRS101 p. 22","packet":"N0CALL>APRS:@322359z4903.50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-timestamp","partial":{"position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0}}},"note":"Reject the timestamp; retaining other fields with a warning is allowed. No normalized instant may be fabricated.","expected":{"original_wire":"N0CALL>APRS:@322359z4903.50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"TIM-013","title":"Invalid timestamp 012400z","profile":"core-1.1","source":"APRS101 p. 22","packet":"N0CALL>APRS:@012400z4903.50N/07201.75W-","outcome":"reject-field","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"error_class":"invalid-timestamp","partial":{"position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0}}},"note":"Reject the timestamp; retaining other fields with a warning is allowed. No normalized instant may be fabricated.","expected":{"original_wire":"N0CALL>APRS:@012400z4903.50N/07201.75W-"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} diff --git a/packages/aprs/tests/vectors/tlm.jsonl b/packages/aprs/tests/vectors/tlm.jsonl index 30f4321..c29d957 100644 --- a/packages/aprs/tests/vectors/tlm.jsonl +++ b/packages/aprs/tests/vectors/tlm.jsonl @@ -1,18 +1,18 @@ -{"id":"TLM-001","title":"Sequence 000 comma=True","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#000,199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":0,"sequence_raw":"000","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":0,"sequence_raw":"000","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"TLM-002","title":"Sequence 005 comma=True","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":5,"sequence_raw":"005","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":5,"sequence_raw":"005","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"TLM-003","title":"Sequence 999 comma=True","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#999,199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":999,"sequence_raw":"999","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":999,"sequence_raw":"999","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"TLM-004","title":"Sequence MIC comma=True","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#MIC,199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":null,"sequence_raw":"MIC","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":null,"sequence_raw":"MIC","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"TLM-005","title":"Sequence MIC comma=False","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#MIC199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":null,"sequence_raw":"MIC","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":null,"sequence_raw":"MIC","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"TLM-006","title":"Analog/digital boundaries 00000000","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS:T#123,000,000,000,000,000,00000000Payload","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":123,"sequence_raw":"123","analog_raw":[0,0,0,0,0],"digital_bits":"00000000","digital_channels_B1_to_B8":[0,0,0,0,0,0,0,0]},"comment":"Payload"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"Payload","sequence":123,"sequence_raw":"123","analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"TLM-007","title":"Analog/digital boundaries 11111111","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS:T#123,255,255,255,255,255,11111111Payload","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":123,"sequence_raw":"123","analog_raw":[255,255,255,255,255],"digital_bits":"11111111","digital_channels_B1_to_B8":[1,1,1,1,1,1,1,1]},"comment":"Payload"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"Payload","sequence":123,"sequence_raw":"123","analog":[255,255,255,255,255],"digital":[true,true,true,true,true,true,true,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"TLM-008","title":"Analog/digital boundaries 10000000","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS:T#123,001,002,003,004,005,10000000Payload","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":123,"sequence_raw":"123","analog_raw":[1,2,3,4,5],"digital_bits":"10000000","digital_channels_B1_to_B8":[1,0,0,0,0,0,0,0]},"comment":"Payload"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"Payload","sequence":123,"sequence_raw":"123","analog":[1,2,3,4,5],"digital":[true,false,false,false,false,false,false,false],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"TLM-009","title":"Analog/digital boundaries 00000001","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS:T#123,001,002,003,004,005,00000001Payload","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":123,"sequence_raw":"123","analog_raw":[1,2,3,4,5],"digital_bits":"00000001","digital_channels_B1_to_B8":[0,0,0,0,0,0,0,1]},"comment":"Payload"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"Payload","sequence":123,"sequence_raw":"123","analog":[1,2,3,4,5],"digital":[false,false,false,false,false,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"TLM-010","title":"Definition PARM","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS::N0CALL-11:PARM.Battery,Btemp,ATemp,Pres,Alt,Camra,Chut,Sun,10m,ATV","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL-11","addressee_raw":"N0CALL-11","text":"PARM.Battery,Btemp,ATemp,Pres,Alt,Camra,Chut,Sun,10m,ATV","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL-11","type":"PARM","values_raw":["Battery","Btemp","ATemp","Pres","Alt","Camra","Chut","Sun","10m","ATV"],"channels":["Battery","Btemp","ATemp","Pres","Alt","Camra","Chut","Sun","10m","ATV",null,null,null]}},"note":"The sender may configure another telemetry station. Do not require addressee == packet source.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-11","definition":{"type":"telemetry_parameters","channels":["Battery","Btemp","ATemp","Pres","Alt","Camra","Chut","Sun","10m","ATV",null,null,null]}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"TLM-011","title":"Definition UNIT","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS::N0CALL-11:UNIT.v/100,deg.F,deg.F,Mbar,Kft,Click,OPEN,on,on,hi","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL-11","addressee_raw":"N0CALL-11","text":"UNIT.v/100,deg.F,deg.F,Mbar,Kft,Click,OPEN,on,on,hi","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL-11","type":"UNIT","values_raw":["v/100","deg.F","deg.F","Mbar","Kft","Click","OPEN","on","on","hi"],"channels":["v/100","deg.F","deg.F","Mbar","Kft","Click","OPEN","on","on","hi",null,null,null]}},"note":"The sender may configure another telemetry station. Do not require addressee == packet source.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-11","definition":{"type":"telemetry_units","channels":["v/100","deg.F","deg.F","Mbar","Kft","Click","OPEN","on","on","hi",null,null,null]}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"TLM-012","title":"Definition EQNS","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS::N0CALL-11:EQNS.0,5.2,0,0,.53,-32,3,4.39,49,-32,3,18,1,2,3","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL-11","addressee_raw":"N0CALL-11","text":"EQNS.0,5.2,0,0,.53,-32,3,4.39,49,-32,3,18,1,2,3","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL-11","type":"EQNS","values_raw":["0","5.2","0","0",".53","-32","3","4.39","49","-32","3","18","1","2","3"],"coefficients_abc":[[0.0,5.2,0.0],[0.0,0.53,-32.0],[3.0,4.39,49.0],[-32.0,3.0,18.0],[1.0,2.0,3.0]]}},"note":"The sender may configure another telemetry station. Do not require addressee == packet source.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-11","definition":{"type":"telemetry_equations","coefficients":[{"a":0.0,"b":5.2,"c":0.0},{"a":0.0,"b":0.53,"c":-32.0},{"a":3.0,"b":4.39,"c":49.0},{"a":-32.0,"b":3.0,"c":18.0},{"a":1.0,"b":2.0,"c":3.0}]}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"TLM-013","title":"Definition BITS","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS::N0CALL-11:BITS.10110000,Balloon project","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL-11","addressee_raw":"N0CALL-11","text":"BITS.10110000,Balloon project","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL-11","type":"BITS","values_raw":["10110000","Balloon project"],"sense_bits":"10110000","project_title":"Balloon project"}},"note":"The sender may configure another telemetry station. Do not require addressee == packet source.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-11","definition":{"type":"telemetry_bits","sense":[true,false,true,true,false,false,false,false],"project_title":"Balloon project"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"TLM-014","title":"Partial / empty definition PARM.Temp","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :PARM.Temp","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"PARM.Temp","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"PARM","values_raw":["Temp"]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_parameters"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"TLM-015","title":"Partial / empty definition PARM.Temp,,Volt","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :PARM.Temp,,Volt","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"PARM.Temp,,Volt","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"PARM","values_raw":["Temp","","Volt"]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_parameters"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"TLM-016","title":"Partial / empty definition UNIT.deg.C,,V","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :UNIT.deg.C,,V","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"UNIT.deg.C,,V","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"UNIT","values_raw":["deg.C","","V"]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_units"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"TLM-017","title":"Partial / empty definition EQNS.0,1,0","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :EQNS.0,1,0","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"EQNS.0,1,0","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"EQNS","values_raw":["0","1","0"]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_equations"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} -{"id":"TLM-018","title":"Partial / empty definition BITS.11111111,","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :BITS.11111111,","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"BITS.11111111,","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"BITS","values_raw":["11111111",""]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_bits"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: specialized message semantics"}} +{"id":"TLM-001","title":"Sequence 000 comma=True","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#000,199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":0,"sequence_raw":"000","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":0,"sequence_raw":"000","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"]} +{"id":"TLM-002","title":"Sequence 005 comma=True","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#005,199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":5,"sequence_raw":"005","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":5,"sequence_raw":"005","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"]} +{"id":"TLM-003","title":"Sequence 999 comma=True","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#999,199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":999,"sequence_raw":"999","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":999,"sequence_raw":"999","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"]} +{"id":"TLM-004","title":"Sequence MIC comma=True","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#MIC,199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":null,"sequence_raw":"MIC","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":"MIC","sequence_raw":"MIC","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"]} +{"id":"TLM-005","title":"Sequence MIC comma=False","profile":"core-1.1","source":"APRS101 p. 68","packet":"N0CALL>APRS:T#MIC199,000,255,073,123,01101001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":null,"sequence_raw":"MIC","analog_raw":[199,0,255,73,123],"digital_bits":"01101001","digital_channels_B1_to_B8":[0,1,1,0,1,0,0,1]},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":"MIC","sequence_raw":"MIC","analog":[199,0,255,73,123],"digital":[false,true,true,false,true,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"]} +{"id":"TLM-006","title":"Analog/digital boundaries 00000000","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS:T#123,000,000,000,000,000,00000000Payload","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":123,"sequence_raw":"123","analog_raw":[0,0,0,0,0],"digital_bits":"00000000","digital_channels_B1_to_B8":[0,0,0,0,0,0,0,0]},"comment":"Payload"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"Payload","sequence":123,"sequence_raw":"123","analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"]} +{"id":"TLM-007","title":"Analog/digital boundaries 11111111","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS:T#123,255,255,255,255,255,11111111Payload","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":123,"sequence_raw":"123","analog_raw":[255,255,255,255,255],"digital_bits":"11111111","digital_channels_B1_to_B8":[1,1,1,1,1,1,1,1]},"comment":"Payload"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"Payload","sequence":123,"sequence_raw":"123","analog":[255,255,255,255,255],"digital":[true,true,true,true,true,true,true,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"]} +{"id":"TLM-008","title":"Analog/digital boundaries 10000000","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS:T#123,001,002,003,004,005,10000000Payload","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":123,"sequence_raw":"123","analog_raw":[1,2,3,4,5],"digital_bits":"10000000","digital_channels_B1_to_B8":[1,0,0,0,0,0,0,0]},"comment":"Payload"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"Payload","sequence":123,"sequence_raw":"123","analog":[1,2,3,4,5],"digital":[true,false,false,false,false,false,false,false],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"]} +{"id":"TLM-009","title":"Analog/digital boundaries 00000001","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS:T#123,001,002,003,004,005,00000001Payload","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry","telemetry":{"sequence":123,"sequence_raw":"123","analog_raw":[1,2,3,4,5],"digital_bits":"00000001","digital_channels_B1_to_B8":[0,0,0,0,0,0,0,1]},"comment":"Payload"},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"Payload","sequence":123,"sequence_raw":"123","analog":[1,2,3,4,5],"digital":[false,false,false,false,false,false,false,true],"encoding":"classic"}},"unmapped":["$.telemetry.digital_channels_B1_to_B8"]} +{"id":"TLM-010","title":"Definition PARM","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS::N0CALL-11:PARM.Battery,Btemp,ATemp,Pres,Alt,Camra,Chut,Sun,10m,ATV","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL-11","addressee_raw":"N0CALL-11","text":"PARM.Battery,Btemp,ATemp,Pres,Alt,Camra,Chut,Sun,10m,ATV","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL-11","type":"PARM","values_raw":["Battery","Btemp","ATemp","Pres","Alt","Camra","Chut","Sun","10m","ATV"],"channels":["Battery","Btemp","ATemp","Pres","Alt","Camra","Chut","Sun","10m","ATV",null,null,null]}},"note":"The sender may configure another telemetry station. Do not require addressee == packet source.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-11","definition":{"type":"telemetry_parameters","channels":["Battery","Btemp","ATemp","Pres","Alt","Camra","Chut","Sun","10m","ATV",null,null,null]}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"]} +{"id":"TLM-011","title":"Definition UNIT","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS::N0CALL-11:UNIT.v/100,deg.F,deg.F,Mbar,Kft,Click,OPEN,on,on,hi","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL-11","addressee_raw":"N0CALL-11","text":"UNIT.v/100,deg.F,deg.F,Mbar,Kft,Click,OPEN,on,on,hi","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL-11","type":"UNIT","values_raw":["v/100","deg.F","deg.F","Mbar","Kft","Click","OPEN","on","on","hi"],"channels":["v/100","deg.F","deg.F","Mbar","Kft","Click","OPEN","on","on","hi",null,null,null]}},"note":"The sender may configure another telemetry station. Do not require addressee == packet source.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-11","definition":{"type":"telemetry_units","channels":["v/100","deg.F","deg.F","Mbar","Kft","Click","OPEN","on","on","hi",null,null,null]}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"]} +{"id":"TLM-012","title":"Definition EQNS","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS::N0CALL-11:EQNS.0,5.2,0,0,.53,-32,3,4.39,49,-32,3,18,1,2,3","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL-11","addressee_raw":"N0CALL-11","text":"EQNS.0,5.2,0,0,.53,-32,3,4.39,49,-32,3,18,1,2,3","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL-11","type":"EQNS","values_raw":["0","5.2","0","0",".53","-32","3","4.39","49","-32","3","18","1","2","3"],"coefficients_abc":[[0.0,5.2,0.0],[0.0,0.53,-32.0],[3.0,4.39,49.0],[-32.0,3.0,18.0],[1.0,2.0,3.0]]}},"note":"The sender may configure another telemetry station. Do not require addressee == packet source.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-11","definition":{"type":"telemetry_equations","coefficients":[{"a":0.0,"b":5.2,"c":0.0},{"a":0.0,"b":0.53,"c":-32.0},{"a":3.0,"b":4.39,"c":49.0},{"a":-32.0,"b":3.0,"c":18.0},{"a":1.0,"b":2.0,"c":3.0}]}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"]} +{"id":"TLM-013","title":"Definition BITS","profile":"core-1.1","source":"APRS101 pp. 68-70","packet":"N0CALL>APRS::N0CALL-11:BITS.10110000,Balloon project","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL-11","addressee_raw":"N0CALL-11","text":"BITS.10110000,Balloon project","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL-11","type":"BITS","values_raw":["10110000","Balloon project"],"sense_bits":"10110000","project_title":"Balloon project"}},"note":"The sender may configure another telemetry station. Do not require addressee == packet source.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-11","definition":{"type":"telemetry_bits","sense":[true,false,true,true,false,false,false,false],"project_title":"Balloon project"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"]} +{"id":"TLM-014","title":"Partial / empty definition PARM.Temp","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :PARM.Temp","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"PARM.Temp","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"PARM","values_raw":["Temp"]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_parameters"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"]} +{"id":"TLM-015","title":"Partial / empty definition PARM.Temp,,Volt","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :PARM.Temp,,Volt","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"PARM.Temp,,Volt","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"PARM","values_raw":["Temp","","Volt"]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_parameters"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"]} +{"id":"TLM-016","title":"Partial / empty definition UNIT.deg.C,,V","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :UNIT.deg.C,,V","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"UNIT.deg.C,,V","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"UNIT","values_raw":["deg.C","","V"]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_units"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"]} +{"id":"TLM-017","title":"Partial / empty definition EQNS.0,1,0","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :EQNS.0,1,0","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"EQNS.0,1,0","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"EQNS","values_raw":["0","1","0"]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_equations"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"]} +{"id":"TLM-018","title":"Partial / empty definition BITS.11111111,","profile":"core-1.1","source":"APRS101 pp. 69-70","packet":"N0CALL>APRS::N0CALL :BITS.11111111,","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"telemetry-definition","message":{"addressee":"N0CALL","addressee_raw":"N0CALL ","text":"BITS.11111111,","message_id":null,"ack_requested":false},"telemetry_definition":{"target":"N0CALL","type":"BITS","values_raw":["11111111",""]}},"note":"Preserve empty slots and incomplete definitions; do not shift later channels left.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_bits"}}},"unmapped":["$.message.ack_requested","$.message.addressee","$.message.addressee_raw","$.message.message_id","$.message.text","$.telemetry_definition.values_raw"]} diff --git a/packages/aprs/tests/vectors/wx.jsonl b/packages/aprs/tests/vectors/wx.jsonl index 22e1122..ca0cc97 100644 --- a/packages/aprs/tests/vectors/wx.jsonl +++ b/packages/aprs/tests/vectors/wx.jsonl @@ -1,66 +1,66 @@ -{"id":"WX-001","title":"Complete positionless report","profile":"core-1.1","source":"APRS101 pp. 63-64","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b09900WRSW","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"software_code":"W","device_code":"RSW"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"software_code":"W","device_code":"RSW","wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-002","title":"Complete weather DTI !","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:!4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-003","title":"Complete weather DTI =","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:=4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-004","title":"Complete weather DTI /","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:/092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-005","title":"Complete weather DTI @","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-006","title":"Temperature -99","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t-99","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":-99,"temperature_c":-72.777777777778}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":-99,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-007","title":"Temperature -07","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t-07","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":-7,"temperature_c":-21.666666666667}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":-7,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-008","title":"Temperature 000","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":0,"temperature_c":-17.777777777778}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":0,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-009","title":"Temperature 032","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t032","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":32,"temperature_c":0.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-010","title":"Temperature 077","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":77,"temperature_c":25.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-011","title":"Temperature 999","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t999","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":999,"temperature_c":537.222222222222}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":999,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-012","title":"Humidity '00'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h00","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":100}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-013","title":"Humidity '01'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h01","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":1}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":1,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-014","title":"Humidity '99'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h99","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":99}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":99,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-015","title":"Humidity '..'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h..","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-016","title":"Humidity ' '","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-017","title":"Missing c via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c...s004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":null,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-018","title":"Missing c via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c s004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":null,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-019","title":"Missing s via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s...g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":null,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-020","title":"Missing s via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":null,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-021","title":"Missing g via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g...t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":null,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-022","title":"Missing g via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":null,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-023","title":"Missing t via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t...r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":null,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-024","title":"Missing t via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":null,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-025","title":"Missing r via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r...p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":null,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":null,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-026","title":"Missing r via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":null,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":null,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-027","title":"Missing p via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p...P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":null,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":null,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-028","title":"Missing p via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":null,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":null,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-029","title":"Missing P via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P...h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":null,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":null,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-030","title":"Missing P via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":null,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":null,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-031","title":"Missing h via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h..b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":null,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-032","title":"Missing h via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":null,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-033","title":"Missing b via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b.....","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":null}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-034","title":"Missing b via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":null}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-035","title":"Optional field [('L', '000')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077L000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":0,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-036","title":"Optional field [('L', '999')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077L999","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":999}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":999,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-037","title":"Optional field [('l', '000')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077l000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":1000}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":1000,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-038","title":"Optional field [('l', '123')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077l123","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":1123}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":1123,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-039","title":"Optional field [('l', '999')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077l999","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":1999}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":1999,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-040","title":"Optional field [('#', '456')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077#456","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_counter_raw":456}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"rain_counter":{"value":456,"unit":"count"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-041","title":"Snow in complete weather 001","profile":"disputed-units","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t032s001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":32,"temperature_c":0.0,"snow_24h_inches":1,"snow_24h_mm":25.4,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Here lowercase s is snowfall. Positionless s is wind speed. The addendum inconsistently prints uppercase S in some snow examples; see ambiguity register.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"},"snow_24h":{"value":1,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.snow_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-042","title":"Snow in complete weather 1.5","profile":"disputed-units","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t032s1.5","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":32,"temperature_c":0.0,"snow_24h_inches":1.5,"snow_24h_mm":38.1,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Here lowercase s is snowfall. Positionless s is wind speed. The addendum inconsistently prints uppercase S in some snow examples; see ambiguity register.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"},"snow_24h":{"value":1.5,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.snow_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-043","title":"Snow in complete weather 010","profile":"disputed-units","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t032s010","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":32,"temperature_c":0.0,"snow_24h_inches":10,"snow_24h_mm":254.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Here lowercase s is snowfall. Positionless s is wind speed. The addendum inconsistently prints uppercase S in some snow examples; see ambiguity register.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"},"snow_24h":{"value":10,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.snow_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-044","title":"Optional weather order / omission 5","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077b10132h00P012p025r001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"pressure_tenth_hpa":10132,"pressure_hpa":1013.2,"humidity_percent":100,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1013.2,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-045","title":"Optional weather order / omission 1","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077r000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":0,"rain_1h_mm":0.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"rain_1h":{"value":0.0,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.rain_1h_mm","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-046","title":"Optional weather order / omission 0","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-047","title":"Weather symbol /_","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-048","title":"Weather symbol \\_","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N\\07201.75W_220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-049","title":"Weather symbol /W","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75WW220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"W","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"W"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"fields","reason":"Alternate W weather symbol is not decoded as weather.","allowed_actual":{"$.payload.comment":"g005t077","$.payload.extensions.weather":null}}} -{"id":"WX-050","title":"Weather symbol \\W","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N\\07201.75WW220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"W","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"W"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"fields","reason":"Alternate W weather symbol is not decoded as weather.","allowed_actual":{"$.payload.comment":"g005t077","$.payload.extensions.weather":null}}} -{"id":"WX-051","title":"Compressed weather wind belongs to weather","profile":"core-1.1","source":"APRS101 pp. 39,66","packet":"N0CALL>APRS:=/5L!!<*e7_7P[g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"weather":{"wind_direction_deg":88,"wind_speed_knots":36.232012168838,"wind_speed_mps":18.639357371302,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25},"comment":""},"note":"The cs bytes represent wind, not station motion. FAP retains them in its movement fields; do not copy that schema into the semantic assertion.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":"_"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"weather":{"wind_direction":{"value":88,"unit":"degrees"},"wind_speed":{"value":36.232012168838,"unit":"knots"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}}}},"unmapped":["$.compression.type_value","$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: compressed positions"}} -{"id":"WX-052","title":"Weather-bearing object","profile":"disputed-units","source":"APRS101 pp. 58,66","packet":"N0CALL>APRS:;WX-SITE *092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}},"name":"WX-SITE","name_raw":"WX-SITE ","alive":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"WX-SITE","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-053","title":"Storm HC predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/HC/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"hurricane","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"HC","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-054","title":"Storm HC predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/HC/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"hurricane","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"HC","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-055","title":"Storm TS predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TS/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TS","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-056","title":"Storm TS predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/TS/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TS","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-057","title":"Storm TD predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TD/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-depression","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TD","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-058","title":"Storm TD predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/TD/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-depression","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TD","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-059","title":"Storm without optional whole-gale radius","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TS/060^080/0990>000&030","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":false,"sustained_wind_knots":60,"peak_gust_knots":80,"central_pressure_hpa":990,"hurricane_radius_nm":0,"tropical_storm_radius_nm":30}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TS","predicted":false,"sustained_wind_knots":60,"peak_gust_knots":80,"central_pressure_hpa":990,"hurricane_radius_nm":0,"tropical_storm_radius_nm":30}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-060","title":"Unavailable complete-weather wind '000/000'","profile":"disputed-zero","source":"APRS101 p.27; A11 WX","packet":"N0CALL>APRS:!4903.50N/07201.75W_000/000g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"wind_raw":"000/000","wind_direction_deg":null,"wind_speed_raw":null,"gust_mph":null,"temperature_f":null}},"note":"The PDF permits 000/000 as unknown; receivers also use numeric zero for measured calm. Do not collapse missing markers into measured calm. Select a policy for the all-zero pair.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":null,"unit":"degrees"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"wind_speed":{"value":null,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.wind_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-061","title":"Unavailable complete-weather wind '.../...'","profile":"core-1.1","source":"APRS101 p.27; A11 WX","packet":"N0CALL>APRS:!4903.50N/07201.75W_.../...g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"wind_raw":".../...","wind_direction_deg":null,"wind_speed_raw":null,"gust_mph":null,"temperature_f":null}},"note":"The PDF permits 000/000 as unknown; receivers also use numeric zero for measured calm. Do not collapse missing markers into measured calm. Select a policy for the all-zero pair.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":null,"unit":"degrees"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"wind_speed":{"value":null,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.wind_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-062","title":"Unavailable complete-weather wind ' / '","profile":"core-1.1","source":"APRS101 p.27; A11 WX","packet":"N0CALL>APRS:!4903.50N/07201.75W_ / g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"wind_raw":" / ","wind_direction_deg":null,"wind_speed_raw":null,"gust_mph":null,"temperature_f":null}},"note":"The PDF permits 000/000 as unknown; receivers also use numeric zero for measured calm. Do not collapse missing markers into measured calm. Select a policy for the all-zero pair.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":null,"unit":"degrees"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"wind_speed":{"value":null,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.wind_raw"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: positioned weather report"}} -{"id":"WX-063","title":"Linked water-gauge field F20.1","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077F20.1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"F","raw":"20.1","value":20.1,"unit":"ft","meters":6.12648,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.water_height.reference_datum","$.weather.water_height.unit","$.weather.water_height.value","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-064","title":"Linked water-gauge field F-1.2","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077F-1.2","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"F","raw":"-1.2","value":-1.2,"unit":"ft","meters":-0.36576,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.water_height.reference_datum","$.weather.water_height.unit","$.weather.water_height.value","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-065","title":"Linked water-gauge field f20.1","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077f20.1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"f","raw":"20.1","value":20.1,"unit":"m","meters":20.1,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.water_height.reference_datum","$.weather.water_height.unit","$.weather.water_height.value","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} -{"id":"WX-066","title":"Linked water-gauge field f-1.2","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077f-1.2","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"f","raw":"-1.2","value":-1.2,"unit":"m","meters":-1.2,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.water_height.reference_datum","$.weather.water_height.unit","$.weather.water_height.value","$.weather.wind_speed_mps"],"gap":{"kind":"opaque","reason":"Unimplemented decoding: unsupported information field family"}} +{"id":"WX-001","title":"Complete positionless report","profile":"core-1.1","source":"APRS101 pp. 63-64","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b09900WRSW","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"software_code":"W","device_code":"RSW"}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"software_code":"W","device_code":"RSW","wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-002","title":"Complete weather DTI !","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:!4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"]} +{"id":"WX-003","title":"Complete weather DTI =","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:=4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"]} +{"id":"WX-004","title":"Complete weather DTI /","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:/092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"]} +{"id":"WX-005","title":"Complete weather DTI @","profile":"disputed-units","source":"APRS101 pp. 27, 65-66; FAP weather.go","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Assert raw wind speed and the chosen unit profile. Do not require both physical speeds simultaneously.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"]} +{"id":"WX-006","title":"Temperature -99","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t-99","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":-99,"temperature_c":-72.777777777778}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":-99,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-007","title":"Temperature -07","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t-07","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":-7,"temperature_c":-21.666666666667}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":-7,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-008","title":"Temperature 000","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":0,"temperature_c":-17.777777777778}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":0,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-009","title":"Temperature 032","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t032","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":32,"temperature_c":0.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-010","title":"Temperature 077","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":77,"temperature_c":25.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-011","title":"Temperature 999","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c000s000g000t999","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":0,"wind_speed_mph":0,"wind_speed_mps":0.0,"gust_mph":0,"gust_mps":0.0,"temperature_f":999,"temperature_c":537.222222222222}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"mph"},"gust":{"value":0,"unit":"mph"},"temperature":{"value":999,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-012","title":"Humidity '00'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h00","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":100}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-013","title":"Humidity '01'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h01","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":1}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":1,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-014","title":"Humidity '99'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h99","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":99}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":99,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-015","title":"Humidity '..'","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h..","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-016","title":"Humidity ' '","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077h ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"humidity_percent":null}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-017","title":"Missing c via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c...s004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":null,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-018","title":"Missing c via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c s004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":null,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-019","title":"Missing s via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s...g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":null,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c"]} +{"id":"WX-020","title":"Missing s via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":null,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c"]} +{"id":"WX-021","title":"Missing g via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g...t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":null,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-022","title":"Missing g via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":null,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-023","title":"Missing t via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t...r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":null,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.wind_speed_mps"]} +{"id":"WX-024","title":"Missing t via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":null,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.wind_speed_mps"]} +{"id":"WX-025","title":"Missing r via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r...p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":null,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":null,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-026","title":"Missing r via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":null,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":null,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-027","title":"Missing p via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p...P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":null,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":null,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-028","title":"Missing p via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":null,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":null,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-029","title":"Missing P via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P...h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":null,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":null,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-030","title":"Missing P via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":null,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":null,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-031","title":"Missing h via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h..b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":null,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-032","title":"Missing h via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":null,"pressure_tenth_hpa":9900,"pressure_hpa":990.0}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":null,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-033","title":"Missing b via '.'","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b.....","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":null}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-034","title":"Missing b via ' '","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077r001p025P012h50b ","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":null}},"note":"An unavailable measurement is null, not zero; later fields must still decode.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-035","title":"Optional field [('L', '000')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077L000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":0,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-036","title":"Optional field [('L', '999')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077L999","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":999}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":999,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-037","title":"Optional field [('l', '000')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077l000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":1000}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":1000,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-038","title":"Optional field [('l', '123')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077l123","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":1123}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":1123,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-039","title":"Optional field [('l', '999')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077l999","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"luminosity_w_m2":1999}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"luminosity":{"value":1999,"unit":"W/m2"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-040","title":"Optional field [('#', '456')]","profile":"core-1.1","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:_10090556c220s004g005t077#456","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_counter_raw":456}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"rain_counter":{"value":456,"unit":"count"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-041","title":"Snow in complete weather 001","profile":"disputed-units","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t032s001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":32,"temperature_c":0.0,"snow_24h_inches":1,"snow_24h_mm":25.4,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Here lowercase s is snowfall. Positionless s is wind speed. The addendum inconsistently prints uppercase S in some snow examples; see ambiguity register.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"},"snow_24h":{"value":1,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.snow_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"]} +{"id":"WX-042","title":"Snow in complete weather 1.5","profile":"disputed-units","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t032s1.5","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":32,"temperature_c":0.0,"snow_24h_inches":1.5,"snow_24h_mm":38.1,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Here lowercase s is snowfall. Positionless s is wind speed. The addendum inconsistently prints uppercase S in some snow examples; see ambiguity register.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"},"snow_24h":{"value":1.5,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.snow_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"]} +{"id":"WX-043","title":"Snow in complete weather 010","profile":"disputed-units","source":"APRS101 p. 64; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t032s010","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":32,"temperature_c":0.0,"snow_24h_inches":10,"snow_24h_mm":254.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"note":"Here lowercase s is snowfall. Positionless s is wind speed. The addendum inconsistently prints uppercase S in some snow examples; see ambiguity register.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":32,"unit":"fahrenheit"},"snow_24h":{"value":10,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.snow_24h_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"]} +{"id":"WX-044","title":"Optional weather order / omission 5","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077b10132h00P012p025r001","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"pressure_tenth_hpa":10132,"pressure_hpa":1013.2,"humidity_percent":100,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1013.2,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-045","title":"Optional weather order / omission 1","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077r000","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":0,"rain_1h_mm":0.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"rain_1h":{"value":0.0,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.rain_1h_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-046","title":"Optional weather order / omission 0","profile":"core-1.1","source":"APRS101 p. 64","packet":"N0CALL>APRS:_10090556c220s004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-047","title":"Weather symbol /_","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"]} +{"id":"WX-048","title":"Weather symbol \\_","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N\\07201.75W_220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"]} +{"id":"WX-049","title":"Weather symbol /W","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N/07201.75WW220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"W","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"W"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"]} +{"id":"WX-050","title":"Weather symbol \\W","profile":"disputed-units","source":"APRS101 pp. 62,65; A11 WX","packet":"N0CALL>APRS:@092345z4903.50N\\07201.75WW220/004g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"W","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"W"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"]} +{"id":"WX-051","title":"Compressed weather wind belongs to weather","profile":"core-1.1","source":"APRS101 pp. 39,66","packet":"N0CALL>APRS:=/5L!!<*e7_7P[g005t077","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":true,"format":"compressed","position":{"latitude_deg":49.5,"longitude_deg":-72.750003937773},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"compression":{"csT_raw":"7P[","type_value":58,"fix":"current","nmea_source":"RMC","origin_code":2},"weather":{"wind_direction_deg":88,"wind_speed_knots":36.232012168838,"wind_speed_mps":18.639357371302,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25},"comment":""},"note":"The cs bytes represent wind, not station motion. FAP retains them in its movement fields; do not copy that schema into the semantic assertion.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":49.5,"longitude_deg":-72.750003937773,"symbol":{"table_id":"/","code":"_"},"compression":{"fix":"current","nmea_source":"RMC","origin_code":2,"raw":"7P["},"extensions":{"weather":{"wind_direction":{"value":88,"unit":"degrees"},"wind_speed":{"value":36.232012168838,"unit":"knots"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"}}}}},"unmapped":["$.compression.type_value","$.symbol.overlay","$.symbol.table","$.weather.gust_mps","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-052","title":"Weather-bearing object","profile":"disputed-units","source":"APRS101 pp. 58,66","packet":"N0CALL>APRS:;WX-SITE *092345z4903.50N/07201.75W_220/004g005t077r001p025P012h50b09900","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"weather":{"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_1h_hundredth_in":1,"rain_1h_mm":0.254,"rain_24h_hundredth_in":25,"rain_24h_mm":6.35,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"humidity_percent":50,"pressure_tenth_hpa":9900,"pressure_hpa":990.0,"wind_direction_deg":220,"wind_speed_raw":4,"wind_speed_mps_interpretations":{"APRS101_p27_knots":2.057777777778,"FAP_mph":1.78816}},"name":"WX-SITE","name_raw":"WX-SITE ","alive":true},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"WX-SITE","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"weather":{"wind_direction":{"value":220,"unit":"degrees"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"humidity":{"value":50,"unit":"percent"},"pressure":{"value":990.0,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.25,"unit":"inches"},"rain_since_midnight":{"value":0.12,"unit":"inches"},"wind_speed":{"value":4,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw","$.weather.gust_mps","$.weather.pressure_tenth_hpa","$.weather.rain_1h_mm","$.weather.rain_24h_mm","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps_interpretations.APRS101_p27_knots","$.weather.wind_speed_mps_interpretations.FAP_mph"]} +{"id":"WX-053","title":"Storm HC predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/HC/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"hurricane","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"HC","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"WX-054","title":"Storm HC predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/HC/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"hurricane","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"HC","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"WX-055","title":"Storm TS predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TS/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TS","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"WX-056","title":"Storm TS predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/TS/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TS","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"WX-057","title":"Storm TD predicted=False","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TD/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-depression","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TD","predicted":false,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"WX-058","title":"Storm TD predicted=True","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N/07201.75W@088/036/TD/150^200/0980>090&030%040","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-depression","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TD","predicted":true,"sustained_wind_knots":150,"peak_gust_knots":200,"central_pressure_hpa":980,"hurricane_radius_nm":90,"tropical_storm_radius_nm":30,"whole_gale_radius_nm":40}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"WX-059","title":"Storm without optional whole-gale radius","profile":"core-1.1","source":"APRS101 p. 67","packet":"N0CALL>APRS:;STORM *092345z4903.50N\\07201.75W@088/036/TS/060^080/0990>000&030","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"object","name":"STORM","name_raw":"STORM ","alive":true,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"\\","table":"alternate","code":"@","overlay":null},"comment":"","timestamp":{"raw":"092345z","format":"DHM","zone":"UTC","day":9,"hour":23,"minute":45},"motion":{"course_deg":88,"speed_knots":36,"speed_kmh":66.672},"storm":{"type":"tropical-storm","predicted":false,"sustained_wind_knots":60,"peak_gust_knots":80,"central_pressure_hpa":990,"hurricane_radius_nm":0,"tropical_storm_radius_nm":30}},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"STORM","alive":true,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"\\","code":"@"},"timestamp":{"kind":"dhm_utc","day":9,"hour":23,"minute":45},"extensions":{"motion":{"course_deg":88,"speed_knots":36},"storm":{"kind":"TS","predicted":false,"sustained_wind_knots":60,"peak_gust_knots":80,"central_pressure_hpa":990,"hurricane_radius_nm":0,"tropical_storm_radius_nm":30}}}},"unmapped":["$.motion.speed_kmh","$.name_raw","$.symbol.overlay","$.symbol.table","$.timestamp.raw"]} +{"id":"WX-060","title":"Unavailable complete-weather wind '000/000'","profile":"disputed-zero","source":"APRS101 p.27; A11 WX","packet":"N0CALL>APRS:!4903.50N/07201.75W_000/000g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"wind_raw":"000/000","wind_direction_deg":null,"wind_speed_raw":null,"gust_mph":null,"temperature_f":null}},"note":"The PDF permits 000/000 as unknown; receivers also use numeric zero for measured calm. Do not collapse missing markers into measured calm. Select a policy for the all-zero pair.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":null,"unit":"degrees"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"wind_speed":{"value":null,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.wind_raw"]} +{"id":"WX-061","title":"Unavailable complete-weather wind '.../...'","profile":"core-1.1","source":"APRS101 p.27; A11 WX","packet":"N0CALL>APRS:!4903.50N/07201.75W_.../...g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"wind_raw":".../...","wind_direction_deg":null,"wind_speed_raw":null,"gust_mph":null,"temperature_f":null}},"note":"The PDF permits 000/000 as unknown; receivers also use numeric zero for measured calm. Do not collapse missing markers into measured calm. Select a policy for the all-zero pair.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":null,"unit":"degrees"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"wind_speed":{"value":null,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.wind_raw"]} +{"id":"WX-062","title":"Unavailable complete-weather wind ' / '","profile":"core-1.1","source":"APRS101 p.27; A11 WX","packet":"N0CALL>APRS:!4903.50N/07201.75W_ / g...t...","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"_","overlay":null},"comment":"","weather":{"wind_raw":" / ","wind_direction_deg":null,"wind_speed_raw":null,"gust_mph":null,"temperature_f":null}},"note":"The PDF permits 000/000 as unknown; receivers also use numeric zero for measured calm. Do not collapse missing markers into measured calm. Select a policy for the all-zero pair.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":null,"unit":"degrees"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"wind_speed":{"value":null,"unit":"disputed_knots_or_mph"}}}}},"unmapped":["$.symbol.overlay","$.symbol.table","$.weather.wind_raw"]} +{"id":"WX-063","title":"Linked water-gauge field F20.1","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077F20.1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"F","raw":"20.1","value":20.1,"unit":"ft","meters":6.12648,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"water_height":{"measurement":{"value":20.1,"unit":"feet"},"reference_datum":null}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.wind_speed_mps"]} +{"id":"WX-064","title":"Linked water-gauge field F-1.2","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077F-1.2","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"F","raw":"-1.2","value":-1.2,"unit":"ft","meters":-0.36576,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"water_height":{"measurement":{"value":-1.2,"unit":"feet"},"reference_datum":null}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.wind_speed_mps"]} +{"id":"WX-065","title":"Linked water-gauge field f20.1","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077f20.1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"f","raw":"20.1","value":20.1,"unit":"m","meters":20.1,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"water_height":{"measurement":{"value":20.1,"unit":"meters"},"reference_datum":null}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.wind_speed_mps"]} +{"id":"WX-066","title":"Linked water-gauge field f-1.2","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077f-1.2","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"f","raw":"-1.2","value":-1.2,"unit":"m","meters":-1.2,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"water_height":{"measurement":{"value":-1.2,"unit":"meters"},"reference_datum":null}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.wind_speed_mps"]} From 386b244ff9bd97835148dbe74527811d172c85f2 Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Sat, 17 Oct 2026 14:05:14 +0000 Subject: [PATCH 05/14] Decode PHG and PHGR through the public codec without compatibility rewrites --- packages/aprs/README.md | 8 +- packages/aprs/docs/API_COVERAGE.md | 10 +- packages/aprs/docs/UNRESOLVED_SPEC.md | 17 +- packages/aprs/src/hamkit/aprs/_codec.py | 2 +- .../aprs/src/hamkit/aprs/_compatibility.py | 8 +- packages/aprs/src/hamkit/aprs/_conformance.py | 2 +- packages/aprs/src/hamkit/aprs/_extensions.py | 40 +++- packages/aprs/src/hamkit/aprs/_mic_e.py | 2 +- packages/aprs/tests/generate_vectors.py | 26 ++- packages/aprs/tests/packets/test_corpus.py | 33 ++- packages/aprs/tests/packets/test_phg.py | 188 ++++++++++++++++++ packages/aprs/tests/roundtrip_exceptions.json | 8 - packages/aprs/tests/source_details.py | 50 +++++ packages/aprs/tests/vectors/README.md | 11 +- packages/aprs/tests/vectors/fap.jsonl | 22 +- 15 files changed, 368 insertions(+), 59 deletions(-) create mode 100644 packages/aprs/tests/packets/test_phg.py diff --git a/packages/aprs/README.md b/packages/aprs/README.md index 8f9b8eb..fe06dea 100644 --- a/packages/aprs/README.md +++ b/packages/aprs/README.md @@ -205,7 +205,13 @@ Output: Course/speed (`088/036`) is decoded into `extensions.motion`, and `comment` holds the text after it, including its leading space. PHG, RNG, DFS, DF -bearing and `/A=` altitude are decoded the same way. Extension-shaped text with +bearing and `/A=` altitude also decode into structured extensions. PHG comments +consume an optional `/` separator and trim surrounding ASCII whitespace. The +[PHGR extension](https://www.aprs.org/aprs12/probes.txt) requires a rate character +(`0`–`9`, `A`–`Z`, representing 0–35 reports per hour) followed by `/`; the public +codec consumes that delimiter and emits it on serialization. A rate without its +slash stays in the comment. These PHG conventions do not strip slashes or +whitespace from ordinary messages or other position comments. Extension-shaped text with invalid values stays in `comment` with a diagnostic. DAO precision, base91 telemetry, weather, storm, area and signpost extensions also have structured decoders and encoders. diff --git a/packages/aprs/docs/API_COVERAGE.md b/packages/aprs/docs/API_COVERAGE.md index 4d98db3..a4ac9f8 100644 --- a/packages/aprs/docs/API_COVERAGE.md +++ b/packages/aprs/docs/API_COVERAGE.md @@ -91,9 +91,13 @@ including partial values recovered before a rejection. All original packet bytes, semantic expectations, options and provenance have a frozen integrity hash tied to PR #4's head commit. -Every vector also has an encoding test. 1,294 occurrences encode and stabilize +Every vector also has an encoding test. 1,296 occurrences encode and stabilize through semantic decode/encode round trips with all raw evidence removed. The -other 267 have explicit refusal records: 181 malformed public packets and 86 +other 265 have explicit refusal records: 181 malformed public packets and 84 violations of the existing transmit-conformance rules. Those refusal tests assert the reason; they are not broad exception catches or skipped tests. Three bad -NMEA checksums are repaired as part of the 1,294 successful encodings. +NMEA checksums are repaired as part of the 1,296 successful encodings. + +PHG/PHGR vectors exercise the public API directly, without compatibility +decoding. The PHGR rate character and required slash, ordinary PHG separators, +and PHG comment whitespace are handled by the shared public decoder/encoder. diff --git a/packages/aprs/docs/UNRESOLVED_SPEC.md b/packages/aprs/docs/UNRESOLVED_SPEC.md index a237cfc..3d33727 100644 --- a/packages/aprs/docs/UNRESOLVED_SPEC.md +++ b/packages/aprs/docs/UNRESOLVED_SPEC.md @@ -142,18 +142,27 @@ and delimiter accounting before implementing a wire codec. **Authority:** [APRS101 pp28–30](https://www.aprs.org/doc/APRS101.PDF#page=38), [original protocol notes](https://www.aprs.org/APRS-docs/PROTOCOL.TXT), [DF notes](https://www.aprs.org/APRS-docs/DF.TXT), and -[PHG display guidance](https://www.aprs.org/symbols/PHGmobile.txt). +[PHG display guidance](https://www.aprs.org/symbols/PHGmobile.txt), and the +[PHGR proposal dated 26 February 2003](https://www.aprs.org/aprs12/probes.txt). **Current behavior:** code ranges and positive accuracy bounds are checked. The manual flag, bearing range and PHG radii are computed properties, so they cannot disagree with the codes. A single Q-to-accuracy or usability mapping is not imposed: the original notes omit Q=6 and differ from APRS101 at low Q values. `Bearing.usable` and accuracy remain reported -interpretations, not certified derivations. PHG rate-per-hour uses the explicit pinned FAP compatibility layout. Display half-radius is a documented display choice, +interpretations, not certified derivations. PHGR uses the documented +`PHGabcdr/` layout: `r` is `0`–`9` or `A`–`Z` (0–35 reports per hour), with zero +denoting an unscheduled transmission. Its slash is required and consumed by the +public decoder. The encoder emits the rate and slash before other extensions. +The older PHG form accepts an optional slash before the comment; surrounding +ASCII whitespace is trimmed for PHG comments. Other position comments and message +text do not acquire this normalization. This follows the PHGR note's delimiter +convention, not a universal rule in APRS101 (p20 says there is no separator unless +otherwise specified). Display half-radius is a documented display choice, not an independently transmitted observation. -**What resolves it:** identify a versioned DF mapping and a primary specification -for PHG rate. Do not silently combine conflicting tables or treat UI guidance as +**What resolves it:** identify a versioned DF mapping. Do not silently combine +conflicting tables or treat UI guidance as another on-air field. ## NWS, historical beacons and vendor weather diff --git a/packages/aprs/src/hamkit/aprs/_codec.py b/packages/aprs/src/hamkit/aprs/_codec.py index 6fa3739..fcb2f4d 100644 --- a/packages/aprs/src/hamkit/aprs/_codec.py +++ b/packages/aprs/src/hamkit/aprs/_codec.py @@ -653,7 +653,7 @@ def _encode_payload( return ( raw + position_wire - + _extensions.write(extensions, symbol) + + _extensions.write(extensions, symbol, payload.comment.encode("utf-8")) + payload.comment.encode("utf-8") ) if isinstance(payload, (Message, Acknowledgment)): diff --git a/packages/aprs/src/hamkit/aprs/_compatibility.py b/packages/aprs/src/hamkit/aprs/_compatibility.py index f7eb623..72036e5 100644 --- a/packages/aprs/src/hamkit/aprs/_compatibility.py +++ b/packages/aprs/src/hamkit/aprs/_compatibility.py @@ -312,16 +312,10 @@ def view( p["extensions"]["telemetry"]["sequence"] = 0 if p.get("type") == "telemetry": p["comment"] = "" - if "comment" in p: + if "comment" in p and not p.get("extensions", {}).get("phg"): p["comment"] = p["comment"].strip() - if p.get("extensions", {}).get("phg"): - p["comment"] = re.sub(r"^[A-Za-z]?/", "", p["comment"]).strip() if p.get("type") == "object": p["name"] = p["name"].rstrip() - if p.get("extensions", {}).get("telemetry"): - t = p["extensions"]["telemetry"] - if t.get("encoding") == "base91_comment": - t["analog"] += [None] * (5 - len(t["analog"])) compression = p.get("compression") if compression: motion = p.get("extensions", {}).get("motion") diff --git a/packages/aprs/src/hamkit/aprs/_conformance.py b/packages/aprs/src/hamkit/aprs/_conformance.py index c032a04..38828ec 100644 --- a/packages/aprs/src/hamkit/aprs/_conformance.py +++ b/packages/aprs/src/hamkit/aprs/_conformance.py @@ -346,7 +346,7 @@ def _position(v: Position, profile: EnvelopeProfile) -> Iterator[Finding]: from ._position_codec import compressed_bytes _, extensions = compressed_bytes(v) - prefix = _extensions.write(extensions, v.symbol) + prefix = _extensions.write(extensions, v.symbol, v.comment.encode("utf-8")) except CodecNotImplementedError: return except _extensions.Unrepresentable as exc: diff --git a/packages/aprs/src/hamkit/aprs/_extensions.py b/packages/aprs/src/hamkit/aprs/_extensions.py index 725a1c4..de97f08 100644 --- a/packages/aprs/src/hamkit/aprs/_extensions.py +++ b/packages/aprs/src/hamkit/aprs/_extensions.py @@ -33,6 +33,7 @@ _COURSE_SPEED = re.compile(_FIELD + rb"/" + _FIELD) _BEARING = re.compile(rb"/(\d{3})/(\d)(\d)(\d)") _PHG = re.compile(rb"PHG(\d)([0-9:;])(\d)([0-8])") +_PHGR_RATES = b"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" _RNG = re.compile(rb"RNG(\d{4})") _DFS = re.compile(rb"DFS(\d)([0-9:;])(\d)([0-8])") _ALTITUDE = re.compile(rb"/A=(-\d{5}|\d{6})") @@ -136,8 +137,16 @@ def read(tail: bytes, symbol: Symbol) -> tuple[Extensions, bytes]: raw=match[0][3:], ) tail = tail[7:] - if re.match(rb"[0-9](?:/|$)", tail): - found["phg"] = replace(found["phg"], rate_per_hour=int(tail[:1])) + # PHGR (aprs.org/aprs12/probes.txt) requires both the rate character + # and its delimiter. Without '/', a digit/letter belongs to the comment. + if re.match(rb"[0-9A-Z]/", tail): + found["phg"] = replace( + found["phg"], rate_per_hour=_PHGR_RATES.index(tail[0]) + ) + tail = tail[2:] + elif tail.startswith(b"/") and not _ALTITUDE.match(tail): + # The older PHG form also commonly separates its comment with '/'. + # Consume one delimiter, but leave /A= altitude for the decoder below. tail = tail[1:] elif match := _RNG.match(tail): found["range"] = Range(int(match[1]), raw=match[0]) @@ -222,6 +231,10 @@ def read(tail: bytes, symbol: Symbol) -> tuple[Extensions, bytes]: Measurement(feet, "feet", raw=match[1]), "feet_extension" ) tail = tail[: match.start()] + tail[match.end() :] + if "phg" in found: + # PHG/PHGR's presentation convention ignores surrounding whitespace. + # This is not a general rule for message text or other position comments. + tail = tail.strip() return Extensions(**found), tail @@ -293,7 +306,9 @@ def _motion_bytes(m: Motion) -> bytes: return b"%03d/%03d" % (course, speed) -def _write_primary(extensions: Extensions, symbol: Symbol) -> bytes: +def _write_primary( + extensions: Extensions, symbol: Symbol, comment: bytes = b"" +) -> bytes: """The bytes read() would split back into these extensions.""" e = extensions for name in ("dao", "area", "signpost", "weather", "storm", "telemetry"): @@ -348,6 +363,17 @@ def _write_primary(extensions: Extensions, symbol: Symbol) -> bytes: ) raw += b"%d" % _code("$.extensions.phg.gain_dbi", p.gain_dbi, 0, 9) raw += _directivity_code("$.extensions.phg.directivity_deg", p.directivity_deg) + if p.rate_per_hour is not None: + if not 0 <= p.rate_per_hour < len(_PHGR_RATES): + raise Unrepresentable( + "$.extensions.phg.rate_per_hour", "requires 0..35 (0-9 or A-Z)" + ) + # Terminate PHGR before altitude or other extensions, too. + raw += _PHGR_RATES[p.rate_per_hour : p.rate_per_hour + 1] + b"/" + elif comment.startswith(b"/") or re.match(rb"[0-9A-Z]/", comment): + # The optional separator protects comments that would otherwise + # lose their leading slash or be read as a PHGR rate. + raw += b"/" elif e.range is not None: raw += b"RNG%04d" % _rounded("$.extensions.range.miles", e.range.miles, 0, 9999) elif e.signal is not None: @@ -372,7 +398,7 @@ def _write_primary(extensions: Extensions, symbol: Symbol) -> bytes: return raw -def write(extensions: Extensions, symbol: Symbol) -> bytes: +def write(extensions: Extensions, symbol: Symbol, comment: bytes = b"") -> bytes: e = extensions extra = b"" if e.weather: @@ -478,8 +504,4 @@ def write(extensions: Extensions, symbol: Symbol) -> bytes: primary = replace( e, dao=None, area=None, signpost=None, weather=None, storm=None, telemetry=None ) - if primary.phg and primary.phg.rate_per_hour is not None: - rate = primary.phg.rate_per_hour - primary = replace(primary, phg=replace(primary.phg, rate_per_hour=None)) - return _write_primary(primary, symbol) + str(rate).encode() + extra - return _write_primary(primary, symbol) + extra + return _write_primary(primary, symbol, comment) + extra diff --git a/packages/aprs/src/hamkit/aprs/_mic_e.py b/packages/aprs/src/hamkit/aprs/_mic_e.py index b740733..a6c6333 100644 --- a/packages/aprs/src/hamkit/aprs/_mic_e.py +++ b/packages/aprs/src/hamkit/aprs/_mic_e.py @@ -249,6 +249,6 @@ def write(p: MicE, header: Header) -> bytes: return ( (b"`" if p.fix == "current" else b"'") + body - + _extensions.write(e, p.symbol) + + _extensions.write(e, p.symbol, p.comment.encode()) + p.comment.encode() ) diff --git a/packages/aprs/tests/generate_vectors.py b/packages/aprs/tests/generate_vectors.py index c7bbe36..1579aee 100644 --- a/packages/aprs/tests/generate_vectors.py +++ b/packages/aprs/tests/generate_vectors.py @@ -587,14 +587,22 @@ def fap_projection(e: JSON, packet: str) -> JSON: } if f.get("TelemetryData") is not None: t = f["TelemetryData"] - mapped = {"sequence": t["Seq"], "analog": t["Vals"]} + analog = list(t["Vals"]) + if payload.get("type") != "telemetry" and re.search( + r"\|(?:[\x21-\x7b]{2}){2,7}\|", packet.partition(":")[2] + ): + # FAP pads omitted base91 channels to five null-capable slots; + # the public schema stores only the transmitted analog channels. + while analog and analog[-1] is None: + analog.pop() + mapped = {"sequence": t["Seq"], "analog": analog} if t["Bits"]: mapped["digital"] = [x == "1" for x in t["Bits"]] if payload.get("type") == "telemetry": payload.update(mapped) else: payload.setdefault("extensions", {})["telemetry"] = mapped - if f.get("PHG") and re.fullmatch(r"[0-9][0-9:;][0-9][0-8][0-9]?", f["PHG"]): + if f.get("PHG") and re.fullmatch(r"[0-9][0-9:;][0-9][0-8][0-9A-Z]?", f["PHG"]): code = f["PHG"] phg: JSON = { "power_w": int(code[0]) ** 2, @@ -603,7 +611,7 @@ def fap_projection(e: JSON, packet: str) -> JSON: "directivity_deg": int(code[3]) * 45 if code[3] != "0" else None, } if len(code) == 5: - phg["rate_per_hour"] = int(code[4]) + phg["rate_per_hour"] = int(code[4], 36) payload.setdefault("extensions", {})["phg"] = phg if f.get("Altitude") is not None and f.get("Format") in ( "uncompressed", @@ -649,6 +657,18 @@ def fap_projection(e: JSON, packet: str) -> JSON: # The snapshot does not capture individual NMEA sentence fields; do not # invent them from FAP's flattened station fix. Assert the public family. result["payload"] = {"type": "nmea"} + if payload.get("extensions", {}).get("phg") and payload.get("type") == "position": + body = packet.partition(":")[2] + prefix, marker, _ = body.partition("!") + if marker and prefix and not body.startswith(("!", "=", "/", "@")): + # FAP flattens legacy beacon positions; our public model preserves + # both the beacon prefix and the nested decoded position. + payload.pop("type") + result["payload"] = { + "type": "legacy_position", + "prefix": prefix, + "position": payload, + } return result diff --git a/packages/aprs/tests/packets/test_corpus.py b/packages/aprs/tests/packets/test_corpus.py index 7a94a2f..6b4cb00 100644 --- a/packages/aprs/tests/packets/test_corpus.py +++ b/packages/aprs/tests/packets/test_corpus.py @@ -62,11 +62,25 @@ def load() -> list[Any]: return [pytest.param(row, id=row["id"]) for row in rows()] -def check(row: dict[str, Any]) -> None: - from hamkit.aprs._compatibility import view +def public_phg_row(row: dict[str, Any]) -> bool: + """PHG/PHGR expectations must be met by the public API without rewrites.""" + payload = row.get("expected", {}).get("payload", {}) + if payload.get("type") == "legacy_position": + payload = payload["position"] + return bool(payload.get("extensions", {}).get("phg")) + +def check(row: dict[str, Any]) -> None: raw = row["packet"].encode("latin-1") - actual, rejected = view(raw, row["profile"], row.get("options")) + if public_phg_row(row): + packet = aprs.parse_packet(raw) + assert isinstance(packet, aprs.Packet) + actual = aprs.to_json_dict(packet, include_defaults=True) + rejected = any(d.code == "nonconforming" for d in packet.diagnostics) + else: + from hamkit.aprs._compatibility import view + + actual, rejected = view(raw, row["profile"], row.get("options")) assert actual["original_wire"] == row["packet"], "original bytes changed" assert not row.get("gap") and not row.get("unresolved") errors = differences(actual, row["expected"]) @@ -77,11 +91,14 @@ def check(row: dict[str, Any]) -> None: errors.extend(check_rejection(row)) if row.get("unmapped"): - from source_details import check_core, check_fap - - errors.extend( - (check_fap if row["profile"] == "compatibility-fap" else check_core)(row) - ) + from source_details import check_core, check_fap, check_public_phg + + if row["profile"] != "compatibility-fap": + errors.extend(check_core(row)) + elif public_phg_row(row): + errors.extend(check_public_phg(row, packet)) + else: + errors.extend(check_fap(row)) if row.get("sequence"): from receiver import Receiver diff --git a/packages/aprs/tests/packets/test_phg.py b/packages/aprs/tests/packets/test_phg.py new file mode 100644 index 0000000..1a14d50 --- /dev/null +++ b/packages/aprs/tests/packets/test_phg.py @@ -0,0 +1,188 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""PHG and PHGR use the public codec, including their comment boundaries.""" + +from dataclasses import replace + +import pytest +from packets.test_corpus import check, public_phg_row, rows +from packets.test_roundtrip_corpus import without_evidence + +from hamkit import aprs as a + +PREFIX = b"!4903.50N/07201.75W#" +PHG_ROWS = [row for row in rows() if public_phg_row(row)] + + +@pytest.mark.parametrize("row", PHG_ROWS, ids=lambda row: row["id"]) +def test_phg_vectors_without_compatibility(monkeypatch, row): + from hamkit.aprs import _compatibility + + def forbidden(*args, **kwargs): + raise AssertionError("PHG vectors must not use historical decoders") + + for name in ("view", "facts", "rejected_facts"): + monkeypatch.setattr(_compatibility, name, forbidden) + check(row) + + +def test_related_phg_vectors_are_covered(): + assert {row["id"] for row in PHG_ROWS if row["id"].startswith("FAP-")} == { + "FAP-001", + "FAP-006", + "FAP-028", + "FAP-405", + "FAP-415", + "FAP-458", + "FAP-459", + "FAP-460", + "FAP-461", + "FAP-464", + "FAP-466", + "FAP-467", + "FAP-468", + "FAP-499", + "FAP-501", + } + + +@pytest.mark.parametrize("rate", range(36)) +def test_phgr_rate_alphabet_and_required_separator(rate): + code = b"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[rate : rate + 1] + wire = PREFIX + b"PHG2130" + code + b"/Radio" + value = a.parse_payload(wire) + assert isinstance(value, a.Position) + assert value.extensions.phg.rate_per_hour == rate + assert value.comment == "Radio" + assert a.serialize_payload(without_evidence(value)) == wire + + +@pytest.mark.parametrize( + "comment", [b"6", b"6Radio", b"A", b"ZRadio", b"146.520MHz", b"a/hello"] +) +def test_rate_without_required_slash_is_comment(comment): + value = a.parse_payload(PREFIX + b"PHG2130" + comment) + assert isinstance(value, a.Position) + assert value.extensions.phg.rate_per_hour is None + assert value.comment == comment.decode() + canonical = a.serialize_payload(without_evidence(value)) + assert canonical == PREFIX + b"PHG2130" + comment + assert a.parse_payload(canonical) == value + + +@pytest.mark.parametrize("rate", [None, 6, 35]) +@pytest.mark.parametrize( + "comment", + [ + "", + "/hello", + "//hello", + "6/hello", + "Z/hello", + "hello/world", + "A=001234", + "A=-00123", + ], +) +def test_composed_comments_preserve_slashes(rate, comment): + value = a.Position( + 1, + 2, + a.Symbol("/", "#"), + comment=comment, + extensions=a.Extensions(phg=a.PHG(4, 20, 3, rate_per_hour=rate)), + ) + wire = a.serialize_payload(value) + assert a.parse_payload(wire) == value + + +@pytest.mark.parametrize( + "tail,rate,comment", + [ + (b"PHG2130/hello", None, "hello"), + (b"PHG2130//hello", None, "/hello"), + (b"PHG21306//hello", 6, "/hello"), + (b"PHG2130 hello \t ", None, "hello"), + (b"PHG21306/ hello ", 6, "hello"), + (b"PHG2130 /hello", None, "/hello"), + ], +) +def test_phg_comment_delimiters(tail, rate, comment): + raw = b"N0CALL>APRS:" + PREFIX + tail + packet = a.parse_packet(raw) + assert isinstance(packet, a.Packet) + assert packet.original_wire == raw + assert packet.payload.extensions.phg.rate_per_hour == rate + assert packet.payload.comment == comment + assert a.parse_packet(a.serialize_packet(without_evidence(packet))) == packet + + +@pytest.mark.parametrize("rate", [None, 6, 35]) +def test_phg_rate_precedes_altitude_dao_and_telemetry(rate): + value = a.Position( + 1, + 2, + a.Symbol("/", "#"), + comment="Radio", + extensions=a.Extensions( + phg=a.PHG(4, 20, 3, rate_per_hour=rate), + altitude=a.Altitude(a.Measurement(1234, "feet"), "feet_extension"), + dao=a.DAO( + "W", latitude_precision=0, longitude_precision=0, encoding="decimal" + ), + telemetry=a.Telemetry((1, 2), sequence=3, encoding="base91_comment"), + ), + ) + wire = a.serialize_payload(value) + rate_code = ( + b"" + if rate is None + else b"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[rate : rate + 1] + ) + separator = b"" if rate is None else b"/" + assert b"PHG2130" + rate_code + separator + b"/A=001234" in wire + assert a.parse_payload(wire) == value + + +def test_phg_does_not_consume_altitude_as_comment_delimiter(): + value = a.parse_payload(PREFIX + b"PHG2130/A=001234Radio") + assert isinstance(value, a.Position) + assert value.extensions.phg.rate_per_hour is None + assert value.extensions.altitude.measurement.value == 1234 + assert value.comment == "Radio" + assert a.parse_payload(a.serialize_payload(without_evidence(value))) == value + + +@pytest.mark.parametrize( + "payload,field,expected", + [ + (b":DEST :/Meet at A/B", "text", "/Meet at A/B"), + (b":DEST :PHG21306/hello", "text", "PHG21306/hello"), + (b">/hello", "text", "/hello"), + (PREFIX + b"/hello", "comment", "/hello"), + (PREFIX + b" /hello ", "comment", " /hello "), + (PREFIX + b"088/036/hello", "comment", "/hello"), + ], +) +def test_other_text_does_not_lose_slashes(payload, field, expected): + value = a.parse_payload(payload) + assert getattr(value, field) == expected + assert a.parse_payload(a.serialize_payload(without_evidence(value))) == value + + +@pytest.mark.parametrize("rate", [36, 100]) +def test_unencodable_rate_is_reported_without_changing_public_model(rate): + value = a.Position( + 1, + 2, + a.Symbol("/", "#"), + extensions=a.Extensions(phg=a.PHG(4, 20, 3, rate_per_hour=rate)), + ) + with pytest.raises(a.ConformanceError, match="rate_per_hour"): + a.serialize_payload(value) + + +def test_phg_comment_normalization_is_not_silent_on_transmit(): + value = a.parse_payload(PREFIX + b"PHG2130/Radio") + with pytest.raises(a.ConformanceError, match="comment"): + a.serialize_payload(replace(value, comment=" Radio ")) diff --git a/packages/aprs/tests/roundtrip_exceptions.json b/packages/aprs/tests/roundtrip_exceptions.json index 7b25cbd..f21222b 100644 --- a/packages/aprs/tests/roundtrip_exceptions.json +++ b/packages/aprs/tests/roundtrip_exceptions.json @@ -1083,10 +1083,6 @@ "kind": "malformed", "reasons": ["invalid compressed symbol table"] }, - "FAP-415": { - "kind": "conformance", - "reasons": ["would be read back as a data extension"] - }, "FAP-419": { "kind": "conformance", "reasons": ["extensions and comment exceed 43 bytes"] @@ -1172,10 +1168,6 @@ "kind": "malformed", "reasons": ["longitude cannot be more ambiguous than latitude"] }, - "FAP-466": { - "kind": "conformance", - "reasons": ["text contains control characters"] - }, "FAP-469": { "kind": "conformance", "reasons": ["begins with an invalid data extension"] diff --git a/packages/aprs/tests/source_details.py b/packages/aprs/tests/source_details.py index f7df9a9..1061791 100644 --- a/packages/aprs/tests/source_details.py +++ b/packages/aprs/tests/source_details.py @@ -363,6 +363,56 @@ def check_core(row): return errors +def check_public_phg(row, packet): + """Express source fields from public models, without a historical decoder.""" + from packets.test_corpus import differences + + p = packet.payload + if isinstance(p, a.LegacyPosition): + p = p.position + assert isinstance(p, a.Position) and p.extensions.phg is not None + phg = p.extensions.phg + assert phg.raw is not None + code = phg.raw.decode("ascii") + if phg.rate_per_hour is not None: + code += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[phg.rate_per_hour] + facts = { + "Capabilities": None, + "ChecksumOK": None, + "DaoDatumByte": None, + "GPSFixStatus": None, + "MBits": "", + "MiceMangled": False, + "ObjectName": "", + "PosResolution": (18.52, 185.2, 1852, 18520, 111120)[p.ambiguity], + "RawTimestamp": "", + "Warnings": None, + "PHG": code, + } + # Fail if future PHG rows need additional source-field derivations. + assert p.extensions.dao is None and p.compression is None and p.timestamp is None + actual = {"fap_fields": facts} + paths = [*row.get("unmapped", []), "$.fap_fields.PHG"] + errors = [] + for path in paths: + errors.extend( + differences(at(actual, path), at(row["source_expected"], path), path) + ) + if p.extensions.telemetry is not None: + # FAP has five slots even when the wire omits trailing channels. Assert + # those source nulls as well as the variable-length public JSON array. + analog = list(p.extensions.telemetry.analog) + analog += [None] * (5 - len(analog)) + errors.extend( + differences( + analog, + row["source_expected"]["fap_fields"]["TelemetryData"]["Vals"], + "$.fap_fields.TelemetryData.Vals", + ) + ) + return errors + + def check_fap(row): from packets.test_corpus import differences diff --git a/packages/aprs/tests/vectors/README.md b/packages/aprs/tests/vectors/README.md index 4d93ee1..b2687db 100644 --- a/packages/aprs/tests/vectors/README.md +++ b/packages/aprs/tests/vectors/README.md @@ -32,12 +32,19 @@ receiver policies without changing the public API or consulting expected values. The canonical codec retains precise wire data; the adapter selects historical comment trimming, unit conventions, acceptance and warning policies. +All 29 PHG/PHGR projections (including 15 FAP vectors) instead exercise the public +API directly. Regression tests disable compatibility functions while checking +them. Their comment separators, whitespace, and numeric/alphabetic rates are +handled by the public codec. FAP's legacy-position wrapper and omitted trailing +telemetry channels are expressed using the existing JSON schema; original source +values remain unchanged and are also checked. + Sequence rows contain `state_expected` and run all preceding steps through a test receiver implemented using public packet models. State is not added to the codec. All 1,561 rows pass without xfails. Every row also participates in encoding tests: -1,294 semantic round trips, with checksum repair for three intentionally bad NMEA -checksums, and 267 explicit malformed/conformance refusals. The reviewed +1,296 semantic round trips, with checksum repair for three intentionally bad NMEA +checksums, and 265 explicit malformed/conformance refusals. The reviewed `../roundtrip_exceptions.json` records exact reasons. Adding a new unexpected refusal or silently fixing a recorded one fails the test; this file is not regenerated by `generate_vectors.py`. diff --git a/packages/aprs/tests/vectors/fap.jsonl b/packages/aprs/tests/vectors/fap.jsonl index 8128fdc..fa6ec94 100644 --- a/packages/aprs/tests/vectors/fap.jsonl +++ b/packages/aprs/tests/vectors/fap.jsonl @@ -25,7 +25,7 @@ {"id":"FAP-025","title":"TestBeacon/all_beacon_destinations/BEACON","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>BEACON:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"BEACON","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"BEACON","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-026","title":"TestBeacon/all_beacon_destinations/UIDIGI","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>UIDIGI:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"UIDIGI","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"UIDIGI","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-027","title":"TestBeacon/all_beacon_destinations/CQ","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>CQ:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"CQ","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"CQ","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-028","title":"TestBeacon/beacon_with_position_fallback","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L48","packet":"OH2RDU>BEACON:testing!6028.51N/02505.68E#PHG2360","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"BEACON","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"2360","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":4,"height_haat_ft":80,"gain_dbi":6,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-028","title":"TestBeacon/beacon_with_position_fallback","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L48","packet":"OH2RDU>BEACON:testing!6028.51N/02505.68E#PHG2360","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"BEACON","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"2360","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"BEACON","path":[]},"payload":{"type":"legacy_position","prefix":"testing","position":{"comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":4,"height_haat_ft":80,"gain_dbi":6,"directivity_deg":null}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-029","title":"TestCompressedNonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L15","packet":"OH2KKU-15>APRS,TCPIP*,qAC,FOURTH:!I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU-15","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.052010101699544,"Longitude":24.504507437140035,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"I","SymbolCode":"&","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":8.10520393696385,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"igate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU-15","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"igate testing","messaging":false,"latitude_deg":60.052010101699544,"longitude_deg":24.504507437140035,"symbol":{"table_id":"I","code":"&"},"extensions":{"range":{"miles":5.036340233637961}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-030","title":"TestCompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L107","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-031","title":"TestCompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L196","packet":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol ","outcome":"reject","source_expected":{"fap_header":{"source":"KJ4ERJ-AL","destination":"APWW05","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: comp_short: compressed position too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"original_wire":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol "},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -402,7 +402,7 @@ {"id":"FAP-402","title":"TestObjectKilled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L117","packet":"N0CALL-1>APRS:;LEADER _092345z4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":false,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER","alive":false,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-403","title":"TestObjectErrors/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L153","packet":"N0CALL-1>APRS:;SHORT","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_short: object packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:;SHORT"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-404","title":"TestObjectErrors/invalid_alive/killed_indicator","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L153","packet":"N0CALL-1>APRS:;LEADER X092345z4903.50N/07201.75W>","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_inv: invalid object alive/killed indicator: X"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:;LEADER X092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-405","title":"TestFallbackUncompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L15","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:hoponassualku!6028.51S/02505.68W#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-405","title":"TestFallbackUncompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L15","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:hoponassualku!6028.51S/02505.68W#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"legacy_position","prefix":"hoponassualku","position":{"comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-406","title":"TestFallbackCompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L44","packet":"OH2KKU>APRS,TCPIP*:hello!/I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":10.540467177352028,"Longitude":-74.88313740726545,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"v","Speed":1885.1787453433603,"Course":20,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"Aigate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"position","comment":"Aigate testing","messaging":false,"latitude_deg":10.540467177352028,"longitude_deg":-74.88313740726545,"symbol":{"table_id":"/","code":"v"},"extensions":{"motion":{"speed_knots":1017.9150892782723,"course_deg":20}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-407","title":"TestFallbackExclAtOffset39","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L64","packet":"OH2RDP-1>BEACON-15:012345678901234567890123456789012345678!6028.51N/02505.68E#","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-408","title":"TestFallbackExclAtOffset40","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L81","packet":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -412,23 +412,23 @@ {"id":"FAP-412","title":"TestFallbackBadCompressedTableChar","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L134","packet":"OH2RDP-1>BEACON-15:X!zI0-X;T_Wv&{-A","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!zI0-X;T_Wv&{-A"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-413","title":"TestParseCapabilities","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/status_test.go#L14","packet":"OH7LZB>APRS:APU25N,WIDE2-2,qAR,LANSNG:>151811z>>Nashville,TN>>Toronto,ON","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":">>Nashville,TN>>Toronto,ON","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"status","text":">>Nashville,TN>>Toronto,ON"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-415","title":"TestCommentTelemetry/uncompressed_PHG_4ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03NN02739.63E#PHG26303/Siilinjarvi|\"p%T'.agff|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"N","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"26303","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,6348,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Siilinjarvi","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"Siilinjarvi","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"N","code":"#"},"extensions":{"telemetry":{"sequence":170,"analog":[415,559,5894,6348,null]},"phg":{"power_w":4,"height_haat_ft":640,"gain_dbi":3,"directivity_deg":null,"rate_per_hour":3}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-416","title":"TestCommentTelemetry/compressed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!/0%3RTh<6>dS_http://aprs.fi/|\"p%T'.ag|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.2347017530964,"Longitude":24.882575618361585,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":85.0097863745044,"Course":268,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.2347017530964,"longitude_deg":24.882575618361585,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":45.90161251323131,"course_deg":268},"telemetry":{"sequence":170,"analog":[415,559,5894,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-417","title":"TestCommentTelemetry/uncompressed_course_speed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL-14>APRS,qAR,IGATE:!6304.03N/02739.63E>036/010test |(7Cq?3<\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":659,"Vals":[3174,2748,2458,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"test","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"test","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":659,"analog":[3174,2748,2458,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-415","title":"TestCommentTelemetry/uncompressed_PHG_4ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03NN02739.63E#PHG26303/Siilinjarvi|\"p%T'.agff|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"N","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"26303","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,6348,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Siilinjarvi","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"Siilinjarvi","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"N","code":"#"},"extensions":{"telemetry":{"sequence":170,"analog":[415,559,5894,6348]},"phg":{"power_w":4,"height_haat_ft":640,"gain_dbi":3,"directivity_deg":null,"rate_per_hour":3}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-416","title":"TestCommentTelemetry/compressed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!/0%3RTh<6>dS_http://aprs.fi/|\"p%T'.ag|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.2347017530964,"Longitude":24.882575618361585,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":85.0097863745044,"Course":268,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.2347017530964,"longitude_deg":24.882575618361585,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":45.90161251323131,"course_deg":268},"telemetry":{"sequence":170,"analog":[415,559,5894]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-417","title":"TestCommentTelemetry/uncompressed_course_speed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL-14>APRS,qAR,IGATE:!6304.03N/02739.63E>036/010test |(7Cq?3<\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":659,"Vals":[3174,2748,2458,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"test","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"test","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":659,"analog":[3174,2748,2458]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-418","title":"TestCommentTelemetry/uncompressed_altitude_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-419","title":"TestCommentTelemetry/compressed_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-420","title":"TestCommentTelemetry/uncompressed_bits_LSB_first","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>|ss1122334455!\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,1840],"Bits":"10000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,1840],"digital":[true,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-421","title":"TestCommentTelemetry/pipe_in_comment_text","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>a|b |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"a|b","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"a|b","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":0,"analog":[0,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-422","title":"TestCommentTelemetry/uncompressed_telemetry_then_DAO","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>comment|\"p%T|!W12!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.06718333333333,"Longitude":27.660533333333333,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"comment","messaging":false,"latitude_deg":63.06718333333333,"longitude_deg":27.660533333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":170,"analog":[415,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-421","title":"TestCommentTelemetry/pipe_in_comment_text","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>a|b |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"a|b","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"a|b","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":0,"analog":[0]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-422","title":"TestCommentTelemetry/uncompressed_telemetry_then_DAO","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>comment|\"p%T|!W12!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.06718333333333,"Longitude":27.660533333333333,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"comment","messaging":false,"latitude_deg":63.06718333333333,"longitude_deg":27.660533333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":170,"analog":[415]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-423","title":"TestCommentTelemetryInvalid/too_long","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!!!!!!!!!!!!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!!!!!!!!!!!!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-424","title":"TestCommentTelemetryInvalid/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-425","title":"TestCommentTelemetryInvalid/odd_length","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-426","title":"TestCommentTelemetryInvalid/invalid_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!}|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!}|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!}|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-427","title":"TestCommentTelemetryInvalid/single_pipe","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-428","title":"TestMicEBase91Telemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-429","title":"TestMicEBase91Telemetry1Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L50","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,null,null,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-429","title":"TestMicEBase91Telemetry1Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L50","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-430","title":"TestMicEBase91TelemetryHarder","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L84","packet":"N6BG-1>S6QTUX:`+,^l!cR/'\";z}||ss11223344bb!\"|!w>f!|3","outcome":"accept","source_expected":{"fap_header":{"source":"N6BG-1","destination":"S6QTUX","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":36.24305311355312,"Longitude":-115.27779304029303,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"R","Speed":0,"Course":171,"Altitude":736,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,5980],"Bits":"10000000"},"Capabilities":null,"MBits":"101","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"'||3","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N6BG-1","destination":"S6QTUX","path":[]},"payload":{"type":"mic_e","comment":"'||3","latitude_deg":36.24305311355312,"longitude_deg":-115.27779304029303,"ambiguity":0,"symbol":{"table_id":"/","code":"R"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":171},"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,5980],"digital":[true,false,false,false,false,false,false,false]},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":736}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-431","title":"TestMicEBase91TelemetryDAOConfusing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L102","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!wEU!![S|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":86,"Vals":[3328,0,5328,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":86,"analog":[3328,0,5328,null,null]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-431","title":"TestMicEBase91TelemetryDAOConfusing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L102","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!wEU!![S|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":86,"Vals":[3328,0,5328,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":86,"analog":[3328,0,5328]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-432","title":"TestTelemetryClassic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L12","packet":"SRCCALL>APRS:T#324,000,038,255,.12,50.12,01000001","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":324,"Vals":[0,38,255,0.12,50.12],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":324,"analog":[0,38,255,0.12,50.12],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-433","title":"TestTelemetryRelaxed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L43","packet":"SRCCALL>APRS:T#1,-1,2147483647,-2147483648,0.000001,-0.0000001,01000001 comment","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[-1,2147483647,-2147483648,1e-06,-1e-07],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[-1,2147483647,-2147483648,1e-06,-1e-07],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-434","title":"TestTelemetryShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L71","packet":"SRCCALL>APRS:T#001,42","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[42,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[42,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} @@ -461,11 +461,11 @@ {"id":"FAP-461","title":"TestUncompressedAmbiguity4","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L103","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!60 . S/025 . W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.5,"Longitude":-25.5,"PosAmbiguity":4,"PosResolution":111120,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.5,"longitude_deg":-25.5,"ambiguity":4,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-462","title":"TestUncompressedAmbiguityUnbalanced","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L124","packet":"SRC>APRS,TCPIP*,qAC,T2POLAND:;SPBLTZ *010020z5210. N/021 . E? Comment","outcome":"reject","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2POLAND","WasDigied":false}]},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":52.175,"Longitude":null,"PosAmbiguity":2,"PosResolution":null,"SymbolTable":"/","SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"SPBLTZ ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: loc_amb_inv: invalid position ambiguity: longitude has spaces in non-ambiguous digits"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"original_wire":"SRC>APRS,TCPIP*,qAC,T2POLAND:;SPBLTZ *010020z5210. N/021 . E? Comment"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-463","title":"TestUncompressedAmbiguityLonMoreDigits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L139","packet":"OH2RDP-1>BEACON-15:!5210.5 N/02101.73E#Comment here","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.17583333333334,"Longitude":21.029166666666665,"PosAmbiguity":1,"PosResolution":185.2,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Comment here","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"Comment here","messaging":false,"latitude_deg":52.17583333333334,"longitude_deg":21.029166666666665,"ambiguity":1,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-464","title":"TestUncompressedLastResort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L163","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:hoponassualku!6028.51S/02505.68W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-464","title":"TestUncompressedLastResort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L163","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:hoponassualku!6028.51S/02505.68W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"legacy_position","prefix":"hoponassualku","position":{"comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-465","title":"TestUncompressedWxSymbolComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L185","packet":"A0RID-1>KC0PID-7,WIDE1,qAR,NX0R-6:=3851.38N/09908.75W_Home of KA0RID","outcome":"accept","source_expected":{"fap_header":{"source":"A0RID-1","destination":"KC0PID-7","digipeaters":[{"Call":"WIDE1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"NX0R-6","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.85633333333333,"Longitude":-99.14583333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"A0RID-1","destination":"KC0PID-7","path":[{"address":"WIDE1","repeated":false},{"address":"qAR","repeated":false},{"address":"NX0R-6","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":38.85633333333333,"longitude_deg":-99.14583333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} {"id":"FAP-466","title":"TestUncompressedWhitespaceTrimming","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L207","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220 RELAY,WIDE, OH2AP Jarvenpaa \t ","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-467","title":"TestPHGRA","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L223","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG72205/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"72205","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null,"rate_per_hour":5}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-468","title":"TestPHGRALetterSuffix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L239","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220Z/some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220Z","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-468","title":"TestPHGRALetterSuffix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L239","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220Z/some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220Z","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null,"rate_per_hour":35}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-469","title":"TestPHGInvalidNotParsed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L255","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7/20some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"PHG7/20some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"PHG7/20some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-470","title":"TestRNG","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L267","packet":"OH2RDP-1>BEACON-15:!6028.51N/02505.68E#RNG0050some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":80.4672,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"range":{"miles":50.0}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-471","title":"TestUncompressedTimestampAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L286","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=000079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":"13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} From 6838b48ba3cfe7997b4b516ad03f89b483af2a01 Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Sat, 17 Oct 2026 17:34:01 +0000 Subject: [PATCH 06/14] Replace APRS envelope profiles with configurable policies --- packages/aprs/README.md | 11 +- packages/aprs/docs/API_COVERAGE.md | 42 +-- packages/aprs/docs/ENVELOPE_POLICIES.md | 76 ++++++ packages/aprs/docs/NAMING.md | 2 +- packages/aprs/docs/UNRESOLVED_SPEC.md | 3 +- packages/aprs/src/hamkit/aprs/__init__.py | 6 +- packages/aprs/src/hamkit/aprs/_codec.py | 108 +++++--- .../aprs/src/hamkit/aprs/_compatibility.py | 5 +- packages/aprs/src/hamkit/aprs/_conformance.py | 81 +++--- packages/aprs/src/hamkit/aprs/_models.py | 1 - packages/aprs/src/hamkit/aprs/_policy.py | 73 +++++ packages/aprs/src/hamkit/aprs/_transport.py | 10 +- packages/aprs/tests/packets/test_codec.py | 3 +- .../tests/packets/test_envelope_policy.py | 256 ++++++++++++++++++ packages/aprs/tests/packets/test_policies.py | 2 +- .../tests/packets/test_roundtrip_corpus.py | 35 ++- packages/aprs/tests/test_api_contract.py | 6 +- packages/aprs/tests/test_conformance.py | 22 +- packages/aprs/tests/test_recovery.py | 16 +- packages/aprs/tests/vectors/README.md | 9 +- 20 files changed, 630 insertions(+), 137 deletions(-) create mode 100644 packages/aprs/docs/ENVELOPE_POLICIES.md create mode 100644 packages/aprs/src/hamkit/aprs/_policy.py create mode 100644 packages/aprs/tests/packets/test_envelope_policy.py diff --git a/packages/aprs/README.md b/packages/aprs/README.md index fe06dea..be2debe 100644 --- a/packages/aprs/README.md +++ b/packages/aprs/README.md @@ -1918,8 +1918,15 @@ Output: Text fields accept UTF-8, following the APRS 1.2 proposed-draft guidance for messages, bulletins, status and comments (adopted for compatibility; the ratified spec is ASCII). Bytes that are not valid UTF-8 are read as -Latin-1 with a diagnostic, never dropped or replaced. Pass `profile="rf"` to -also report AX.25 address and size limits. +Latin-1 with a diagnostic, never dropped or replaced. Pass `policy=aprs.RF` to +apply AX.25 envelope address and size limits. + +Envelope entry points accept an immutable `EnvelopePolicy`, with `APRS_IS` as +the default and `RF` for AX.25 envelope constraints. Each policy supplies source, +destination and path address patterns, plus optional path-entry, information-byte +and TNC2-line-byte limits. `None` means no limit. See +[Envelope policies](docs/ENVELOPE_POLICIES.md) for presets, customization and +migration from the former `profile=` argument. Positionless weather decodes into measurements with explicit units and a timestamp: diff --git a/packages/aprs/docs/API_COVERAGE.md b/packages/aprs/docs/API_COVERAGE.md index a4ac9f8..b7b2990 100644 --- a/packages/aprs/docs/API_COVERAGE.md +++ b/packages/aprs/docs/API_COVERAGE.md @@ -1,24 +1,26 @@ # APRS codec coverage -The public dataclasses, unions, function signatures and JSON schema are unchanged. +Packet dataclasses, payload unions and the packet JSON schema are unchanged. +Envelope entry points now accept `policy=EnvelopePolicy(...)` instead of a +profile string, with public `RF` and `APRS_IS` presets. `APRS_IS` is the default. Decoding and encoding cover the families exercised by all 1,561 occurrences in [the edition 1 corpus](APRS_COMPLIANCE_VECTORS.md). Unknown grammars still use `Opaque`; raw wrappers preserve authoritative information bytes. -| Family | Decoding and encoding | -| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -| Envelope | TNC2, monitor/RF validation, explicit repeated hops, AEA monitor normalization, bounded third-party nesting | -| Positions | All four DTIs, ambiguity, compressed coordinates/csT, Mic-E destination-dependent latitude/message/hemisphere | -| Extensions | Motion, altitude, PHG/rate, range, DF signal/bearing, DAO, area/corridor, signpost, storm, weather, base91 and Mic-E telemetry | -| Objects/items | Names, ownership information, alive/killed markers, compressed/uncompressed positions and extensions | -| Weather | MDHM positionless and located reports, unavailable readings, rain/humidity/pressure, luminosity, snow, water height, device suffixes | -| Telemetry | Classic samples, PARM/UNIT/EQNS/BITS, comment base91, old Mic-E hex/binary | -| Messages | Ordinary messages, ack/rej, reply-ack, automatic answers, bulletins/announcements/groups, NWS envelopes, NTS records | -| Queries/responses | General/directed queries, footprints, heard-station operands, direct lists, hourly counts, trace headers, capabilities | -| Status | Text, DHM, grid/symbol and beam/ERP | -| NMEA | GGA, GLL, RMC, VTG and WPL, checksums, independent fix usability, destination/source symbol conventions | -| Historical/raw | Grid beacons, X1J embedded positions, plain beacons, Agrelo, user-defined, invalid/test, reserved and external raw formats | -| Vendor weather | Ultimeter 2000 measurements plus original bytes; other vendor modes retain bytes without invented measurements | +| Family | Decoding and encoding | +| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| Envelope | TNC2, configurable address patterns and size limits, RF/APRS-IS presets, explicit repeated hops, AEA normalization, bounded third-party nesting | +| Positions | All four DTIs, ambiguity, compressed coordinates/csT, Mic-E destination-dependent latitude/message/hemisphere | +| Extensions | Motion, altitude, PHG/rate, range, DF signal/bearing, DAO, area/corridor, signpost, storm, weather, base91 and Mic-E telemetry | +| Objects/items | Names, ownership information, alive/killed markers, compressed/uncompressed positions and extensions | +| Weather | MDHM positionless and located reports, unavailable readings, rain/humidity/pressure, luminosity, snow, water height, device suffixes | +| Telemetry | Classic samples, PARM/UNIT/EQNS/BITS, comment base91, old Mic-E hex/binary | +| Messages | Ordinary messages, ack/rej, reply-ack, automatic answers, bulletins/announcements/groups, NWS envelopes, NTS records | +| Queries/responses | General/directed queries, footprints, heard-station operands, direct lists, hourly counts, trace headers, capabilities | +| Status | Text, DHM, grid/symbol and beam/ERP | +| NMEA | GGA, GLL, RMC, VTG and WPL, checksums, independent fix usability, destination/source symbol conventions | +| Historical/raw | Grid beacons, X1J embedded positions, plain beacons, Agrelo, user-defined, invalid/test, reserved and external raw formats | +| Vendor weather | Ultimeter 2000 measurements plus original bytes; other vendor modes retain bytes without invented measurements | `codec_support()` and `codec_support_for()` describe these boundaries at runtime. Raw models do not promise interpretation of arbitrary vendor or external grammars. @@ -91,13 +93,21 @@ including partial values recovered before a rejection. All original packet bytes, semantic expectations, options and provenance have a frozen integrity hash tied to PR #4's head commit. -Every vector also has an encoding test. 1,296 occurrences encode and stabilize +Every vector also has an encoding test. With an explicit permissive envelope +policy (`EnvelopePolicy(".*", ".*", ".*")`), 1,296 occurrences encode and stabilize through semantic decode/encode round trips with all raw evidence removed. The other 265 have explicit refusal records: 181 malformed public packets and 84 violations of the existing transmit-conformance rules. Those refusal tests assert the reason; they are not broad exception catches or skipped tests. Three bad NMEA checksums are repaired as part of the 1,296 successful encodings. +Of those 1,296, 13 have addresses rejected by the new default `APRS_IS` policy; +the tests independently require those default-policy refusals and validate the +other 1,283 under the default policy. The permissive policy changes no decoded +fields, packet bytes or payload conformance checks. Dedicated policy tests cover +custom patterns, optional and zero limits, boundary sizes including CRLF, +repeated markers, and consistent outer-envelope handling of third-party packets. + PHG/PHGR vectors exercise the public API directly, without compatibility decoding. The PHGR rate character and required slash, ordinary PHG separators, and PHG comment whitespace are handled by the shared public decoder/encoder. diff --git a/packages/aprs/docs/ENVELOPE_POLICIES.md b/packages/aprs/docs/ENVELOPE_POLICIES.md new file mode 100644 index 0000000..ed7d63c --- /dev/null +++ b/packages/aprs/docs/ENVELOPE_POLICIES.md @@ -0,0 +1,76 @@ +# Envelope policies + +`parse_packet`, `parse_tnc2_line`, `check_packet`, `validate_packet`, +`serialize_packet`, and `serialize_tnc2_line` accept `policy=`, defaulting to +`aprs.APRS_IS`. Policies are immutable data: + +```python +from dataclasses import dataclass + + +@dataclass(frozen=True, slots=True) +class EnvelopePolicy: + source_pattern: str + destination_pattern: str + path_address_pattern: str + max_path_entries: int | None = None + max_information_bytes: int | None = None + max_tnc2_line_bytes: int | None = None +``` + +Each regular expression uses `fullmatch`. Path entries are checked individually, +without their trailing `*` repeated marker. `None` means no limit; zero means +zero entries or bytes. Invalid regular expressions, negative limits, and limits +that are not integers are rejected when constructing a policy. + +| Constraint | `aprs.RF` | `aprs.APRS_IS` | +| ------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | +| Source | 1–6 uppercase ASCII letters/digits, optional numeric SSID 0–15 | At least 3 ASCII letters/digits, optional 1–2 alphanumeric SSID characters, at most 9 characters total | +| Destination and path address | Same format as RF source | At least 1 ASCII letter/digit, optional 1–2 alphanumeric SSID characters, at most 9 characters total | +| Path entries | 8 | No separate limit | +| Information bytes | 256 | No separate limit | +| TNC2 line bytes, including CRLF | No separate limit | 512 | + +APRS-IS patterns permit mixed case, including `qAR` in paths. Patterns check +individual formats, not q-construct ordering or network routing rules. The +APRS-IS limits follow the [server address rules](https://www.aprs-is.net/ServerDesign.aspx) +and [connection specification](https://www.aprs-is.net/Connecting.aspx). + +Information length counts every byte after the outer header's colon, including +third-party encapsulation. Line length includes the whole envelope plus a +canonical two-byte CRLF, even for unframed input or LF-terminated input. +These are byte limits, not character counts. Parsing measures received bytes; +validation and serialization measure newly encoded bytes, which can differ +after UTF-8 conversion or normalization. + +The selected envelope policy applies only to the outer packet. Inner third-party +headers remain text within its information field; they are not subjected to the +outer transport's address patterns or limits. Basic TNC2 syntax and payload +conformance checks still apply throughout the packet tree. + +```python +from dataclasses import replace +from hamkit import aprs + +packet = aprs.parse_packet(b"N0CALL>APRS,WIDE1-1:>Ready", policy=aprs.RF) +assert isinstance(packet, aprs.Packet) +assert aprs.check_packet(packet, policy=aprs.RF) == () +wire = aprs.serialize_packet(packet, policy=aprs.RF) + +custom = replace(aprs.RF, max_path_entries=None, max_information_bytes=200) +``` + +Parsing preserves decoded fields and reports policy violations in diagnostics. +Serialization refuses current violations; clearing stored diagnostics does not +bypass validation. Policies are separate from packet models and their JSON +schema. For configuration JSON, use `dataclasses.asdict(policy)` with +`json.dumps`, and reconstruct with `aprs.EnvelopePolicy(**json.loads(text))`; +`None` becomes JSON `null`. + +This replaces `EnvelopeProfile` and the `profile="rf"`/`profile="monitor"` +arguments. `policy=aprs.RF` replaces the RF profile. The new default `APRS_IS` +enforces address formats and the 512-byte line limit that `monitor` did not. +For explicit permissive envelope handling, use +`aprs.EnvelopePolicy(".*", ".*", ".*")`; basic syntax and payload checks still +apply. Payload-only APIs have no outer envelope and retain their existing +signatures. diff --git a/packages/aprs/docs/NAMING.md b/packages/aprs/docs/NAMING.md index 182262c..5214f42 100644 --- a/packages/aprs/docs/NAMING.md +++ b/packages/aprs/docs/NAMING.md @@ -41,7 +41,7 @@ the packet is sent, not a property of the model. | `Malformed` | Input with undecodable fields; a parse result, never a Packet or payload. | Named unions describe allowed values; they are not instantiable models or JSON -tags. Policy aliases such as `EnvelopeProfile`, `TimestampKind` and +tags. Type aliases such as `TimestampKind` and `TelemetryEncoding` include their subject so their values are understandable outside a field annotation. diff --git a/packages/aprs/docs/UNRESOLVED_SPEC.md b/packages/aprs/docs/UNRESOLVED_SPEC.md index 3d33727..15e26da 100644 --- a/packages/aprs/docs/UNRESOLVED_SPEC.md +++ b/packages/aprs/docs/UNRESOLVED_SPEC.md @@ -30,7 +30,8 @@ services such as aprs.fi decode UTF-8 in these fields. **Current behavior:** free-text fields decode as UTF-8; invalid UTF-8 falls back to Latin-1, one character per byte, with a nonconforming diagnostic. That fallback is a reversible reading, not proof of the sender's encoding; the exact bytes -remain in `original_wire`. The envelope profile (`monitor` or `rf`) selects +remain in `original_wire`. The envelope policy (`APRS_IS`, `RF`, or a custom +`EnvelopePolicy`) selects address and size rules, not a text encoding, so RF output also carries UTF-8. Free text is sent as UTF-8 and length limits count encoded bytes. Control characters are nonconforming. Protocol tokens (callsigns, addressees, message IDs, object and item names, query names, NTS diff --git a/packages/aprs/src/hamkit/aprs/__init__.py b/packages/aprs/src/hamkit/aprs/__init__.py index 4295499..4baeba3 100644 --- a/packages/aprs/src/hamkit/aprs/__init__.py +++ b/packages/aprs/src/hamkit/aprs/__init__.py @@ -94,7 +94,6 @@ Diagnostic, DiagnosticCode, DirectStations, - EnvelopeProfile, ExternalExtension, Header, HeardStation, @@ -128,14 +127,17 @@ UserDefined, ) from ._nmea import GGA, GLL, RMC, VTG, WPL, NMEAMetadata, NMEASentence +from ._policy import APRS_IS, RF, EnvelopePolicy from ._transport import parse_tnc2_line, serialize_tnc2_line __all__ = [ + "APRS_IS", "DAO", "GGA", "GLL", "NMEA", "PHG", + "RF", "RMC", "VTG", "WPL", @@ -165,7 +167,7 @@ "DigitalChannels", "DirectStations", "EnvelopeError", - "EnvelopeProfile", + "EnvelopePolicy", "Extensions", "Extent", "ExternalExtension", diff --git a/packages/aprs/src/hamkit/aprs/_codec.py b/packages/aprs/src/hamkit/aprs/_codec.py index fcb2f4d..1a584d0 100644 --- a/packages/aprs/src/hamkit/aprs/_codec.py +++ b/packages/aprs/src/hamkit/aprs/_codec.py @@ -34,7 +34,6 @@ from ._models import ( Acknowledgment, Diagnostic, - EnvelopeProfile, Header, Hop, Invalid, @@ -51,6 +50,7 @@ UnsupportedPolicy, UserDefined, ) +from ._policy import APRS_IS, EnvelopePolicy from ._recovery import payload_data from ._text import free_text, token from ._validation import validate_tree @@ -73,24 +73,24 @@ @dataclass(frozen=True) class _Options: - profile: EnvelopeProfile + policy: EnvelopePolicy unsupported: UnsupportedPolicy malformed: MalformedPolicy max_depth: int def _options( - profile: str, unsupported: str, malformed: str, max_depth: object + policy: EnvelopePolicy, unsupported: str, malformed: str, max_depth: object ) -> _Options: - if profile not in ("monitor", "rf"): - raise ValueError("profile must be 'monitor' or 'rf'") + if not isinstance(policy, EnvelopePolicy): + raise TypeError("policy must be an EnvelopePolicy") if unsupported not in ("opaque", "raise"): raise ValueError("unsupported must be 'opaque' or 'raise'") if malformed not in ("return", "raise"): raise ValueError("malformed must be 'return' or 'raise'") if type(max_depth) is not int or not 0 <= max_depth <= 32: raise ValueError("max_third_party_depth must be an integer in 0..32") - return _Options(profile, unsupported, malformed, max_depth) # type: ignore[arg-type] + return _Options(policy, unsupported, malformed, max_depth) # type: ignore[arg-type] def _special_message(address: str, body: bytes) -> bool: @@ -476,20 +476,19 @@ def address(path: str, raw_token: bytes) -> str | None: assert header is not None and payload is not None assert not isinstance(payload, Malformed) found = _prefixed("$.payload", found) - if options.profile == "rf" and len(information) > 256: - found.append( - Diagnostic("nonconforming", "RF information exceeds 256 bytes", "$.payload") - ) + policy = options.policy if depth == 0 else None + if policy is not None: + found.extend(_envelope_sizes(policy, len(information), len(raw) + 2)) packet = Packet(header, payload, original_wire=raw) # Findings are computed from the finished packet; set them once, in place. - object.__setattr__(packet, "diagnostics", (*found, *check(packet, options.profile))) + object.__setattr__(packet, "diagnostics", (*found, *check(packet, policy))) return packet, found def parse_packet( wire: bytes, *, - profile: EnvelopeProfile = "monitor", + policy: EnvelopePolicy = APRS_IS, unsupported: UnsupportedPolicy = "opaque", malformed: MalformedPolicy = "return", max_third_party_depth: int = 4, @@ -500,14 +499,15 @@ def parse_packet( are listed in Packet.diagnostics as "nonconforming". Fields that cannot be decoded yield a Malformed with recovered values (or raise with malformed="raise"). Families without a decoder become Opaque (or raise with - unsupported="raise"). profile="rf" adds AX.25 address and size findings. + unsupported="raise"). The envelope policy defaults to APRS_IS; pass RF for + AX.25 address and size constraints, or supply a custom EnvelopePolicy. CR/LF is never stripped; use parse_tnc2_line for line-oriented input. """ if not isinstance(wire, bytes): raise TypeError( "parse_packet requires bytes; encode text first, e.g. line.encode()" ) - options = _options(profile, unsupported, malformed, max_third_party_depth) + options = _options(policy, unsupported, malformed, max_third_party_depth) return _parse(wire, options, 0)[0] @@ -525,7 +525,7 @@ def parse_payload( """ if not isinstance(information, bytes): raise TypeError("parse_payload requires bytes") - options = _options("monitor", unsupported, malformed, max_third_party_depth) + options = _options(APRS_IS, unsupported, malformed, max_third_party_depth) if header is not None: validate_tree(header) return _recover_payload(information, header, options, 0, []) @@ -698,26 +698,56 @@ def _bound_depth(value: Packet | Payload, max_depth: int) -> None: payload = payload.packet.payload +def _envelope_sizes( + policy: EnvelopePolicy, information_bytes: int, line_bytes: int +) -> tuple[Diagnostic, ...]: + """Measure the outer envelope, including canonical CRLF for line limits.""" + result = [] + if ( + policy.max_information_bytes is not None + and information_bytes > policy.max_information_bytes + ): + result.append( + Diagnostic( + "nonconforming", + f"information exceeds {policy.max_information_bytes} bytes", + "$.payload", + ) + ) + if ( + policy.max_tnc2_line_bytes is not None + and line_bytes > policy.max_tnc2_line_bytes + ): + result.append( + Diagnostic( + "nonconforming", + f"TNC2 line exceeds {policy.max_tnc2_line_bytes} bytes including CRLF", + "$", + ) + ) + return tuple(result) + + def _findings( - value: Packet | Payload, profile: EnvelopeProfile, max_depth: int + value: Packet | Payload, policy: EnvelopePolicy, max_depth: int ) -> tuple[Diagnostic, ...]: - """Conformance findings, plus the RF information size of an encodable packet.""" - findings = check(value, profile) - if isinstance(value, Packet) and profile == "rf": + """Conformance findings, including the encoded outer envelope size.""" + findings = check(value, policy) + if isinstance(value, Packet) and ( + policy.max_information_bytes is not None + or policy.max_tnc2_line_bytes is not None + ): try: information = _encode_payload(value.payload, value.header, max_depth, 0) except (CodecNotImplementedError, ContextRequiredError, FieldError): return findings # Reported elsewhere; there are no bytes to measure. - if len(information) > 256: - size = Diagnostic( - "nonconforming", "RF information exceeds 256 bytes", "$.payload" - ) - findings = (*findings, size) + line_bytes = len(str(value.header).encode("ascii")) + 1 + len(information) + 2 + findings = (*findings, *_envelope_sizes(policy, len(information), line_bytes)) return findings def _ready_to_send( - value: Packet | Payload, profile: EnvelopeProfile, max_depth: int + value: Packet | Payload, policy: EnvelopePolicy, max_depth: int ) -> None: _bound_depth(value, max_depth) validate_tree(value) @@ -727,7 +757,7 @@ def _ready_to_send( "Mic-E encoding needs the header; use serialize_packet" ) _require_codecs(payload) - findings = _findings(value, profile, max_depth) + findings = _findings(value, policy, max_depth) if findings: raise ConformanceError(findings) @@ -735,7 +765,7 @@ def _ready_to_send( def serialize_packet( packet: Packet, *, - profile: EnvelopeProfile = "monitor", + policy: EnvelopePolicy = APRS_IS, max_third_party_depth: int = 4, ) -> bytes: """Encode a packet for sending. Never replays original_wire. @@ -743,13 +773,13 @@ def serialize_packet( Every packet is validated first: ResourceLimitError for excessive third-party nesting, ModelError for invalid fields, CodecNotImplementedError for families without an encoder, and ConformanceError (with every finding) - for anything outside APRS rules. profile="rf" also applies AX.25 address - and information-size limits. + for anything outside APRS rules or the selected envelope policy. The default + policy is APRS_IS; pass RF or a custom EnvelopePolicy as needed. """ if not isinstance(packet, Packet): raise TypeError("serialize_packet requires a Packet; repair a Malformed first") - options = _options(profile, "raise", "raise", max_third_party_depth) - _ready_to_send(packet, options.profile, options.max_depth) + options = _options(policy, "raise", "raise", max_third_party_depth) + _ready_to_send(packet, options.policy, options.max_depth) return _serialize(packet, options.max_depth, 0) @@ -757,15 +787,15 @@ def serialize_payload(payload: Payload, *, max_third_party_depth: int = 4) -> by """Encode an information field alone, with the same validation as packets.""" if isinstance(payload, (Packet, Malformed)): raise TypeError("serialize_payload requires a payload model") - options = _options("monitor", "raise", "raise", max_third_party_depth) - _ready_to_send(payload, options.profile, options.max_depth) + options = _options(APRS_IS, "raise", "raise", max_third_party_depth) + _ready_to_send(payload, options.policy, options.max_depth) return _encode_payload(payload, None, options.max_depth, 0) def check_packet( packet: Packet, *, - profile: EnvelopeProfile = "monitor", + policy: EnvelopePolicy = APRS_IS, max_third_party_depth: int = 4, ) -> tuple[Diagnostic, ...]: """Every conformance finding serialize_packet would raise, without raising. @@ -774,19 +804,17 @@ def check_packet( """ if not isinstance(packet, Packet): raise TypeError("check_packet requires a Packet") - options = _options(profile, "raise", "raise", max_third_party_depth) + options = _options(policy, "raise", "raise", max_third_party_depth) _bound_depth(packet, options.max_depth) validate_tree(packet) - return _findings(packet, options.profile, options.max_depth) + return _findings(packet, options.policy, options.max_depth) def validate_packet( packet: Packet, *, - profile: EnvelopeProfile = "monitor", + policy: EnvelopePolicy = APRS_IS, max_third_party_depth: int = 4, ) -> None: """Raise exactly as serialize_packet would; return None when it can be sent.""" - serialize_packet( - packet, profile=profile, max_third_party_depth=max_third_party_depth - ) + serialize_packet(packet, policy=policy, max_third_party_depth=max_third_party_depth) diff --git a/packages/aprs/src/hamkit/aprs/_compatibility.py b/packages/aprs/src/hamkit/aprs/_compatibility.py index 72036e5..bf117f4 100644 --- a/packages/aprs/src/hamkit/aprs/_compatibility.py +++ b/packages/aprs/src/hamkit/aprs/_compatibility.py @@ -19,6 +19,7 @@ from ._codec import parse_packet, parse_payload from ._errors import APRSError from ._json import to_json_dict +from ._policy import APRS_IS, RF def _relaxed_telemetry(raw: bytes) -> d.Telemetry: @@ -172,9 +173,7 @@ def view( options = options or {} packet = parse_packet( raw, - profile=( - "rf" if profile == "strict-envelope" or options.get("ax25") else "monitor" - ), + policy=(RF if profile == "strict-envelope" or options.get("ax25") else APRS_IS), ) result: dict[str, Any] = to_json_dict(packet, include_defaults=True) rejected = ( diff --git a/packages/aprs/src/hamkit/aprs/_conformance.py b/packages/aprs/src/hamkit/aprs/_conformance.py index 38828ec..95467ea 100644 --- a/packages/aprs/src/hamkit/aprs/_conformance.py +++ b/packages/aprs/src/hamkit/aprs/_conformance.py @@ -41,7 +41,6 @@ Capabilities, Diagnostic, DirectStations, - EnvelopeProfile, Header, HeardStation, Item, @@ -55,10 +54,11 @@ Status, Trace, ) +from ._policy import EnvelopePolicy from ._validation import _fields, walk Finding = tuple[str, str] -_Rule = Callable[[Any, EnvelopeProfile], Iterable[Finding]] +_Rule = Callable[[Any, EnvelopePolicy | None], Iterable[Finding]] _RULES: dict[type, list[_Rule]] = {} @@ -84,12 +84,12 @@ def _plan(model: type) -> tuple[tuple[str, ...], tuple[_Rule, ...]]: return plan -def check(value: Any, profile: EnvelopeProfile = "monitor") -> tuple[Diagnostic, ...]: +def check(value: Any, policy: EnvelopePolicy | None = None) -> tuple[Diagnostic, ...]: """Every conformance finding in a model graph, with JSON-style paths.""" result = [] for node, path in walk(value): - # RF limits apply to the transmitted header, not third-party inner ones. - node_profile = profile if path in ("$", "$.header") else "monitor" + # Envelope policies apply to the outer header, not encapsulated text. + node_policy = policy if path in ("$", "$.header") else None free, rules = _plan(type(node)) for name in free: if _has_control(getattr(node, name)): @@ -101,7 +101,7 @@ def check(value: Any, profile: EnvelopeProfile = "monitor") -> tuple[Diagnostic, ) ) for rule in rules: - for relative, message in rule(node, node_profile): + for relative, message in rule(node, node_policy): result.append(Diagnostic("nonconforming", message, path + relative[1:])) return tuple(result) @@ -125,25 +125,26 @@ def _text( # Envelope ------------------------------------------------------------------ -_RF_ADDRESS = re.compile(r"[A-Z0-9]{1,6}(?:-(?:[0-9]|1[0-5]))?") - @_conformance(Header) -def _header(v: Header, profile: EnvelopeProfile) -> Iterator[Finding]: - if profile != "rf": +def _header(v: Header, policy: EnvelopePolicy | None) -> Iterator[Finding]: + if policy is None: return - for name, address in (("source", v.source), ("destination", v.destination)): - if not _RF_ADDRESS.fullmatch(address): - yield f"$.{name}", "not a valid AX.25 address or SSID" + for name, address, pattern in ( + ("source", v.source, policy.source_pattern), + ("destination", v.destination, policy.destination_pattern), + ): + if re.fullmatch(pattern, address) is None: + yield f"$.{name}", f"address does not match {name}_pattern" for i, hop in enumerate(v.path): - if not _RF_ADDRESS.fullmatch(hop.address): - yield f"$.path[{i}].address", "not a valid AX.25 address or SSID" - if len(v.path) > 8: - yield "$.path", "RF paths have at most eight hops" + if re.fullmatch(policy.path_address_pattern, hop.address) is None: + yield f"$.path[{i}].address", "address does not match path_address_pattern" + if policy.max_path_entries is not None and len(v.path) > policy.max_path_entries: + yield "$.path", f"path exceeds {policy.max_path_entries} entries" @_conformance(Packet) -def _packet(v: Packet, profile: EnvelopeProfile) -> Iterator[Finding]: +def _packet(v: Packet, policy: EnvelopePolicy | None) -> Iterator[Finding]: payload = v.payload if isinstance(payload, Weather): yield from _weather_report(payload, "$.payload", positioned=False) @@ -158,7 +159,7 @@ def _packet(v: Packet, profile: EnvelopeProfile) -> Iterator[Finding]: @_conformance(Status) -def _status(v: Status, profile: EnvelopeProfile) -> Iterator[Finding]: +def _status(v: Status, policy: EnvelopePolicy | None) -> Iterator[Finding]: yield from _text("text", v.text, None) size = _size(v.text) + (7 if v.timestamp is not None else 0) if v.grid is not None: @@ -172,7 +173,7 @@ def _status(v: Status, profile: EnvelopeProfile) -> Iterator[Finding]: @_conformance(Message) -def _message(v: Message, profile: EnvelopeProfile) -> Iterator[Finding]: +def _message(v: Message, policy: EnvelopePolicy | None) -> Iterator[Finding]: yield from _text("text", v.text, 67) reply = v.reply_ack if reply is not None and v.message_id and len(v.message_id) + 1 + len(reply) > 5: @@ -180,13 +181,13 @@ def _message(v: Message, profile: EnvelopeProfile) -> Iterator[Finding]: @_conformance(Acknowledgment) -def _ack(v: Acknowledgment, profile: EnvelopeProfile) -> Iterator[Finding]: +def _ack(v: Acknowledgment, policy: EnvelopePolicy | None) -> Iterator[Finding]: if v.reply_ack is not None and len(v.message_id) + 1 + len(v.reply_ack) > 5: yield "$.reply_ack", "reply-ack ID and ack exceed five characters" @_conformance(AutoAnswer) -def _auto_answer(v: AutoAnswer, profile: EnvelopeProfile) -> Iterator[Finding]: +def _auto_answer(v: AutoAnswer, policy: EnvelopePolicy | None) -> Iterator[Finding]: suffix = 1 + len(v.previous_ack) if v.previous_ack is not None else 0 yield from _text("text", v.text, 67 - 3 - suffix) if v.previous_ack is not None and len(v.previous_ack) > 2: @@ -194,7 +195,7 @@ def _auto_answer(v: AutoAnswer, profile: EnvelopeProfile) -> Iterator[Finding]: @_conformance(Bulletin, NWSBulletin) -def _bulletin(v: Any, profile: EnvelopeProfile) -> Iterator[Finding]: +def _bulletin(v: Any, policy: EnvelopePolicy | None) -> Iterator[Finding]: yield from _text("text", v.text, 67) @@ -202,7 +203,7 @@ def _bulletin(v: Any, profile: EnvelopeProfile) -> Iterator[Finding]: @_conformance(TelemetryParameters, TelemetryUnits) -def _labels(v: Any, profile: EnvelopeProfile) -> Iterator[Finding]: +def _labels(v: Any, policy: EnvelopePolicy | None) -> Iterator[Finding]: if not 1 <= len(v.channels) <= len(_CHANNEL_LIMITS): yield "$.channels", "requires one to thirteen channels" for i, (channel, limit) in enumerate(zip(v.channels, _CHANNEL_LIMITS)): @@ -211,13 +212,15 @@ def _labels(v: Any, profile: EnvelopeProfile) -> Iterator[Finding]: @_conformance(TelemetryEquations) -def _equations(v: TelemetryEquations, profile: EnvelopeProfile) -> Iterator[Finding]: +def _equations( + v: TelemetryEquations, policy: EnvelopePolicy | None +) -> Iterator[Finding]: if not 1 <= len(v.coefficients) <= 5: yield "$.coefficients", "requires one to five channels" @_conformance(TelemetryBits) -def _bits(v: TelemetryBits, profile: EnvelopeProfile) -> Iterator[Finding]: +def _bits(v: TelemetryBits, policy: EnvelopePolicy | None) -> Iterator[Finding]: yield from _text("project_title", v.project_title, 23, "|~{") @@ -241,7 +244,7 @@ def _nts_values(v: Any) -> list[str]: @_conformance(NTSHeader, NTSAddress, NTSPhone, NTSText, NTSSignature, NTSRouting) -def _nts(v: Any, profile: EnvelopeProfile) -> Iterator[Finding]: +def _nts(v: Any, policy: EnvelopePolicy | None) -> Iterator[Finding]: if isinstance(v, NTSHeader): if not re.fullmatch(r"(?:SVC )?[1-9][0-9]*", v.number): yield "$.number", "requires a positive number, optionally after SVC" @@ -275,7 +278,7 @@ def _nts(v: Any, profile: EnvelopeProfile) -> Iterator[Finding]: @_conformance(Query) -def _query(v: Query, profile: EnvelopeProfile) -> Iterator[Finding]: +def _query(v: Query, policy: EnvelopePolicy | None) -> Iterator[Finding]: if v.name in _GENERAL_QUERIES and v.addressee is not None: yield "$.addressee", "general queries have no addressee" if v.name in _DIRECTED_QUERIES and v.addressee is None: @@ -292,18 +295,18 @@ def _query(v: Query, profile: EnvelopeProfile) -> Iterator[Finding]: @_conformance(Footprint) -def _footprint(v: Footprint, profile: EnvelopeProfile) -> Iterator[Finding]: +def _footprint(v: Footprint, policy: EnvelopePolicy | None) -> Iterator[Finding]: if v.radius_miles > 9999 or v.radius_miles != int(v.radius_miles): yield "$.radius_miles", "requires whole miles in 0..9999" @_conformance(DirectStations) -def _direct(v: DirectStations, profile: EnvelopeProfile) -> Iterator[Finding]: +def _direct(v: DirectStations, policy: EnvelopePolicy | None) -> Iterator[Finding]: yield from _text("stations", "Directs= " + " ".join(v.stations), 67) @_conformance(HeardStation) -def _heard(v: HeardStation, profile: EnvelopeProfile) -> Iterator[Finding]: +def _heard(v: HeardStation, policy: EnvelopePolicy | None) -> Iterator[Finding]: if len(v.counts) != 8: yield "$.counts", "requires eight hourly slots (None when unavailable)" counts = " ".join("." if x is None else str(x) for x in v.counts) @@ -311,12 +314,12 @@ def _heard(v: HeardStation, profile: EnvelopeProfile) -> Iterator[Finding]: @_conformance(Trace) -def _trace(v: Trace, profile: EnvelopeProfile) -> Iterator[Finding]: +def _trace(v: Trace, policy: EnvelopePolicy | None) -> Iterator[Finding]: yield from _text("header", str(v.header) + ":", 67) @_conformance(Capabilities) -def _capabilities(v: Capabilities, profile: EnvelopeProfile) -> Iterator[Finding]: +def _capabilities(v: Capabilities, policy: EnvelopePolicy | None) -> Iterator[Finding]: if not v.tokens: yield "$.tokens", "a capabilities report requires at least one token" for i, token in enumerate(v.tokens): @@ -330,15 +333,15 @@ def _capabilities(v: Capabilities, profile: EnvelopeProfile) -> Iterator[Finding @_conformance(Item) -def _item(v: Item, profile: EnvelopeProfile) -> Iterator[Finding]: +def _item(v: Item, policy: EnvelopePolicy | None) -> Iterator[Finding]: if len(v.name) < 3: yield "$.name", "item names have at least three characters" @_conformance(Position, Object, Item) -def _position(v: Position, profile: EnvelopeProfile) -> Iterator[Finding]: +def _position(v: Position, policy: EnvelopePolicy | None) -> Iterator[Finding]: """The encoded tail must read back as the same extensions and comment.""" - if any(_located(v, profile)): + if any(_located(v, policy)): return # Report structural slot errors without secondary comment errors. try: extensions = v.extensions @@ -371,7 +374,7 @@ def _position(v: Position, profile: EnvelopeProfile) -> Iterator[Finding]: @_conformance(Position, Object, Item, MicE) -def _located(v: Any, profile: EnvelopeProfile) -> Iterator[Finding]: +def _located(v: Any, policy: EnvelopePolicy | None) -> Iterator[Finding]: e = v.extensions symbol = (v.symbol.table_id, v.symbol.code) primary = [ @@ -454,7 +457,7 @@ def _weather_report(w: Weather, path: str, positioned: bool) -> Iterator[Finding @_conformance(Weather) -def _weather(v: Weather, profile: EnvelopeProfile) -> Iterator[Finding]: +def _weather(v: Weather, policy: EnvelopePolicy | None) -> Iterator[Finding]: for name in ( "wind_direction", "wind_speed", @@ -483,7 +486,7 @@ def _weather(v: Weather, profile: EnvelopeProfile) -> Iterator[Finding]: @_conformance(Telemetry) -def _telemetry(v: Telemetry, profile: EnvelopeProfile) -> Iterator[Finding]: +def _telemetry(v: Telemetry, policy: EnvelopePolicy | None) -> Iterator[Finding]: def analog(low: int, high: int, missing: tuple[int, ...] = ()) -> Iterator[Finding]: for i, value in enumerate(v.analog): if i in missing and value is None: diff --git a/packages/aprs/src/hamkit/aprs/_models.py b/packages/aprs/src/hamkit/aprs/_models.py index 6432a62..c1d5062 100644 --- a/packages/aprs/src/hamkit/aprs/_models.py +++ b/packages/aprs/src/hamkit/aprs/_models.py @@ -29,7 +29,6 @@ from ._nmea import NMEAMetadata, NMEASentence from ._validation import ANY_TEXT, FREE_TEXT, Validated -EnvelopeProfile: TypeAlias = Literal["monitor", "rf"] UnsupportedPolicy: TypeAlias = Literal["opaque", "raise"] MalformedPolicy: TypeAlias = Literal["return", "raise"] DiagnosticCode: TypeAlias = Literal["unsupported", "malformed", "nonconforming"] diff --git a/packages/aprs/src/hamkit/aprs/_policy.py b/packages/aprs/src/hamkit/aprs/_policy.py new file mode 100644 index 0000000..c6e7f71 --- /dev/null +++ b/packages/aprs/src/hamkit/aprs/_policy.py @@ -0,0 +1,73 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Declarative constraints for the outer TNC2 packet envelope.""" + +import re +from dataclasses import dataclass + + +@dataclass(frozen=True, slots=True) +class EnvelopePolicy: + """Address fullmatch patterns and optional, nonnegative envelope limits. + + Path addresses exclude their trailing repeated marker (``*``). Information + length includes third-party encapsulation. TNC2 line length includes a + canonical CRLF, even for unframed input. None means no limit. + + These constraints apply to the outer envelope, not encapsulated headers. + Basic TNC2 token syntax and payload conformance still apply independently. + """ + + source_pattern: str + destination_pattern: str + path_address_pattern: str + max_path_entries: int | None = None + max_information_bytes: int | None = None + max_tnc2_line_bytes: int | None = None + + def __post_init__(self) -> None: + for name in ( + "source_pattern", + "destination_pattern", + "path_address_pattern", + ): + pattern = getattr(self, name) + if not isinstance(pattern, str): + raise TypeError(f"{name} must be a string") + try: + re.compile(pattern) + except re.error as exc: + raise ValueError( + f"{name} is not a valid regular expression: {exc}" + ) from exc + for name in ( + "max_path_entries", + "max_information_bytes", + "max_tnc2_line_bytes", + ): + limit = getattr(self, name) + if limit is not None: + if type(limit) is not int: + raise TypeError(f"{name} must be an integer or None") + if limit < 0: + raise ValueError(f"{name} must be nonnegative") + + +_AX25_ADDRESS = r"[A-Z0-9]{1,6}(?:-(?:[0-9]|1[0-5]))?" +_APRS_IS_SOURCE = r"(?=.{1,9}\Z)[A-Za-z0-9]{3,9}(?:-[A-Za-z0-9]{1,2})?" +_APRS_IS_ADDRESS = r"(?=.{1,9}\Z)[A-Za-z0-9]{1,9}(?:-[A-Za-z0-9]{1,2})?" + +RF = EnvelopePolicy( + source_pattern=_AX25_ADDRESS, + destination_pattern=_AX25_ADDRESS, + path_address_pattern=_AX25_ADDRESS, + max_path_entries=8, + max_information_bytes=256, +) + +APRS_IS = EnvelopePolicy( + source_pattern=_APRS_IS_SOURCE, + destination_pattern=_APRS_IS_ADDRESS, + path_address_pattern=_APRS_IS_ADDRESS, + max_tnc2_line_bytes=512, +) diff --git a/packages/aprs/src/hamkit/aprs/_transport.py b/packages/aprs/src/hamkit/aprs/_transport.py index 26dc8c6..80d3021 100644 --- a/packages/aprs/src/hamkit/aprs/_transport.py +++ b/packages/aprs/src/hamkit/aprs/_transport.py @@ -7,18 +7,18 @@ from ._codec import parse_packet, serialize_packet from ._errors import EnvelopeError from ._models import ( - EnvelopeProfile, Malformed, MalformedPolicy, Packet, UnsupportedPolicy, ) +from ._policy import APRS_IS, EnvelopePolicy def parse_tnc2_line( line: bytes, *, - profile: EnvelopeProfile = "monitor", + policy: EnvelopePolicy = APRS_IS, unsupported: UnsupportedPolicy = "opaque", malformed: MalformedPolicy = "return", max_third_party_depth: int = 4, @@ -41,7 +41,7 @@ def parse_tnc2_line( ) return parse_packet( raw, - profile=profile, + policy=policy, unsupported=unsupported, malformed=malformed, max_third_party_depth=max_third_party_depth, @@ -51,12 +51,12 @@ def parse_tnc2_line( def serialize_tnc2_line( packet: Packet, *, - profile: EnvelopeProfile = "monitor", + policy: EnvelopePolicy = APRS_IS, max_third_party_depth: int = 4, ) -> bytes: """Encode one CRLF-terminated line, rejecting non-line-safe payloads.""" raw = serialize_packet( - packet, profile=profile, max_third_party_depth=max_third_party_depth + packet, policy=policy, max_third_party_depth=max_third_party_depth ) if b"\r" in raw or b"\n" in raw: raise EnvelopeError("payload cannot be represented in line-oriented TNC2") diff --git a/packages/aprs/tests/packets/test_codec.py b/packages/aprs/tests/packets/test_codec.py index 7fea973..887743c 100644 --- a/packages/aprs/tests/packets/test_codec.py +++ b/packages/aprs/tests/packets/test_codec.py @@ -6,6 +6,7 @@ from dataclasses import replace from hamkit.aprs import ( + RF, Acknowledgment, Altitude, CodecNotImplementedError, @@ -43,7 +44,7 @@ def test_build_position(self) -> None: wire = b"N0CALL>APRS,WIDE1-1:!4903.50N/07201.75W-Test" self.assertEqual(serialize_packet(packet), wire) self.assertEqual(parse_packet(wire), packet) - validate_packet(packet, profile="rf") + validate_packet(packet, policy=RF) def test_null_position_convention(self) -> None: value = parse_payload(b"!0000.00N\\00000.00W.") diff --git a/packages/aprs/tests/packets/test_envelope_policy.py b/packages/aprs/tests/packets/test_envelope_policy.py new file mode 100644 index 0000000..e138ff8 --- /dev/null +++ b/packages/aprs/tests/packets/test_envelope_policy.py @@ -0,0 +1,256 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Public policy behavior across decoding, validation and both wire formats.""" + +import json +from dataclasses import FrozenInstanceError, asdict, replace +from typing import Any, cast + +import pytest + +from hamkit import aprs as a + + +def parse(raw: bytes, policy: a.EnvelopePolicy) -> a.Packet: + packet = a.parse_packet(raw, policy=policy) + assert isinstance(packet, a.Packet) + assert packet.original_wire == raw + return packet + + +def assert_conformance( + raw: bytes, policy: a.EnvelopePolicy, paths: set[str] +) -> a.Packet: + packet = parse(raw, policy) + assert {d.path for d in packet.diagnostics} == paths + assert all(d.code == "nonconforming" for d in packet.diagnostics) + findings = a.check_packet(packet, policy=policy) + assert {d.path for d in findings} == paths + for operation in (a.serialize_packet, a.serialize_tnc2_line, a.validate_packet): + if paths: + with pytest.raises(a.ConformanceError) as caught: + operation(packet, policy=policy) + assert caught.value.diagnostics == findings + else: + result = operation(packet, policy=policy) + if operation is a.serialize_packet: + assert result == raw + elif operation is a.serialize_tnc2_line: + assert result == raw + b"\r\n" + else: + assert result is None + for terminator in (b"\n", b"\r\n"): + framed = a.parse_tnc2_line(raw + terminator, policy=policy) + assert isinstance(framed, a.Packet) + assert framed.original_wire == raw + assert framed.diagnostics == packet.diagnostics + return packet + + +@pytest.mark.parametrize( + "address,rf_ok,internet_ok", + [ + ("N0CALL", True, True), + ("n0call", False, True), + ("N0CALL-0", True, True), + ("N0CALL-15", True, True), + ("N0CALL-16", False, True), + ("N0CALL-JS", False, True), + ("N0CALL-123", False, False), + ("ABCDEFGHI", False, True), + ("ABCDEFGHIJ", False, False), + ("ABCDEFG-A", False, True), + ("ABCDEFG-AB", False, False), + ("N0!CALL", False, False), + ("N0_CALL", False, False), + ("N0CALL-", False, False), + ("N0CALL-A-B", False, False), + ("A", True, False), + ("AB", True, False), + ("AB-12", True, False), + ], +) +def test_source_formats(address: str, rf_ok: bool, internet_ok: bool) -> None: + raw = address.encode() + b">APRS:>Ready" + for policy, valid in ((a.RF, rf_ok), (a.APRS_IS, internet_ok)): + assert_conformance(raw, policy, set() if valid else {"$.header.source"}) + + +@pytest.mark.parametrize("address", ["A", "AB", "A-1", "qAR", "AE5PL-JS"]) +def test_internet_destination_and_path_allow_short_addresses(address: str) -> None: + assert_conformance(f"N0CALL>{address},{address}*:>Ready".encode(), a.APRS_IS, set()) + + +def test_path_entries_preserve_q_and_repeated_marker() -> None: + raw = b"N0CALL>APRS,WIDE1-1,W1AW*,qAR,AE5PL-JS:>Ready" + internet = assert_conformance(raw, a.APRS_IS, set()) + rf = assert_conformance( + raw, a.RF, {"$.header.path[2].address", "$.header.path[3].address"} + ) + assert internet.header == rf.header + assert internet.payload == rf.payload + assert internet.header.path == ( + a.Hop("WIDE1-1"), + a.Hop("W1AW", True), + a.Hop("qAR"), + a.Hop("AE5PL-JS"), + ) + + +def test_custom_patterns_are_independent_and_use_fullmatch() -> None: + policy = a.EnvelopePolicy("src_[0-9]+", "dst_[A-Z]+", "via_[a-z]+") + assert_conformance(b"src_12>dst_AB,via_home*:>Ready", policy, set()) + assert_conformance( + b"xsrc_12>dst_ABx,via_home1*:>Ready", + policy, + {"$.header.source", "$.header.destination", "$.header.path[0].address"}, + ) + + +def test_path_entry_limit_is_optional_and_counts_entries_not_hops() -> None: + eight = b"N0CALL>APRS" + b",WIDE2-2" * 8 + b":>Ready" + nine = b"N0CALL>APRS" + b",WIDE2-2" * 9 + b":>Ready" + assert_conformance(eight, a.RF, set()) + assert_conformance(nine, a.RF, {"$.header.path"}) + assert_conformance(nine, replace(a.RF, max_path_entries=None), set()) + # More than eight entries are also valid under the default internet policy. + assert_conformance(nine, a.APRS_IS, set()) + no_path = replace(a.APRS_IS, max_path_entries=0) + assert_conformance(b"N0CALL>APRS:>Ready", no_path, set()) + assert_conformance(b"N0CALL>APRS,WIDE2-2:>Ready", no_path, {"$.header.path"}) + + +@pytest.mark.parametrize("length", [255, 256, 257]) +def test_rf_information_boundary(length: int) -> None: + raw = b"N0CALL>APRS:~" + b"x" * (length - 1) + paths = {"$.payload"} if length > 256 else set() + assert_conformance(raw, a.RF, paths) + assert_conformance(raw, a.APRS_IS, set()) + assert_conformance(raw, replace(a.RF, max_information_bytes=None), set()) + + +@pytest.mark.parametrize("length", [511, 512, 513]) +def test_internet_line_boundary_includes_header_and_crlf(length: int) -> None: + prefix = b"N0CALL>APRS,TCPIP*,qAC,AE5PL-JS:~" + raw = prefix + b"x" * (length - len(prefix) - 2) + assert_conformance(raw, a.APRS_IS, {"$"} if length > 512 else set()) + assert_conformance(raw, replace(a.APRS_IS, max_tnc2_line_bytes=None), set()) + + +def test_sizes_count_encoded_bytes_and_recompute_after_edits() -> None: + raw = "N0CALL>APRS:>é".encode() + policy = replace(a.RF, max_information_bytes=2, max_tnc2_line_bytes=len(raw) + 1) + packet = assert_conformance(raw, policy, {"$.payload", "$"}) + # Stored diagnostics and original_wire do not control serialization. + changed = replace(packet, payload=a.Status("e")) + assert changed.diagnostics + assert a.check_packet(changed, policy=policy) == () + assert a.serialize_packet(changed, policy=policy) == b"N0CALL>APRS:>e" + cleared = replace(packet, diagnostics=()) + with pytest.raises(a.ConformanceError): + a.serialize_packet(cleared, policy=policy) + + +def test_parse_measures_received_bytes_check_measures_encoded_bytes() -> None: + raw = b"N0CALL>APRS:>\xe9" + policy = replace(a.RF, max_information_bytes=2) + packet = parse(raw, policy) + assert [d.path for d in packet.diagnostics] == ["$.payload.text"] + # Latin-1 fallback becomes two UTF-8 bytes plus the status identifier. + assert {d.path for d in a.check_packet(packet, policy=policy)} == {"$.payload"} + + +def test_zero_size_limits_are_limits_not_unlimited() -> None: + policy = replace(a.RF, max_information_bytes=0, max_tnc2_line_bytes=0) + assert_conformance(b"N0CALL>APRS:>Ready", policy, {"$.payload", "$"}) + + +def test_envelope_limits_do_not_replace_payload_rules() -> None: + unlimited = a.EnvelopePolicy(".*", ".*", ".*") + assert_conformance(b"N0CALL>APRS:>" + b"x" * 63, unlimited, {"$.payload.text"}) + assert isinstance( + a.parse_packet(b"N0 CALL>APRS:>Ready", policy=unlimited), a.Malformed + ) + + +@pytest.mark.parametrize("policy", [a.RF, a.APRS_IS]) +def test_third_party_envelope_policy_applies_only_to_outer_packet( + policy: a.EnvelopePolicy, +) -> None: + # Inner identifiers are text, not outer AX.25 or APRS-IS addresses. + inner = b"n0call-JS>APRS,TCPIP,W1AW*:>Ready" + raw = b"W1AW>APRS,WIDE1-1:}" + inner + packet = assert_conformance(raw, policy, set()) + assert isinstance(packet.payload, a.ThirdParty) + assert packet.payload.packet.diagnostics == () + nested = b"W1AW>APRS:}" + raw + assert_conformance(nested, policy, set()) + # A custom outer pattern must not silently become an inner pattern either. + custom = replace(policy, source_pattern="W1AW", max_path_entries=1) + assert_conformance(raw, custom, set()) + assert_conformance( + raw, replace(custom, max_information_bytes=len(inner)), {"$.payload"} + ) + + +def test_third_party_payload_diagnostics_keep_nested_paths() -> None: + raw = b"W1AW>APRS:}n0call-JS>APRS,TCPIP,W1AW*:>bad|text" + packet = assert_conformance(raw, a.RF, {"$.payload.packet.payload.text"}) + assert isinstance(packet.payload, a.ThirdParty) + assert {d.path for d in packet.payload.packet.diagnostics} == {"$.payload.text"} + + +def test_aprs_is_is_the_default_everywhere() -> None: + raw = b"N0!CALL>APRS:~" + b"x" * 510 + packet = a.parse_packet(raw) + assert isinstance(packet, a.Packet) + assert {d.path for d in packet.diagnostics} == {"$.header.source", "$"} + assert a.parse_tnc2_line(raw + b"\r\n").diagnostics == packet.diagnostics + assert a.check_packet(packet) == a.check_packet(packet, policy=a.APRS_IS) + for operation in (a.serialize_packet, a.serialize_tnc2_line, a.validate_packet): + with pytest.raises(a.ConformanceError): + operation(packet) + + +@pytest.mark.parametrize( + "field", ["source_pattern", "destination_pattern", "path_address_pattern"] +) +def test_invalid_patterns_fail_when_policy_is_constructed(field: str) -> None: + with pytest.raises(ValueError, match=field): + replace(a.RF, **cast(Any, {field: "["})) + with pytest.raises(TypeError, match=field): + replace(a.RF, **cast(Any, {field: b".*"})) + + +@pytest.mark.parametrize( + "field", ["max_path_entries", "max_information_bytes", "max_tnc2_line_bytes"] +) +def test_invalid_limits_fail_when_policy_is_constructed(field: str) -> None: + with pytest.raises(ValueError, match=field): + replace(a.RF, **cast(Any, {field: -1})) + for value in (True, 1.5, "8"): + with pytest.raises(TypeError, match=field): + replace(a.RF, **cast(Any, {field: value})) + + +def test_policies_are_immutable_data() -> None: + with pytest.raises(FrozenInstanceError): + cast(Any, a.RF).max_path_entries = 9 + assert a.EnvelopePolicy(**json.loads(json.dumps(asdict(a.APRS_IS)))) == a.APRS_IS + assert replace(a.RF, max_path_entries=None).max_path_entries is None + assert a.RF.max_path_entries == 8 + + +@pytest.mark.parametrize("bad", [None, "rf", "monitor", "aprs_is", {}, 42]) +def test_entry_points_require_policy_objects(bad: Any) -> None: + packet = a.Packet(a.Header("N0CALL", "APRS"), a.Status("Ready")) + for operation, argument in ( + (a.parse_packet, b"N0CALL>APRS:>Ready"), + (a.parse_tnc2_line, b"N0CALL>APRS:>Ready\r\n"), + (a.serialize_packet, packet), + (a.serialize_tnc2_line, packet), + (a.check_packet, packet), + (a.validate_packet, packet), + ): + with pytest.raises(TypeError, match="policy must be an EnvelopePolicy"): + operation(cast(Any, argument), policy=bad) diff --git a/packages/aprs/tests/packets/test_policies.py b/packages/aprs/tests/packets/test_policies.py index 149a046..d6bb6bb 100644 --- a/packages/aprs/tests/packets/test_policies.py +++ b/packages/aprs/tests/packets/test_policies.py @@ -52,7 +52,7 @@ def test_every_byte_in_user_data_survives(self) -> None: a.Packet( a.Header("N0CALL", "APRS"), a.UserDefined(b"Q", b"1", b"x" * 300) ), - profile="rf", + policy=a.RF, ) def test_line_framing_is_explicit(self) -> None: diff --git a/packages/aprs/tests/packets/test_roundtrip_corpus.py b/packages/aprs/tests/packets/test_roundtrip_corpus.py index 98eb347..8767822 100644 --- a/packages/aprs/tests/packets/test_roundtrip_corpus.py +++ b/packages/aprs/tests/packets/test_roundtrip_corpus.py @@ -18,6 +18,26 @@ (Path(__file__).parents[1] / "roundtrip_exceptions.json").read_text() ) +# This suite tests representation, including deliberately invalid addresses. +# Transport conformance is covered separately; this explicit policy preserves +# the former monitor envelope behavior without changing any vector content. +CORPUS_POLICY = a.EnvelopePolicy(".*", ".*", ".*") +APRS_IS_ADDRESS_REFUSALS = { + "BAD-013", + "FAP-001", + "FAP-002", + "FAP-008", + "FAP-010", + "FAP-014", + "FAP-017", + "FAP-020", + "FAP-044", + "FAP-045", + "FAP-047", + "FAP-051", + "FAP-052", +} + def without_evidence(value: Any) -> Any: if dataclasses.is_dataclass(value) and not isinstance(value, type): @@ -80,10 +100,17 @@ def test_vector_roundtrip(row): if exception: assert exception["kind"] == "conformance" with pytest.raises(a.ConformanceError) as caught: - a.serialize_packet(clean) + a.serialize_packet(clean, policy=CORPUS_POLICY) assert [d.message for d in caught.value.diagnostics] == exception["reasons"] return - wire = a.serialize_packet(clean) + # Verify the stricter default independently of representational round trips. + if row["id"] in APRS_IS_ADDRESS_REFUSALS: + with pytest.raises(a.ConformanceError) as caught: + a.serialize_packet(clean) + assert all(d.path.startswith("$.header.") for d in caught.value.diagnostics) + else: + a.validate_packet(clean) + wire = a.serialize_packet(clean, policy=CORPUS_POLICY) decoded = a.parse_packet(wire) assert isinstance(decoded, a.Packet) if isinstance(clean.payload, a.NMEA): @@ -111,8 +138,10 @@ def test_vector_roundtrip(row): ) same_semantics(clean, decoded) # Canonical bytes stabilize after one pass, including checksum and rounding. - assert a.serialize_packet(without_evidence(decoded)) == wire + assert a.serialize_packet(without_evidence(decoded), policy=CORPUS_POLICY) == wire def test_no_stale_exception_ids(): assert EXCEPTIONS.keys() <= {r["id"] for r in rows()} + assert APRS_IS_ADDRESS_REFUSALS <= {r["id"] for r in rows()} + assert not APRS_IS_ADDRESS_REFUSALS.intersection(EXCEPTIONS) diff --git a/packages/aprs/tests/test_api_contract.py b/packages/aprs/tests/test_api_contract.py index 75be567..90a8a29 100644 --- a/packages/aprs/tests/test_api_contract.py +++ b/packages/aprs/tests/test_api_contract.py @@ -44,7 +44,9 @@ def test_every_public_dataclass_has_an_example(self) -> None: and dataclasses.is_dataclass(getattr(a, name)) } self.assertEqual( - {type(v) for v in (*field_examples(), *payload_examples())}, public + # EnvelopePolicy is configuration data, not a packet JSON model. + {type(v) for v in (*field_examples(), *payload_examples(), a.RF)}, + public, ) def test_public_annotations_resolve(self) -> None: @@ -70,6 +72,7 @@ def test_implementation_modules_are_private(self) -> None: "Path", "HeaderSemantics", "EncodedPacketFields", + "EnvelopeProfile", "DecodeOptions", "EncodeOptions", "get_capabilities", @@ -199,7 +202,6 @@ def test_mic_e_requires_context(self) -> None: def test_option_values_are_checked(self) -> None: for kwargs in ( - {"profile": "radio"}, {"unsupported": "ignore"}, {"malformed": "opaque"}, {"max_third_party_depth": -1}, diff --git a/packages/aprs/tests/test_conformance.py b/packages/aprs/tests/test_conformance.py index 27bcfe3..f14614e 100644 --- a/packages/aprs/tests/test_conformance.py +++ b/packages/aprs/tests/test_conformance.py @@ -13,8 +13,8 @@ SYMBOL = a.Symbol("/", "-") -def findings(payload: Any, profile: a.EnvelopeProfile = "monitor") -> set[str]: - return {d.path for d in a.check_packet(a.Packet(HEADER, payload), profile=profile)} +def findings(payload: Any, policy: a.EnvelopePolicy = a.APRS_IS) -> set[str]: + return {d.path for d in a.check_packet(a.Packet(HEADER, payload), policy=policy)} def complete_weather(**changes: Any) -> a.Weather: @@ -49,40 +49,40 @@ def test_all_findings_are_reported_together(self) -> None: a.Status("bad|status" + "x" * 60), ) self.assertEqual( - {d.path for d in a.check_packet(packet, profile="rf")}, + {d.path for d in a.check_packet(packet, policy=a.RF)}, {"$.header.source", "$.header.path", "$.payload.text"}, ) self.assertEqual({d.path for d in a.check_packet(packet)}, {"$.payload.text"}) - def test_rf_profile_limits(self) -> None: + def test_rf_policy_limits(self) -> None: for source in ("N0CALL-16", "TOOLONG", "n0call"): packet = a.Packet(a.Header(source, "APRS"), a.Status("")) self.assertIsInstance(a.serialize_packet(packet), bytes) with self.subTest(source=source), self.assertRaises(a.ConformanceError): - a.serialize_packet(packet, profile="rf") + a.serialize_packet(packet, policy=a.RF) hops = tuple(a.Hop("D1") for _ in range(8)) a.validate_packet( - a.Packet(a.Header("N0CALL", "APRS", hops), a.Status("")), profile="rf" + a.Packet(a.Header("N0CALL", "APRS", hops), a.Status("")), policy=a.RF ) with self.assertRaises(a.ConformanceError): a.validate_packet( a.Packet(a.Header("N0CALL", "APRS", hops * 2), a.Status("")), - profile="rf", + policy=a.RF, ) large = a.Packet(HEADER, a.UserDefined(b"A", b"B", b"x" * 260)) self.assertEqual( - [d.path for d in a.check_packet(large, profile="rf")], ["$.payload"] + [d.path for d in a.check_packet(large, policy=a.RF)], ["$.payload"] ) self.assertEqual(a.check_packet(large), ()) with self.assertRaises(a.ConformanceError): - a.serialize_packet(a.Packet(HEADER, a.Opaque(b"~" * 257)), profile="rf") + a.serialize_packet(a.Packet(HEADER, a.Opaque(b"~" * 257)), policy=a.RF) def test_rf_header_rules_skip_third_party_inner_headers(self) -> None: inner = a.Packet( a.Header("w1aw", "APRS", (a.Hop("TCPIP", True),)), a.Status("") ) packet = a.Packet(HEADER, a.ThirdParty(inner)) - self.assertEqual(a.check_packet(packet, profile="rf"), ()) + self.assertEqual(a.check_packet(packet, policy=a.RF), ()) def test_control_characters_are_never_sent(self) -> None: for payload in (a.Status("bell\x07"), a.Message("W1AW", "line\nbreak")): @@ -311,7 +311,7 @@ def test_unencoded_extension_fields_are_explicitly_unsupported(self) -> None: with self.assertRaises(a.CodecNotImplementedError): a.serialize_payload(value) with self.assertRaises(a.CodecNotImplementedError): - a.serialize_packet(a.Packet(HEADER, value), profile="rf") + a.serialize_packet(a.Packet(HEADER, value), policy=a.RF) def test_extension_symbols_and_slots(self) -> None: storm = a.Storm( diff --git a/packages/aprs/tests/test_recovery.py b/packages/aprs/tests/test_recovery.py index 6bd8389..7ec50c8 100644 --- a/packages/aprs/tests/test_recovery.py +++ b/packages/aprs/tests/test_recovery.py @@ -58,17 +58,17 @@ def test_out_of_spec_but_usable_packets_still_decode(self) -> None: with self.assertRaises(a.ConformanceError): a.serialize_packet(packet) - def test_rf_profile_reports_instead_of_rejecting(self) -> None: + def test_rf_policy_reports_instead_of_rejecting(self) -> None: raw = b"n0call>APRS,A,B,C,D,E,F,G,H,I:>" + b"x" * 10 - packet = a.parse_packet(raw, profile="rf") + packet = a.parse_packet(raw, policy=a.RF) assert isinstance(packet, a.Packet) self.assertEqual( codes(packet), {("nonconforming", "$.header.source"), ("nonconforming", "$.header.path")}, ) - monitor = a.parse_packet(raw) - assert isinstance(monitor, a.Packet) - self.assertEqual(monitor.diagnostics, ()) + internet = a.parse_packet(raw) + assert isinstance(internet, a.Packet) + self.assertEqual(internet.diagnostics, ()) def test_extensions_leave_the_comment(self) -> None: raw = b"N0CALL>APRS:!4903.50N/07201.75W>088/036/A=001234 hi" @@ -115,10 +115,10 @@ def test_invalid_df_bearing_is_inspectable_but_not_sendable(self) -> None: self.assertEqual(packet.payload.extensions.motion, a.Motion(88, 36)) self.assertIsNone(packet.payload.extensions.bearing) self.assertEqual(codes(packet), {("nonconforming", "$.payload.comment")}) - for profile in ("monitor", "rf"): - self.assertTrue(a.check_packet(packet, profile=profile)) # type: ignore[arg-type] + for policy in (a.APRS_IS, a.RF): + self.assertTrue(a.check_packet(packet, policy=policy)) with self.assertRaises(a.ConformanceError): - a.serialize_packet(packet, profile=profile) # type: ignore[arg-type] + a.serialize_packet(packet, policy=policy) class MalformedTests(unittest.TestCase): diff --git a/packages/aprs/tests/vectors/README.md b/packages/aprs/tests/vectors/README.md index b2687db..d43c20f 100644 --- a/packages/aprs/tests/vectors/README.md +++ b/packages/aprs/tests/vectors/README.md @@ -43,12 +43,19 @@ Sequence rows contain `state_expected` and run all preceding steps through a tes receiver implemented using public packet models. State is not added to the codec. All 1,561 rows pass without xfails. Every row also participates in encoding tests: -1,296 semantic round trips, with checksum repair for three intentionally bad NMEA +1,296 semantic round trips under an explicit permissive envelope policy +(`EnvelopePolicy(".*", ".*", ".*")`), with checksum repair for three intentionally bad NMEA checksums, and 265 explicit malformed/conformance refusals. The reviewed `../roundtrip_exceptions.json` records exact reasons. Adding a new unexpected refusal or silently fixing a recorded one fails the test; this file is not regenerated by `generate_vectors.py`. +The new default `APRS_IS` policy additionally refuses serialization for 13 of +those round-trippable packets because of their address formats. The tests assert +those refusals separately and validate the other 1,283 under the default policy. +This preserves the source vectors while exercising both representation and +transport constraints through the public API. + Round-trip tests remove all evidence fields before serialization, check semantic fields at wire precision, and require canonical bytes to stabilize. Raw wrappers retain `information` because it is their semantic content. JSON round trips are From 977a5233f95172c1ab83ef2919da82c02087e980 Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Sat, 17 Oct 2026 17:55:39 +0000 Subject: [PATCH 07/14] Store historical vector expectations in the public JSON schema --- packages/aprs/docs/API_COVERAGE.md | 23 ++ .../aprs/src/hamkit/aprs/_compatibility.py | 110 +++------ packages/aprs/tests/generate_vectors.py | 140 +++++++++-- packages/aprs/tests/packets/test_corpus.py | 30 ++- packages/aprs/tests/source_details.py | 30 +-- .../tests/test_vector_schema_migration.py | 233 ++++++++++++++++++ packages/aprs/tests/vectors/README.md | 25 +- packages/aprs/tests/vectors/fap.jsonl | 66 ++--- packages/aprs/tests/vectors/oth.jsonl | 4 +- 9 files changed, 501 insertions(+), 160 deletions(-) create mode 100644 packages/aprs/tests/test_vector_schema_migration.py diff --git a/packages/aprs/docs/API_COVERAGE.md b/packages/aprs/docs/API_COVERAGE.md index b7b2990..1deaea4 100644 --- a/packages/aprs/docs/API_COVERAGE.md +++ b/packages/aprs/docs/API_COVERAGE.md @@ -34,6 +34,11 @@ bytes can have different expectations: embedded `!` is a modern beacon versus a legacy X1J position; FAP trims comments, converts weather units, rounds some values, and accepts certain incomplete historical reports. +Schema-only differences are resolved in the stored JSONL expectations, not by +rewriting actual public output during comparison. The offline source-to-schema +generator preserves values while translating names, nesting and equivalent units; +it never consults a parser or expected decoder output. + The public codec is deterministic and preserves the richer wire interpretation. The private `_compatibility` adapter supplies the named historical views and additional receiver facts without adding profile parameters or JSON fields to @@ -49,6 +54,24 @@ and invalid timestamps remain `Malformed` in the public model when required facts cannot be constructed; the historical adapter exposes only available facts. No missing time, coordinate or calibration coefficient is fabricated. +The completed schema migration rewrites 35 expectations (33 FAP, two historical +positions). It stores weather measurements in the public decoder's equivalent +units, compressed weather wind in `extensions.weather`, legacy positions inside +`LegacyPosition`, vendor readings inside `RawWeather.weather`, and captured NMEA +coordinates/speed/course/altitude/symbol/checksum assertions in typed fields. Four +Mic-E comments now store their device marker separately in `device_code`, +preserving every character. +The runtime weather-unit conversion, wrapper flattening, and NMEA source-schema +comparison have been removed. Source snapshots and all raw packet bytes remain +unchanged; inverse-unit and source-value tests check that no information was lost. + +Nineteen additional cases now use direct public JSON comparisons with the main +compatibility view disabled. Bypassing that view elsewhere still exposes 60 +failing vector tests: 58 FAP and two conflicting modern-beacon interpretations. +That count includes real interpretation, incomplete-decoding and acceptance +differences, not schema mismatches. Supplemental source-fact helpers remain in +use, so it is not a count of every dependency on historical receiver behavior. + The 23 sequence occurrences run through a test application receiver using public models. Ownership, deduplication, acknowledgment construction, calibration, bulletin replacement, status fallback and station-specific weather association diff --git a/packages/aprs/src/hamkit/aprs/_compatibility.py b/packages/aprs/src/hamkit/aprs/_compatibility.py index bf117f4..248bb62 100644 --- a/packages/aprs/src/hamkit/aprs/_compatibility.py +++ b/packages/aprs/src/hamkit/aprs/_compatibility.py @@ -57,6 +57,9 @@ def _mic_e_compat(raw: bytes, header: m.Header, broken: bool): # The old receiver reads comment telemetry before DAO and accepts a # short apostrophe hex block as channels 1 and 3. tail = body[8:] + device_code = None + if not mangled and tail[:1] in (b"]", b">"): + device_code, tail = tail[:1].decode(), tail[1:] extra, tail = _extensions.read(tail, d.Symbol(chr(body[7]), chr(body[6]))) altitude = None match = re.search(rb"([!-{]{3})\}", tail) @@ -88,6 +91,7 @@ def _mic_e_compat(raw: bytes, header: m.Header, broken: bool): p = replace( base, + device_code=device_code, extensions=e, latitude_deg=dao_offset(base.latitude_deg, e.dao, "latitude"), longitude_deg=dao_offset(base.longitude_deg, e.dao, "longitude"), @@ -96,41 +100,6 @@ def _mic_e_compat(raw: bytes, header: m.Header, broken: bool): return p, mangled, short -def _weather_view(w: dict[str, Any]) -> dict[str, Any]: - w = dict(w) - for name in ( - "wind_speed", - "gust", - "temperature", - "rain_1h", - "rain_24h", - "rain_since_midnight", - "snow_24h", - ): - reading = w.get(name) - if reading is None: - continue - reading = dict(reading) - v = reading["value"] - unit = reading["unit"] - if name in ("wind_speed", "gust"): - if unit in ("mph", "disputed_knots_or_mph"): - factor = 0.44704 - elif unit == "knots": - factor = 1852 / 3600 - elif unit == "km/h": - factor = 1 / 3.6 - else: - factor = 1 - reading.update(value=None if v is None else v * factor, unit="m/s") - elif name == "temperature" and unit == "fahrenheit": - reading.update(value=None if v is None else (v - 32) / 1.8, unit="celsius") - elif unit == "inches": - reading.update(value=None if v is None else v * 25.4, unit="mm") - w[name] = reading - return w - - def _receiver_rejects(raw: bytes, p: m.Packet | m.Malformed, options: dict) -> bool: envelope, sep, body = raw.partition(b":") source, arrow, route = envelope.partition(b">") @@ -190,14 +159,6 @@ def view( result["payload"] = to_json_dict( m.Beacon(raw.partition(b":")[2].decode("latin1")), include_defaults=True ) - if ( - isinstance(packet, m.Packet) - and isinstance(packet.payload, m.LegacyPosition) - and profile == "historical-1.0" - ): - result["payload"] = to_json_dict( - packet.payload.position, include_defaults=True - ) return result, rejected _envelope, _, body = raw.partition(b":") header = packet.header @@ -287,13 +248,12 @@ def view( return result, True p = result.get("payload", {}) if p.get("type") == "legacy_position": - p = result["payload"] = p["position"] - p["type"] = "position" + p = p["position"] if p.get("type") == "raw_weather" and p.get("weather"): - p = result["payload"] = p["weather"] - p["type"] = "weather" + p = p["weather"] if p.get("type") == "nmea": p["symbol"] = None + p.setdefault("metadata", {}).setdefault("checksum_valid", None) if p["sentence"].get("course_deg") is not None: p["sentence"]["course_deg"] = round(p["sentence"]["course_deg"]) if p.get("type") == "mic_e": @@ -321,7 +281,9 @@ def view( if motion and motion.get("course_deg") == 0: motion["course_deg"] = 360 weather = ( - p if p.get("type") == "weather" else p.get("extensions", {}).get("weather") + p + if p.get("type") == "weather" or isinstance(payload, m.RawWeather) + else p.get("extensions", {}).get("weather") ) if weather is not None: code = (weather.get("software_code") or "") + (weather.get("device_code") or "") @@ -351,20 +313,11 @@ def view( p["comment"] = tail if p.get("type") == "weather": weather["comment"] = tail - converted = _weather_view(weather) - if p.get("type") == "weather": - result["payload"] = converted - else: - p["extensions"]["weather"] = converted - if compression: - wind = weather.get("wind_direction") - speed = weather.get("wind_speed") - p["extensions"]["motion"] = ( - {"course_deg": wind["value"], "speed_knots": speed["value"]} - if wind and speed - else None - ) - converted["wind_direction"] = converted["wind_speed"] = None + # FAP selects the mph interpretation of the disputed uncompressed + # wind field. This is a semantic choice, not a unit/schema conversion. + speed = weather.get("wind_speed") + if speed and speed["unit"] == "disputed_knots_or_mph": + weather["wind_speed"] = {**speed, "unit": "mph"} if ( isinstance(payload, m.Position) and payload.symbol.code == "_" @@ -381,16 +334,28 @@ def view( return result, rejected -def facts(raw: bytes, options: dict | None = None) -> dict[str, Any]: +def facts( + raw: bytes, options: dict | None = None, *, packet: m.Packet | None = None +) -> dict[str, Any]: """Historical receiver facts not represented as stored public-model fields. These include display resolution, raw timestamps, and optional vendor sensors. Kept separate so a receiver policy cannot alter the public JSON contract. """ options = options or {} - projected, _ = view(raw, "compatibility-fap", options) + if packet is None: + projected, _ = view(raw, "compatibility-fap", options) + parsed = parse_packet(raw) + else: + # Schema-only cases already have their public packet; their supplemental + # source facts must not require a compatibility view of that packet. + projected = to_json_dict(packet, include_defaults=True) + parsed = packet p = projected.get("payload", {}) - packet = parse_packet(raw) + if p.get("type") == "legacy_position": + p = p["position"] + elif p.get("type") == "raw_weather" and p.get("weather"): + p = {"type": "weather", **p["weather"]} body = raw.partition(b":")[2] ext = p.get("extensions", {}) comp = p.get("compression") @@ -428,14 +393,15 @@ def facts(raw: bytes, options: dict | None = None) -> dict[str, Any]: if dao and dao.get("encoding"): result["PosResolution"] = 1.852 if dao["encoding"] == "decimal" else 0.1852 if body[:1] in (b"`", b"'"): - assert packet.header is not None - dest = packet.header.destination.split("-")[0] + assert parsed.header is not None + dest = parsed.header.destination.split("-")[0] result["MBits"] = "".join( "1" if "A" <= c <= "K" or "P" <= c <= "Z" else "0" for c in dest[:3] ) - _, result["MiceMangled"], _ = _mic_e_compat( - body, packet.header, options.get("accept_broken_mice", False) - ) + if packet is None or options.get("accept_broken_mice", False): + _, result["MiceMangled"], _ = _mic_e_compat( + body, parsed.header, options.get("accept_broken_mice", False) + ) if options.get("raw_timestamp") and body[:1] in (b"/", b"@"): result["RawTimestamp"] = body[1:7].decode() if (body[:1] in (b"/", b"@", b">") and body[1:8] == b"000000z") or ( @@ -449,8 +415,8 @@ def facts(raw: bytes, options: dict | None = None) -> dict[str, Any]: + "timestamp: invalid day: 00", } ] - if isinstance(packet, m.Packet) and isinstance(packet.payload, m.NMEA): - n = packet.payload + if isinstance(parsed, m.Packet) and isinstance(parsed.payload, m.NMEA): + n = parsed.payload result["ChecksumOK"] = n.metadata.checksum_valid fields = n.metadata.fields_raw from . import _nmea as sentences diff --git a/packages/aprs/tests/generate_vectors.py b/packages/aprs/tests/generate_vectors.py index 1579aee..0231366 100644 --- a/packages/aprs/tests/generate_vectors.py +++ b/packages/aprs/tests/generate_vectors.py @@ -561,6 +561,15 @@ def fap_projection(e: JSON, packet: str) -> JSON: normal["telemetry_definition"] = definition result = translate(normal) payload = result.get("payload", {}) + comment = payload.get("comment", "") + if ( + payload.get("type") == "mic_e" + and comment[:1] in ("]", ">") + and packet.partition(":")[2][9:10] == comment[:1] + ): + # Split the captured marker into its public field without losing text. + # A broken fixed-width body must not be reinterpreted by this migration. + payload["device_code"], payload["comment"] = comment[0], comment[1:] if payload.get("type") not in ( "position", "mic_e", @@ -634,42 +643,132 @@ def fap_projection(e: JSON, packet: str) -> JSON: if f.get("Wx") is not None: wx = f["Wx"] mapped_wx = {} - for key, target, unit in ( - ("WindDirection", "wind_direction", "degrees"), - ("WindSpeed", "wind_speed", "m/s"), - ("WindGust", "gust", "m/s"), - ("Temp", "temperature", "celsius"), - ("Humidity", "humidity", "percent"), - ("Pressure", "pressure", "hPa"), - ("Rain1h", "rain_1h", "mm"), - ("Rain24h", "rain_24h", "mm"), - ("RainMidnight", "rain_since_midnight", "mm"), - ("Snow24h", "snow_24h", "mm"), - ("Luminosity", "luminosity", "W/m2"), + vendor = packet.partition(":")[2].startswith(("$ULTW", "!!")) + for key, target, unit, scale, offset in ( + ("WindDirection", "wind_direction", "degrees", 1, 0), + ( + "WindSpeed", + "wind_speed", + "m/s" if vendor else "mph", + 1 if vendor else 1 / 0.44704, + 0, + ), + ( + "WindGust", + "gust", + "m/s" if vendor else "mph", + 1 if vendor else 1 / 0.44704, + 0, + ), + ( + "Temp", + "temperature", + "celsius" if vendor else "fahrenheit", + 1 if vendor else 1.8, + 0 if vendor else 32, + ), + ("Humidity", "humidity", "percent", 1, 0), + ("Pressure", "pressure", "hPa", 1, 0), + ( + "Rain1h", + "rain_1h", + "mm" if vendor else "inches", + 1 if vendor else 1 / 25.4, + 0, + ), + ( + "Rain24h", + "rain_24h", + "mm" if vendor else "inches", + 1 if vendor else 1 / 25.4, + 0, + ), + ( + "RainMidnight", + "rain_since_midnight", + "mm" if vendor else "inches", + 1 if vendor else 1 / 25.4, + 0, + ), + ( + "Snow24h", + "snow_24h", + "mm" if vendor else "inches", + 1 if vendor else 1 / 25.4, + 0, + ), + ("Luminosity", "luminosity", "W/m2", 1, 0), ): if wx.get(key) is not None: - mapped_wx[target] = {"value": wx[key], "unit": unit} + # Convert captured expectations, never values from the decoder. + # No rounding: the original physical measurement is preserved. + mapped_wx[target] = {"value": wx[key] * scale + offset, "unit": unit} + if normal.get("format") == "compressed": + # FAP flattens the compressed weather wind pair into Course/Speed. + # Our schema places that same pair inside extensions.weather. + motion = payload.get("extensions", {}).pop("motion", {}) + for key, target, unit in ( + ("course_deg", "wind_direction", "degrees"), + ("speed_knots", "wind_speed", "knots"), + ): + if key in motion: + mapped_wx[target] = {"value": motion[key], "unit": unit} if payload.get("type") == "weather": payload.update(mapped_wx) else: payload.setdefault("extensions", {})["weather"] = mapped_wx + if vendor: + payload.pop("type") + result["payload"] = { + "type": "raw_weather", + "format": "ultimeter_2000", + "information": packet.partition(":")[2], + "weather": payload, + } if f.get("Format") == "nmea": - # The snapshot does not capture individual NMEA sentence fields; do not - # invent them from FAP's flattened station fix. Assert the public family. - result["payload"] = {"type": "nmea"} - if payload.get("extensions", {}).get("phg") and payload.get("type") == "position": + # Keep the snapshot's values (including rounded course and absent symbol) + # in typed NMEA fields. Missing time/fix fields are not invented. + sentence: JSON = {"type": packet.partition(":")[2][3:6].lower()} + if normal.get("position"): + sentence["coordinates"] = select( + normal["position"], "latitude_deg longitude_deg" + ) + for key, target, scale in ( + ("Altitude", "altitude_msl_m", 1), + ("Speed", "speed_knots", 1 / 1.852), + ("Course", "course_deg", 1), + ): + if f.get(key) is not None: + sentence[target] = f[key] * scale + table, code = f.get("SymbolTable"), f.get("SymbolCode") + result["payload"] = { + "type": "nmea", + "sentence": sentence, + "symbol": ( + {"table_id": table, "code": code} + if table is not None and code is not None + else None + ), + "metadata": {"checksum_valid": f["ChecksumOK"]}, + } + return result + + +def nest_legacy_position(result: JSON, packet: str) -> None: + """Use the existing wrapper for source assertions identifying a position.""" + payload = result.get("payload", {}) + if payload.get("type") == "position": body = packet.partition(":")[2] prefix, marker, _ = body.partition("!") if marker and prefix and not body.startswith(("!", "=", "/", "@")): - # FAP flattens legacy beacon positions; our public model preserves - # both the beacon prefix and the nested decoded position. + # The source supplies all position values. The wire supplies only + # the literal prefix, which the finalized public schema preserves. payload.pop("type") result["payload"] = { "type": "legacy_position", "prefix": prefix, "position": payload, } - return result def records() -> list[JSON]: @@ -722,6 +821,7 @@ def records() -> list[JSON]: if row["profile"] == "compatibility-fap" else translate(tracked) ) + nest_legacy_position(row["expected"], row["packet"]) row["unmapped"] = sorted(leaf_paths(step["expected"]) - used) if "payload" not in row["expected"]: row[ diff --git a/packages/aprs/tests/packets/test_corpus.py b/packages/aprs/tests/packets/test_corpus.py index 6b4cb00..fb99fd2 100644 --- a/packages/aprs/tests/packets/test_corpus.py +++ b/packages/aprs/tests/packets/test_corpus.py @@ -15,6 +15,30 @@ DIRECTORY = Path(__file__).parents[1] / "vectors" +# These cases previously differed only in schema/units. Their persisted +# expectations now match the public schema, so bypass the compatibility view. +SCHEMA_NATIVE_IDS = { + "FAP-005", + "FAP-036", + "FAP-345", + "FAP-346", + "FAP-032", + "FAP-033", + "FAP-406", + "FAP-407", + "FAP-477", + "FAP-478", + "FAP-479", + "FAP-480", + "FAP-481", + "FAP-491", + "FAP-492", + "FAP-493", + "FAP-494", + "OTH-034", + "OTH-036", +} + def differences(actual: Any, expected: Any, path: str = "$") -> list[str]: if isinstance(expected, dict): @@ -72,7 +96,7 @@ def public_phg_row(row: dict[str, Any]) -> bool: def check(row: dict[str, Any]) -> None: raw = row["packet"].encode("latin-1") - if public_phg_row(row): + if public_phg_row(row) or row["id"] in SCHEMA_NATIVE_IDS: packet = aprs.parse_packet(raw) assert isinstance(packet, aprs.Packet) actual = aprs.to_json_dict(packet, include_defaults=True) @@ -98,7 +122,9 @@ def check(row: dict[str, Any]) -> None: elif public_phg_row(row): errors.extend(check_public_phg(row, packet)) else: - errors.extend(check_fap(row)) + errors.extend( + check_fap(row, packet if row["id"] in SCHEMA_NATIVE_IDS else None) + ) if row.get("sequence"): from receiver import Receiver diff --git a/packages/aprs/tests/source_details.py b/packages/aprs/tests/source_details.py index 1061791..c3962c3 100644 --- a/packages/aprs/tests/source_details.py +++ b/packages/aprs/tests/source_details.py @@ -413,13 +413,13 @@ def check_public_phg(row, packet): return errors -def check_fap(row): +def check_fap(row, packet=None): from packets.test_corpus import differences - from hamkit.aprs._compatibility import facts, view + from hamkit.aprs._compatibility import facts raw = row["packet"].encode("latin1") - f = facts(raw, row.get("options")) + f = facts(raw, row.get("options"), packet=packet) actual = {"fap_fields": f} errors = [] for path in row.get("unmapped", []): @@ -429,30 +429,6 @@ def check_fap(row): errors.append(path + ": no derived assertion") continue errors.extend(differences(value, at(row["source_expected"], path), path)) - # FAP flattens NMEA sentences; the JSON schema keeps them typed. Check the - # flattened observations too, not just that an NMEA family was recognized. - expected = row["source_expected"]["fap_fields"] - if expected.get("Format") == "nmea": - projected, _ = view(raw, "compatibility-fap", row.get("options")) - p = projected["payload"] - s = p["sentence"] - coords = s.get("coordinates") or {} - values = { - "Latitude": coords.get("latitude_deg"), - "Longitude": coords.get("longitude_deg"), - "Altitude": s.get("altitude_msl_m"), - "Speed": ( - s.get("speed_knots") * 1.852 - if s.get("speed_knots") is not None - else None - ), - "Course": s.get("course_deg"), - "SymbolTable": (p.get("symbol") or {}).get("table_id"), - "SymbolCode": (p.get("symbol") or {}).get("code"), - } - errors.extend( - differences(values, {k: expected[k] for k in values}, "$.fap_fields") - ) return errors diff --git a/packages/aprs/tests/test_vector_schema_migration.py b/packages/aprs/tests/test_vector_schema_migration.py new file mode 100644 index 0000000..219b06e --- /dev/null +++ b/packages/aprs/tests/test_vector_schema_migration.py @@ -0,0 +1,233 @@ +# SPDX-FileCopyrightText: 2024-present Adam Fourney +# SPDX-License-Identifier: MIT +"""Stored expectations preserve source information without runtime reshaping.""" + +import copy + +import pytest +from generate_vectors import records +from packets.test_corpus import SCHEMA_NATIVE_IDS, check, rows + +from hamkit import aprs as a + +ROWS = rows() +FAP_ACCEPTED = [ + row + for row in ROWS + if row["profile"] == "compatibility-fap" and row["outcome"] == "accept" +] +WEATHER = [ + row + for row in FAP_ACCEPTED + if row["source_expected"]["fap_fields"]["Wx"] is not None +] +NMEA = [ + row + for row in FAP_ACCEPTED + if row["source_expected"]["fap_fields"]["Format"] == "nmea" +] +LEGACY = [ + row + for row in ROWS + if row["expected"].get("payload", {}).get("type") == "legacy_position" +] + + +def test_regeneration_does_not_consult_decoders(monkeypatch): + from hamkit.aprs import _codec, _compatibility + + def forbidden(*args, **kwargs): + raise AssertionError("Expectations must come from source assertions") + + for module in (a, _codec, _compatibility): + for name in ("parse_packet", "parse_payload"): + monkeypatch.setattr(module, name, forbidden) + for name in ("view", "facts", "rejected_facts"): + monkeypatch.setattr(_compatibility, name, forbidden) + assert sorted(records(), key=lambda row: row["id"]) == sorted( + ROWS, key=lambda row: row["id"] + ) + + +@pytest.mark.parametrize( + "row", [r for r in ROWS if r["id"] in SCHEMA_NATIVE_IDS], ids=lambda row: row["id"] +) +def test_schema_only_cases_bypass_compatibility_view(monkeypatch, row): + from hamkit.aprs import _compatibility + + def forbidden(*args, **kwargs): + raise AssertionError("Schema changes belong in persisted expectations") + + original_facts = _compatibility.facts + + def supplemental(raw, options=None, *, packet=None): + assert isinstance(packet, a.Packet) + return original_facts(raw, options, packet=packet) + + monkeypatch.setattr(_compatibility, "view", forbidden) + monkeypatch.setattr(_compatibility, "facts", supplemental) + monkeypatch.setattr(_compatibility, "rejected_facts", forbidden) + monkeypatch.setattr(_compatibility, "_mic_e_compat", forbidden) + check(row) + + +def test_schema_only_coverage_is_not_empty_or_stale(): + assert len(SCHEMA_NATIVE_IDS) == 19 + assert SCHEMA_NATIVE_IDS <= {row["id"] for row in ROWS} + + +@pytest.mark.parametrize("row", WEATHER, ids=lambda row: row["id"]) +def test_weather_expectations_preserve_physical_measurements(row): + """Convert stored measurements BACK to the captured source units.""" + fields = row["source_expected"]["fap_fields"] + expected = row["expected"]["payload"] + if expected["type"] == "raw_weather": + assert expected["information"] == row["packet"].partition(":")[2] + assert expected["format"] == "ultimeter_2000" + weather = expected["weather"] + elif expected["type"] == "weather": + weather = expected + else: + weather = expected["extensions"]["weather"] + for source, target in ( + ("WindDirection", "wind_direction"), + ("WindSpeed", "wind_speed"), + ("WindGust", "gust"), + ("Temp", "temperature"), + ("Humidity", "humidity"), + ("Pressure", "pressure"), + ("Rain1h", "rain_1h"), + ("Rain24h", "rain_24h"), + ("RainMidnight", "rain_since_midnight"), + ("Snow24h", "snow_24h"), + ("Luminosity", "luminosity"), + ): + original = fields["Wx"][source] + if original is None: + continue + reading = weather[target] + value, unit = reading["value"], reading["unit"] + if source in ("WindSpeed", "WindGust"): + assert unit in ("mph", "m/s") # Do not weaken mph to disputed units. + value = value * 0.44704 if unit == "mph" else value + elif source == "Temp": + assert unit in ("fahrenheit", "celsius") + value = (value - 32) / 1.8 if unit == "fahrenheit" else value + elif source.startswith("Rain") or source == "Snow24h": + assert unit in ("inches", "mm") + value = value * 25.4 if unit == "inches" else value + else: + assert ( + unit + == { + "WindDirection": "degrees", + "Humidity": "percent", + "Pressure": "hPa", + "Luminosity": "W/m2", + }[source] + ) + assert value == pytest.approx(original, abs=1e-12, rel=1e-12) + if fields["Format"] == "compressed": + assert "motion" not in expected["extensions"] + assert weather["wind_direction"] == { + "value": fields["Course"], + "unit": "degrees", + } + assert weather["wind_speed"]["unit"] == "knots" + assert weather["wind_speed"]["value"] * 1.852 == pytest.approx( + fields["Speed"], abs=1e-12 + ) + # Existing non-model observations remain explicit and checked separately. + for field in ("TempIn", "HumidityIn", "Radiation", "BatteryVoltage", "WaterLevel"): + assert f"$.fap_fields.Wx.{field}" in row["unmapped"] + + +@pytest.mark.parametrize("row", NMEA, ids=lambda row: row["id"]) +def test_nmea_observations_are_stored_in_typed_fields(row): + source = row["source_expected"]["fap_fields"] + payload = row["expected"]["payload"] + sentence = payload["sentence"] + assert sentence["coordinates"] == { + "latitude_deg": source["Latitude"], + "longitude_deg": source["Longitude"], + } + if source["Speed"] is not None: + assert sentence["speed_knots"] * 1.852 == pytest.approx( + source["Speed"], abs=1e-12 + ) + if source["Course"] is not None: + assert sentence["course_deg"] == source["Course"] + if source["Altitude"] is not None: + assert sentence["altitude_msl_m"] == source["Altitude"] + assert payload["symbol"] is None + assert source["SymbolTable"] is None and source["SymbolCode"] is None + assert payload["metadata"]["checksum_valid"] == source["ChecksumOK"] + # The source did not assert these sentence fields. Never invent them to make + # an incomplete historical GLL report into a constructible public model. + assert "time_utc" not in sentence and "fix_status" not in sentence + + +@pytest.mark.parametrize("row", LEGACY, ids=lambda row: row["id"]) +def test_legacy_wrappers_preserve_position_values_and_comment(row): + expected = row["expected"]["payload"] + assert ( + expected["prefix"] + "!" + == row["packet"].partition(":")[2].partition("!")[0] + "!" + ) + position = expected["position"] + source = row["source_expected"] + if row["profile"] == "compatibility-fap": + fields = source["fap_fields"] + assert position["latitude_deg"] == fields["Latitude"] + assert position["longitude_deg"] == fields["Longitude"] + assert position["comment"] == fields["Comment"] + else: + assert position["latitude_deg"] == source["position"]["latitude_deg"] + assert position["longitude_deg"] == source["position"]["longitude_deg"] + assert position["comment"] == source["comment"] + + +@pytest.mark.parametrize("identifier", ["FAP-032", "FAP-357", "FAP-406", "FAP-491"]) +def test_migrated_values_are_asserted_not_only_archived(identifier): + row = copy.deepcopy(next(r for r in ROWS if r["id"] == identifier)) + payload = row["expected"]["payload"] + if identifier == "FAP-032": + payload["extensions"]["weather"]["wind_direction"]["value"] += 1 + elif identifier == "FAP-357": + assert payload["sentence"]["course_deg"] == 28 # Wire contains 27.9. + payload["sentence"]["course_deg"] = 27.9 + elif identifier == "FAP-406": + payload["position"]["latitude_deg"] += 1 + else: + payload["weather"]["temperature"]["value"] += 1 + with pytest.raises(AssertionError): + check(row) + + +def test_conflicting_modern_beacon_interpretation_is_not_rewritten(): + for identifier in ("OTH-033", "OTH-035"): + row = next(r for r in ROWS if r["id"] == identifier) + assert row["expected"]["payload"] == { + "type": "beacon", + "text": row["source_expected"]["raw_text"], + } + + +@pytest.mark.parametrize("identifier", ["FAP-005", "FAP-036", "FAP-345", "FAP-346"]) +def test_mic_e_device_field_preserves_captured_comment(identifier): + row = next(r for r in ROWS if r["id"] == identifier) + payload = row["expected"]["payload"] + assert payload["device_code"] == row["packet"].partition(":")[2][9] + assert ( + payload["device_code"] + payload["comment"] + == row["source_expected"]["fap_fields"]["Comment"] + ) + + +def test_broken_mic_e_comment_is_not_reinterpreted(): + row = next(r for r in ROWS if r["id"] == "FAP-349") + assert "device_code" not in row["expected"]["payload"] + assert ( + row["expected"]["payload"]["comment"] + == row["source_expected"]["fap_fields"]["Comment"] + ) diff --git a/packages/aprs/tests/vectors/README.md b/packages/aprs/tests/vectors/README.md index d43c20f..d305d0f 100644 --- a/packages/aprs/tests/vectors/README.md +++ b/packages/aprs/tests/vectors/README.md @@ -13,9 +13,11 @@ python -m pytest packages/aprs/tests -q python packages/aprs/tests/generate_vectors.py ``` -The generator translates source assertions, never parser output. Schema changes -include units/enums, explicit absence, telemetry channel padding, structured query -responses and the existing typed NMEA hierarchy. `packet` is a Latin-1 byte carrier: +The generator translates source assertions, never parser output. The translated +expectations are stored in these JSONL files; comparisons do not convert them +back to the source schema. Schema changes include units/enums, explicit absence, +telemetry channel padding, structured query responses and typed NMEA sentences. +`packet` is a Latin-1 byte carrier: use `packet.encode("latin-1")`, including for control/high-bit bytes. `expected` is a subset of the public JSON representation. Missing keys make no @@ -30,7 +32,22 @@ is represented by the public diagnostic scheme rather than copied verbatim. Some profiles conflict for the same bytes. `_compatibility.py` expresses those receiver policies without changing the public API or consulting expected values. The canonical codec retains precise wire data; the adapter selects historical -comment trimming, unit conventions, acceptance and warning policies. +comment trimming, disputed wind-unit interpretation, acceptance and warning policies. + +The schema migration rewrote 35 stored expectations (33 FAP and two historical +position cases): equivalent weather units, compressed weather wind nesting, +`LegacyPosition`/`RawWeather` wrappers, four flattened NMEA observations, and four Mic-E device markers split from comments. +Captured rounded values, whitespace, absent symbols, and incomplete reports were +not changed to agree with the decoder. For example, FAP-357 still expects course +28 despite the wire containing 27.9. Uncompressed FAP wind retains an explicit +mph interpretation rather than changing to the public decoder's disputed unit. + +Nineteen formerly adapter-dependent cases now compare public packet JSON directly, +with regression tests disabling the compatibility view. Offline conversion tests +reverse unit changes back to the captured measurements and verify stored fields +against source values. The original `source_expected` snapshots remain immutable +provenance; their supplemental observations without public model fields remain +explicitly asserted, not discarded or silently added to the packet schema. All 29 PHG/PHGR projections (including 15 FAP vectors) instead exercise the public API directly. Regression tests disable compatibility functions while checking diff --git a/packages/aprs/tests/vectors/fap.jsonl b/packages/aprs/tests/vectors/fap.jsonl index fa6ec94..7a77fdd 100644 --- a/packages/aprs/tests/vectors/fap.jsonl +++ b/packages/aprs/tests/vectors/fap.jsonl @@ -2,7 +2,7 @@ {"id":"FAP-002","title":"TestAPRSISPathIPv6BeforeQConstruct","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_paths_test.go#L23","packet":"IQ3VQ>APD225,200106F8020204020000000000000002,TCPIP*,qAI,IQ3VQ,THIRD,92E5A2B6,T2HUB1,200106F8020204020000000000000002,T2FINLAND:!4526.66NI01104.68E#PHG21306/- Lnx APRS Srv - sez. ARI VR EST","outcome":"reject","source_expected":{"fap_header":{"source":"IQ3VQ","destination":"APD225","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_badchars: digipeater callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"IQ3VQ>APD225,200106F8020204020000000000000002,TCPIP*,qAI,IQ3VQ,THIRD,92E5A2B6,T2HUB1,200106F8020204020000000000000002,T2FINLAND:!4526.66NI01104.68E#PHG21306/- Lnx APRS Srv - sez. ARI VR EST"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-003","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-1>APRS:;LEADER *092345z4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-004","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-1>APRS:)AID #2!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-005","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-2>TQ4W2V,WIDE2-1,qAo,IGATE:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"mic_e","comment":"]=","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":6}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-005","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-2>TQ4W2V,WIDE2-1,qAo,IGATE:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"mic_e","comment":"=","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"device_code":"]","extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":6}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-006","title":"TestWithAX25/valid_AX.25_packet","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB-9>APX200,OH7AA-1*,WIDE2-1:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH7LZB testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APX200","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH7LZB testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APX200","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH7LZB testing","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-007","title":"TestWithAX25/valid_AX.25_no_digipeaters","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-008","title":"TestWithAX25/invalid_AX.25_source_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"TOOLONGCALLSIGN>APRS:>status","outcome":"reject","source_expected":{"fap_header":{"source":"TOOLONGCALLSIGN","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_noax25: source callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"TOOLONGCALLSIGN>APRS:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -29,11 +29,11 @@ {"id":"FAP-029","title":"TestCompressedNonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L15","packet":"OH2KKU-15>APRS,TCPIP*,qAC,FOURTH:!I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU-15","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.052010101699544,"Longitude":24.504507437140035,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"I","SymbolCode":"&","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":8.10520393696385,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"igate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU-15","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"igate testing","messaging":false,"latitude_deg":60.052010101699544,"longitude_deg":24.504507437140035,"symbol":{"table_id":"I","code":"&"},"extensions":{"range":{"miles":5.036340233637961}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-030","title":"TestCompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L107","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-031","title":"TestCompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L196","packet":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol ","outcome":"reject","source_expected":{"fap_header":{"source":"KJ4ERJ-AL","destination":"APWW05","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: comp_short: compressed position too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"original_wire":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol "},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-032","title":"TestCompressedWeather","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L206","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg001t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":272},"weather":{"gust":{"value":0.44704,"unit":"m/s"},"temperature":{"value":12.222222222222221,"unit":"celsius"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":2.54,"unit":"mm"},"rain_since_midnight":{"value":2.54,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-033","title":"TestCompressedWeatherSpaceGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L255","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":272},"weather":{"temperature":{"value":12.222222222222221,"unit":"celsius"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":2.54,"unit":"mm"},"rain_since_midnight":{"value":2.54,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-032","title":"TestCompressedWeather","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L206","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg001t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"gust":{"value":1.0,"unit":"mph"},"temperature":{"value":54.0,"unit":"fahrenheit"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.1,"unit":"inches"},"rain_since_midnight":{"value":0.1,"unit":"inches"},"wind_direction":{"value":272,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"knots"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-033","title":"TestCompressedWeatherSpaceGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L255","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"temperature":{"value":54.0,"unit":"fahrenheit"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.1,"unit":"inches"},"rain_since_midnight":{"value":0.1,"unit":"inches"},"wind_direction":{"value":272,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"knots"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} {"id":"FAP-034","title":"TestDAOUncompressedHumanReadable","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L13","packet":"K0ELR-15>APOT02,WIDE1-1,WIDE2-1,qAo,K0ELR:/102033h4133.03NX09029.49Wv204/000!W33! 12.3V 21C/A=000665","outcome":"accept","source_expected":{"fap_header":{"source":"K0ELR-15","destination":"APOT02","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"K0ELR","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":41.55055,"Longitude":-90.49155,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"X","SymbolCode":"v","Speed":0,"Course":204,"Altitude":202.692,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"12.3V 21C","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"K0ELR-15","destination":"APOT02","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"K0ELR","repeated":false}]},"payload":{"type":"position","comment":"12.3V 21C","messaging":false,"latitude_deg":41.55055,"longitude_deg":-90.49155,"ambiguity":0,"symbol":{"table_id":"X","code":"v"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":204},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":665.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-035","title":"TestDAOCompressedBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L53","packet":"OH7LZB-9>APZMDR,WIDE2-2,qAo,OH2RCH:!/0(yiTc5y>{2O http://aprs.fi/!w11!","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APZMDR","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2RCH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.15273087861335,"Longitude":24.662220910798077,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":11.909203712770884,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APZMDR","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2RCH","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.15273087861335,"longitude_deg":24.662220910798077,"symbol":{"table_id":"/","code":">"},"extensions":{"range":{"miles":7.400036109601728}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-036","title":"TestDAOMicEBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L87","packet":"OH2JCQ-9>VP1U88,TRACE2-2,qAR,OH2RDK-5:'5'9\"^Rj/]\"4-}Foo !w66!Bar","outcome":"accept","source_expected":{"fap_header":{"source":"OH2JCQ-9","destination":"VP1U88","digipeaters":[{"Call":"TRACE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH2RDK-5","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":60.26470512820512,"Longitude":25.18820512820513,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"j","Speed":122.232,"Course":254,"Altitude":22,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Foo Bar","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH2JCQ-9","destination":"VP1U88","path":[{"address":"TRACE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"OH2RDK-5","repeated":false}]},"payload":{"type":"mic_e","comment":"]Foo Bar","latitude_deg":60.26470512820512,"longitude_deg":25.18820512820513,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"extensions":{"motion":{"speed_knots":66.0,"course_deg":254},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":22}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-036","title":"TestDAOMicEBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L87","packet":"OH2JCQ-9>VP1U88,TRACE2-2,qAR,OH2RDK-5:'5'9\"^Rj/]\"4-}Foo !w66!Bar","outcome":"accept","source_expected":{"fap_header":{"source":"OH2JCQ-9","destination":"VP1U88","digipeaters":[{"Call":"TRACE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH2RDK-5","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":60.26470512820512,"Longitude":25.18820512820513,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"j","Speed":122.232,"Course":254,"Altitude":22,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Foo Bar","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH2JCQ-9","destination":"VP1U88","path":[{"address":"TRACE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"OH2RDK-5","repeated":false}]},"payload":{"type":"mic_e","comment":"Foo Bar","latitude_deg":60.26470512820512,"longitude_deg":25.18820512820513,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"device_code":"]","extensions":{"motion":{"speed_knots":66.0,"course_deg":254},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":22}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-037","title":"TestParseStatus","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L12","packet":"OH7LZB>APRS:>Testing status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"Testing status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"Testing status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-038","title":"TestParseNoBody","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L27","packet":"OH7LZB>APRS","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: packet_no_body: no packet body after header"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-039","title":"TestParseNoGT","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L35","packet":"OH7LZB:body","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_nogt: no '>' in header"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB:body"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -342,8 +342,8 @@ {"id":"FAP-342","title":"TestEncodeMessageNoID","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L323","packet":"OH7AA-1>APRS::N0CALL :Hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Hello world","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7AA-1","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Hello world","message_id":null}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-343","title":"TestMessageErrors/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L444","packet":"OH7AA-1>APRS::N0CALL ","outcome":"reject","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: msg_short: message packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7AA-1>APRS::N0CALL "},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-344","title":"TestMessageErrors/missing_colon_after_addressee","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L444","packet":"OH7AA-1>APRS::N0CALL XHello world","outcome":"reject","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: msg_inv: message addressee field malformed"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7AA-1>APRS::N0CALL XHello world"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-345","title":"TestMicENonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/]","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"]","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-346","title":"TestMicEMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L108","packet":"OH7LZB-2>TQ4W2V,WIDE2-1,qAo,OH7LZB:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"]=","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":6}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-345","title":"TestMicENonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/]","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"device_code":"]","extensions":{"motion":{"speed_knots":0.0,"course_deg":0}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-346","title":"TestMicEMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L108","packet":"OH7LZB-2>TQ4W2V,WIDE2-1,qAo,OH7LZB:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"=","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"device_code":"]","extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":6}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-347","title":"TestMicEHexTelemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L208","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'102030FFff commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,32,48,255,255],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"telemetry":{"sequence":0,"analog":[16,32,48,255,255]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-348","title":"TestMicEHexTelemetry2Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L237","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'1020 commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,0,32],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"telemetry":{"sequence":0,"analog":[16,0,32]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-349","title":"TestMicEMangled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L267","packet":"KD0KZE>TUPX9R,RS0ISS*,qAR,K0GDI-6:'yaIl -/]Greetings via ISS=","outcome":"accept","source_expected":{"fap_header":{"source":"KD0KZE","destination":"TUPX9R","digipeaters":[{"Call":"RS0ISS","WasDigied":true},{"Call":"qAR","WasDigied":false},{"Call":"K0GDI-6","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":45.148666666666664,"Longitude":-93.1575,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"111","MiceMangled":true,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Greetings via ISS=","Warnings":null}},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"KD0KZE","destination":"TUPX9R","path":[{"address":"RS0ISS","repeated":true},{"address":"qAR","repeated":false},{"address":"K0GDI-6","repeated":false}]},"payload":{"type":"mic_e","comment":"]Greetings via ISS=","latitude_deg":45.148666666666664,"longitude_deg":-93.1575,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} @@ -354,12 +354,12 @@ {"id":"FAP-354","title":"TestMicEMangledErrors/destination_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L370","packet":"N0CALL>AB:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"AB","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_short: mangled Mic-E packet too short"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>AB:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-355","title":"TestMicEMangledErrors/invalid_info_field","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L370","packet":"N0CALL>SX15S6:`c51!f?>\u0001","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX15S6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":171.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"\u0001","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_infofield: invalid Mic-E information field"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX15S6:`c51!f?>\u0001"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-356","title":"TestMicEMangledErrors/invalid_destination_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L370","packet":"N0CALL>SX1MS6:`@@@@ >/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX1MS6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":true,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: invalid Mic-E destination character"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX1MS6:`@@@@ >/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-357","title":"TestGPRMC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L17","packet":"N0CALL-11>APRS,DIGI*,WIDE2-1,qAR,IGATE:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*7A","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"DIGI","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":33.817296666666664,"Longitude":-84.10436166666666,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":null,"SymbolCode":null,"Speed":43.940552000000004,"Course":28,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"DIGI","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Timestamp","$.fap_fields.Warnings"]} +{"id":"FAP-357","title":"TestGPRMC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L17","packet":"N0CALL-11>APRS,DIGI*,WIDE2-1,qAR,IGATE:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*7A","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"DIGI","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":33.817296666666664,"Longitude":-84.10436166666666,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":null,"SymbolCode":null,"Speed":43.940552000000004,"Course":28,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"DIGI","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"rmc","coordinates":{"latitude_deg":33.817296666666664,"longitude_deg":-84.10436166666666},"speed_knots":23.726,"course_deg":28},"symbol":null,"metadata":{"checksum_valid":true}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Timestamp","$.fap_fields.Warnings"]} {"id":"FAP-358","title":"TestGPRMCNoFix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L99","packet":"SRC>APRS,WIDE1-1,GATE,qAR,GATE-1:$GPRMC,041518,V,,,,,,,230309,,*33","outcome":"reject","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"GATE","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"GATE-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null},"fap_error":"fap: gprmc_nofix: GPRMC: no valid fix"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRC>APRS,WIDE1-1,GATE,qAR,GATE-1:$GPRMC,041518,V,,,,,,,230309,,*33"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-359","title":"TestGPGGA","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L111","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,*4F","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":11.516666666666667,"PosAmbiguity":null,"PosResolution":1.852,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":545.4,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-359","title":"TestGPGGA","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L111","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,*4F","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":11.516666666666667,"PosAmbiguity":null,"PosResolution":1.852,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":545.4,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"gga","coordinates":{"latitude_deg":48.1173,"longitude_deg":11.516666666666667},"altitude_msl_m":545.4},"symbol":null,"metadata":{"checksum_valid":true}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-360","title":"TestGPGGANoFix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L171","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*48","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA checksum mismatch"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*48"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-361","title":"TestGPGLL","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L183","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-362","title":"TestGPGLLMinimal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L239","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-361","title":"TestGPGLL","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L183","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"gll","coordinates":{"latitude_deg":49.274166666666666,"longitude_deg":-123.18533333333333}},"symbol":null,"metadata":{"checksum_valid":true}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-362","title":"TestGPGLLMinimal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L239","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"gll","coordinates":{"latitude_deg":49.274166666666666,"longitude_deg":-123.18533333333333}},"symbol":null,"metadata":{"checksum_valid":null}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-363","title":"TestParseNMEAErrors/not_starting_with_$GP","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA sentence must start with $GP"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-364","title":"TestParseNMEAErrors/checksum_mismatch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*FF","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA checksum mismatch"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*FF"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-365","title":"TestParseNMEAErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPXXX","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: NMEA sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPXXX"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -403,8 +403,8 @@ {"id":"FAP-403","title":"TestObjectErrors/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L153","packet":"N0CALL-1>APRS:;SHORT","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_short: object packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:;SHORT"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-404","title":"TestObjectErrors/invalid_alive/killed_indicator","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/object_test.go#L153","packet":"N0CALL-1>APRS:;LEADER X092345z4903.50N/07201.75W>","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_inv: invalid object alive/killed indicator: X"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-1>APRS:;LEADER X092345z4903.50N/07201.75W>"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-405","title":"TestFallbackUncompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L15","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:hoponassualku!6028.51S/02505.68W#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"legacy_position","prefix":"hoponassualku","position":{"comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-406","title":"TestFallbackCompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L44","packet":"OH2KKU>APRS,TCPIP*:hello!/I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":10.540467177352028,"Longitude":-74.88313740726545,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"v","Speed":1885.1787453433603,"Course":20,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"Aigate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"position","comment":"Aigate testing","messaging":false,"latitude_deg":10.540467177352028,"longitude_deg":-74.88313740726545,"symbol":{"table_id":"/","code":"v"},"extensions":{"motion":{"speed_knots":1017.9150892782723,"course_deg":20}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-407","title":"TestFallbackExclAtOffset39","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L64","packet":"OH2RDP-1>BEACON-15:012345678901234567890123456789012345678!6028.51N/02505.68E#","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-406","title":"TestFallbackCompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L44","packet":"OH2KKU>APRS,TCPIP*:hello!/I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":10.540467177352028,"Longitude":-74.88313740726545,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"v","Speed":1885.1787453433603,"Course":20,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"Aigate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"legacy_position","prefix":"hello","position":{"comment":"Aigate testing","messaging":false,"latitude_deg":10.540467177352028,"longitude_deg":-74.88313740726545,"symbol":{"table_id":"/","code":"v"},"extensions":{"motion":{"speed_knots":1017.9150892782723,"course_deg":20}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-407","title":"TestFallbackExclAtOffset39","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L64","packet":"OH2RDP-1>BEACON-15:012345678901234567890123456789012345678!6028.51N/02505.68E#","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"legacy_position","prefix":"012345678901234567890123456789012345678","position":{"comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-408","title":"TestFallbackExclAtOffset40","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L81","packet":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-409","title":"TestFallbackNoExcl","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L94","packet":"OH2RDP-1>BEACON-15:Tno position here at all","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:Tno position here at all"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-410","title":"TestFallbackUncompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L107","packet":"OH2RDP-1>BEACON-15:X!6028.51N/02505.6","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!6028.51N/02505.6"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -471,30 +471,30 @@ {"id":"FAP-471","title":"TestUncompressedTimestampAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L286","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=000079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":"13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-472","title":"TestUncompressedNegativeAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L308","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=-00079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":-24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":"13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":-79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-473","title":"TestUncompressedBasicYC0SHR","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L324","packet":"YC0SHR>APU25N,TCPIP*,qAC,ALDIMORI:=0606.23S/10644.61E-GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","outcome":"accept","source_expected":{"fap_header":{"source":"YC0SHR","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"ALDIMORI","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.103833333333333,"Longitude":106.7435,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"YC0SHR","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"ALDIMORI","repeated":false}]},"payload":{"type":"position","comment":"GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","messaging":true,"latitude_deg":-6.103833333333333,"longitude_deg":106.7435,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-474","title":"TestWxBasic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L13","packet":"OH2RDP-1>BEACON-15,WIDE2-1,qAo,OH2MQK-1:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":0.89408,"unit":"m/s"},"gust":{"value":1.78816,"unit":"m/s"},"temperature":{"value":3.888888888888889,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":1.016,"unit":"mm"},"rain_since_midnight":{"value":0.508,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-475","title":"TestWxWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L77","packet":"OH2GAX>APU25N,TCPIP*,qAC,OH2GAX:@101317z6024.78N/02503.97E_156/001g005t038r000p000P000h91b10093/type ?sade for more wx info","outcome":"accept","source_expected":{"fap_header":{"source":"OH2GAX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"OH2GAX","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.413,"Longitude":25.066166666666668,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":156,"WindSpeed":0.44704,"WindGust":2.2352,"Temp":3.3333333333333335,"TempIn":null,"Humidity":91,"HumidityIn":null,"Pressure":1009.3,"Rain1h":0,"Rain24h":0,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"/type ?sade for more wx info","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"OH2GAX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"OH2GAX","repeated":false}]},"payload":{"type":"position","comment":"/type ?sade for more wx info","messaging":true,"latitude_deg":60.413,"longitude_deg":25.066166666666668,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":156,"unit":"degrees"},"wind_speed":{"value":0.44704,"unit":"m/s"},"gust":{"value":2.2352,"unit":"m/s"},"temperature":{"value":3.3333333333333335,"unit":"celsius"},"humidity":{"value":91,"unit":"percent"},"pressure":{"value":1009.3,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":0,"unit":"mm"},"rain_since_midnight":{"value":0,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-476","title":"TestWxThirdWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L134","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_068/001g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":68,"WindSpeed":0.44704,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":68,"unit":"degrees"},"wind_speed":{"value":0.44704,"unit":"m/s"},"gust":{"value":0.44704,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":5.08,"unit":"mm"},"rain_since_midnight":{"value":5.08,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-477","title":"TestWxNoWindDirectionCourse","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L191","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"gust":{"value":0.44704,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":5.08,"unit":"mm"},"rain_since_midnight":{"value":5.08,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-478","title":"TestWxNoWindNoTemp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L209","packet":"N0CALL>APJLSX,TCPIP*,qAS,KG4EXY:@061750z3849.10N/07725.10W_.../...g...t...r008p011P011b.....h..","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APJLSX","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAS","WasDigied":false},{"Call":"KG4EXY","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.818333333333335,"Longitude":-77.41833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":2.032,"Rain24h":2.794,"RainMidnight":2.794,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APJLSX","path":[{"address":"TCPIP","repeated":true},{"address":"qAS","repeated":false},{"address":"KG4EXY","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":38.818333333333335,"longitude_deg":-77.41833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"rain_1h":{"value":2.032,"unit":"mm"},"rain_24h":{"value":2.794,"unit":"mm"},"rain_since_midnight":{"value":2.794,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-479","title":"TestWxSpaceInWindGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L227","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0,"unit":"mm"},"rain_24h":{"value":5.08,"unit":"mm"},"rain_since_midnight":{"value":5.08,"unit":"mm"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-480","title":"TestWxWaterLevel/positive_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F0123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":3.7490400000000004,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-481","title":"TestWxWaterLevel/negative_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F-042","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":-1.2801600000000002,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-482","title":"TestWxWaterLevel/missing_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F....","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-483","title":"TestWxRadiation/12_microsieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":12000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-484","title":"TestWxRadiation/45_millisieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X456","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":45000000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-485","title":"TestWxRadiation/zero_exponent","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X100","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":10,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-486","title":"TestWxRadiation/missing_radiation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-487","title":"TestWxBatteryVoltage/battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V128","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":12.8,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-488","title":"TestWxBatteryVoltage/missing_battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0,"unit":"m/s"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-474","title":"TestWxBasic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L13","packet":"OH2RDP-1>BEACON-15,WIDE2-1,qAo,OH2MQK-1:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":2.0,"unit":"mph"},"gust":{"value":4.0,"unit":"mph"},"temperature":{"value":39.0,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.04,"unit":"inches"},"rain_since_midnight":{"value":0.02,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-475","title":"TestWxWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L77","packet":"OH2GAX>APU25N,TCPIP*,qAC,OH2GAX:@101317z6024.78N/02503.97E_156/001g005t038r000p000P000h91b10093/type ?sade for more wx info","outcome":"accept","source_expected":{"fap_header":{"source":"OH2GAX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"OH2GAX","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.413,"Longitude":25.066166666666668,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":156,"WindSpeed":0.44704,"WindGust":2.2352,"Temp":3.3333333333333335,"TempIn":null,"Humidity":91,"HumidityIn":null,"Pressure":1009.3,"Rain1h":0,"Rain24h":0,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"/type ?sade for more wx info","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"OH2GAX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"OH2GAX","repeated":false}]},"payload":{"type":"position","comment":"/type ?sade for more wx info","messaging":true,"latitude_deg":60.413,"longitude_deg":25.066166666666668,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":156,"unit":"degrees"},"wind_speed":{"value":1.0,"unit":"mph"},"gust":{"value":5.0,"unit":"mph"},"temperature":{"value":38.0,"unit":"fahrenheit"},"humidity":{"value":91,"unit":"percent"},"pressure":{"value":1009.3,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.0,"unit":"inches"},"rain_since_midnight":{"value":0.0,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-476","title":"TestWxThirdWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L134","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_068/001g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":68,"WindSpeed":0.44704,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":68,"unit":"degrees"},"wind_speed":{"value":1.0,"unit":"mph"},"gust":{"value":1.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.2,"unit":"inches"},"rain_since_midnight":{"value":0.2,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-477","title":"TestWxNoWindDirectionCourse","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L191","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"gust":{"value":1.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.2,"unit":"inches"},"rain_since_midnight":{"value":0.2,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-478","title":"TestWxNoWindNoTemp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L209","packet":"N0CALL>APJLSX,TCPIP*,qAS,KG4EXY:@061750z3849.10N/07725.10W_.../...g...t...r008p011P011b.....h..","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APJLSX","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAS","WasDigied":false},{"Call":"KG4EXY","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.818333333333335,"Longitude":-77.41833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":2.032,"Rain24h":2.794,"RainMidnight":2.794,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APJLSX","path":[{"address":"TCPIP","repeated":true},{"address":"qAS","repeated":false},{"address":"KG4EXY","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":38.818333333333335,"longitude_deg":-77.41833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"rain_1h":{"value":0.08,"unit":"inches"},"rain_24h":{"value":0.11,"unit":"inches"},"rain_since_midnight":{"value":0.11,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-479","title":"TestWxSpaceInWindGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L227","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.2,"unit":"inches"},"rain_since_midnight":{"value":0.2,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-480","title":"TestWxWaterLevel/positive_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F0123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":3.7490400000000004,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-481","title":"TestWxWaterLevel/negative_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F-042","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":-1.2801600000000002,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-482","title":"TestWxWaterLevel/missing_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F....","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-483","title":"TestWxRadiation/12_microsieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":12000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-484","title":"TestWxRadiation/45_millisieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X456","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":45000000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-485","title":"TestWxRadiation/zero_exponent","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X100","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":10,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-486","title":"TestWxRadiation/missing_radiation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-487","title":"TestWxBatteryVoltage/battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V128","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":12.8,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-488","title":"TestWxBatteryVoltage/missing_battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} {"id":"FAP-489","title":"TestWxAllFieldsMissing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L435","packet":"N0CALL>APRS,TCPIP*:_12032359c...s...g...t...r...p...P...h..b.....#...Os...L...F....X...V...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":""}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-490","title":"TestWxPositionlessWithSnowfall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L492","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:_12032359c180s001g002t033r010p040P080#456b09860h98Os010L500","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":180,"WindSpeed":0.44704,"WindGust":0.89408,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":2.54,"Rain24h":10.16,"RainMidnight":20.32,"Snow24h":2.54,"Luminosity":500,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":180,"unit":"degrees"},"wind_speed":{"value":0.44704,"unit":"m/s"},"gust":{"value":0.89408,"unit":"m/s"},"temperature":{"value":0.5555555555555556,"unit":"celsius"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":2.54,"unit":"mm"},"rain_24h":{"value":10.16,"unit":"mm"},"rain_since_midnight":{"value":20.32,"unit":"mm"},"snow_24h":{"value":2.54,"unit":"mm"},"luminosity":{"value":500,"unit":"W/m2"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-491","title":"TestULTW","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L13","packet":"N0CALL-14>APN391,WIDE2-1,qAo,IGATE-3:$ULTW0053002D028D02FA2813000D87BD000103E8015703430010000C","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APN391","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE-3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":64,"WindSpeed":0.3,"WindGust":2.3,"Temp":18.5,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1025.9,"Rain1h":null,"Rain24h":null,"RainMidnight":4.1,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APN391","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE-3","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":64,"unit":"degrees"},"wind_speed":{"value":0.3,"unit":"m/s"},"gust":{"value":2.3,"unit":"m/s"},"temperature":{"value":18.5,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1025.9,"unit":"hPa"},"rain_since_midnight":{"value":4.1,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-492","title":"TestULTWBelowZero","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L61","packet":"N0CALL>APN391,qAo,IGATE-1:$ULTW00000000FFEA0000296F000A9663000103E80016025D","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APN391","digipeaters":[{"Call":"qAo","WasDigied":false},{"Call":"IGATE-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":null,"WindGust":0,"Temp":-19,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1060.7,"Rain1h":null,"Rain24h":null,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APN391","path":[{"address":"qAo","repeated":false},{"address":"IGATE-1","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":-19,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1060.7,"unit":"hPa"},"rain_since_midnight":{"value":0,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-493","title":"TestULTWLogging","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L109","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D000028710166--------0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":null,"HumidityIn":null,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-494","title":"TestULTWLoggingHumidity","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L165","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D00002871016602BC031E0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":70,"HumidityIn":79,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"humidity":{"value":70,"unit":"percent"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-490","title":"TestWxPositionlessWithSnowfall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L492","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:_12032359c180s001g002t033r010p040P080#456b09860h98Os010L500","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":180,"WindSpeed":0.44704,"WindGust":0.89408,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":2.54,"Rain24h":10.16,"RainMidnight":20.32,"Snow24h":2.54,"Luminosity":500,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":180,"unit":"degrees"},"wind_speed":{"value":1.0,"unit":"mph"},"gust":{"value":2.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.1,"unit":"inches"},"rain_24h":{"value":0.4,"unit":"inches"},"rain_since_midnight":{"value":0.8,"unit":"inches"},"snow_24h":{"value":0.1,"unit":"inches"},"luminosity":{"value":500,"unit":"W/m2"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-491","title":"TestULTW","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L13","packet":"N0CALL-14>APN391,WIDE2-1,qAo,IGATE-3:$ULTW0053002D028D02FA2813000D87BD000103E8015703430010000C","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APN391","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE-3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":64,"WindSpeed":0.3,"WindGust":2.3,"Temp":18.5,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1025.9,"Rain1h":null,"Rain24h":null,"RainMidnight":4.1,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APN391","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE-3","repeated":false}]},"payload":{"type":"raw_weather","format":"ultimeter_2000","information":"$ULTW0053002D028D02FA2813000D87BD000103E8015703430010000C","weather":{"comment":"","wind_direction":{"value":64,"unit":"degrees"},"wind_speed":{"value":0.3,"unit":"m/s"},"gust":{"value":2.3,"unit":"m/s"},"temperature":{"value":18.5,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1025.9,"unit":"hPa"},"rain_since_midnight":{"value":4.1,"unit":"mm"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-492","title":"TestULTWBelowZero","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L61","packet":"N0CALL>APN391,qAo,IGATE-1:$ULTW00000000FFEA0000296F000A9663000103E80016025D","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APN391","digipeaters":[{"Call":"qAo","WasDigied":false},{"Call":"IGATE-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":null,"WindGust":0,"Temp":-19,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1060.7,"Rain1h":null,"Rain24h":null,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APN391","path":[{"address":"qAo","repeated":false},{"address":"IGATE-1","repeated":false}]},"payload":{"type":"raw_weather","format":"ultimeter_2000","information":"$ULTW00000000FFEA0000296F000A9663000103E80016025D","weather":{"comment":"","wind_direction":{"value":0,"unit":"degrees"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":-19,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1060.7,"unit":"hPa"},"rain_since_midnight":{"value":0,"unit":"mm"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-493","title":"TestULTWLogging","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L109","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D000028710166--------0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":null,"HumidityIn":null,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"raw_weather","format":"ultimeter_2000","information":"!!00000066013D000028710166--------0158053201200210","weather":{"comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-494","title":"TestULTWLoggingHumidity","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L165","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D00002871016602BC031E0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":70,"HumidityIn":79,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"raw_weather","format":"ultimeter_2000","information":"!!00000066013D00002871016602BC031E0158053201200210","weather":{"comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"humidity":{"value":70,"unit":"percent"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} {"id":"FAP-495","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L33","packet":"N0CALL-1>APRS,DIGI1,DIGI2*:)AID #2!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":[{"Call":"DIGI1","WasDigied":false},{"Call":"DIGI2","WasDigied":true}]},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[{"address":"DIGI1","repeated":false},{"address":"DIGI2","repeated":true}]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-496","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L41","packet":"N0CALL>APRS:T#324,000,038,255,.12,50.12,01000001","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":324,"Vals":[0,38,255,0.12,50.12],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":324,"analog":[0,38,255,0.12,50.12],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-497","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L50","packet":"N0CALL-1>BEACON-15,WIDE2-1,qAo,N0CALL-2:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125L500F0123X123V128XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"N0CALL-2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":500,"WaterLevel":3.7490400000000004,"Radiation":12000,"BatteryVoltage":12.8,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"N0CALL-2","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":0.89408,"unit":"m/s"},"gust":{"value":1.78816,"unit":"m/s"},"temperature":{"value":3.888888888888889,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.254,"unit":"mm"},"rain_24h":{"value":1.016,"unit":"mm"},"rain_since_midnight":{"value":0.508,"unit":"mm"},"luminosity":{"value":500,"unit":"W/m2"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-497","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L50","packet":"N0CALL-1>BEACON-15,WIDE2-1,qAo,N0CALL-2:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125L500F0123X123V128XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"N0CALL-2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":500,"WaterLevel":3.7490400000000004,"Radiation":12000,"BatteryVoltage":12.8,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"N0CALL-2","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":2.0,"unit":"mph"},"gust":{"value":4.0,"unit":"mph"},"temperature":{"value":39.0,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.04,"unit":"inches"},"rain_since_midnight":{"value":0.02,"unit":"inches"},"luminosity":{"value":500,"unit":"W/m2"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} {"id":"FAP-498","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L99","packet":"N0CALL-14>APU25N,WIDE2-2,qAR,LANSNG:>051421>>Nashville,TN>>Toronto,ON","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"051421>>Nashville,TN>>Toronto,ON","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"status","text":"051421>>Nashville,TN>>Toronto,ON"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-499","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L121","packet":"N0CALL-1>BEACON-15,N0CALL-2*,WIDE:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"BEACON-15","digipeaters":[{"Call":"N0CALL-2","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"BEACON-15","path":[{"address":"N0CALL-2","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-500","title":"Supplementary literal / removed CLI log timestamp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/parse-speed-test/main_test.go#L12","packet":"N0CALL-1>APRS:;LEADER *000045z4903.50N/07201.75W>088/036","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER *","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_inv: invalid object alive/killed indicator: 0"},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"removed CLI log timestamp. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"original_wire":"N0CALL-1>APRS:;LEADER *000045z4903.50N/07201.75W>088/036"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} diff --git a/packages/aprs/tests/vectors/oth.jsonl b/packages/aprs/tests/vectors/oth.jsonl index fcb4467..591498b 100644 --- a/packages/aprs/tests/vectors/oth.jsonl +++ b/packages/aprs/tests/vectors/oth.jsonl @@ -31,8 +31,8 @@ {"id":"OTH-031","title":"Unspecified / reserved DTI '~'","profile":"core-1.1","source":"APRS101 pp. 17,89","packet":"N0CALL>APRS:~TEST","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"unsupported-or-reserved","dti":"~","raw_data":"TEST","position_usable":false},"note":"No invented subformat. % identifies Agrelo DFJr/MicroFinder, but these sources do not supply a sufficient payload grammar. Unsupported does not mean crash or accidental position fallback.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"opaque","information":"~TEST"}},"unmapped":["$.position_usable"]} {"id":"OTH-032","title":"Modern exclamation offset 0","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} {"id":"OTH-033","title":"Modern exclamation offset 1","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:X!4903.50N/07201.75W-","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"non-aprs-beacon","raw_text":"X!4903.50N/07201.75W-","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"beacon","text":"X!4903.50N/07201.75W-"}},"unmapped":["$.position_usable"]} -{"id":"OTH-034","title":"Legacy X1J offset 1","profile":"historical-1.0","source":"APRS101 p. 18","packet":"N0CALL>BEACON:X!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"OTH-034","title":"Legacy X1J offset 1","profile":"historical-1.0","source":"APRS101 p. 18","packet":"N0CALL>BEACON:X!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"legacy_position","prefix":"X","position":{"comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} {"id":"OTH-035","title":"Modern exclamation offset 39","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"non-aprs-beacon","raw_text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"beacon","text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-"}},"unmapped":["$.position_usable"]} -{"id":"OTH-036","title":"Legacy X1J offset 39","profile":"historical-1.0","source":"APRS101 p. 18","packet":"N0CALL>BEACON:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} +{"id":"OTH-036","title":"Legacy X1J offset 39","profile":"historical-1.0","source":"APRS101 p. 18","packet":"N0CALL>BEACON:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"position","messaging":false,"format":"uncompressed","position":{"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"-","overlay":null},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"legacy_position","prefix":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","position":{"comment":"","messaging":false,"latitude_deg":49.058333333333,"longitude_deg":-72.029166666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}}},"unmapped":["$.symbol.overlay","$.symbol.table"]} {"id":"OTH-037","title":"Modern exclamation offset 40","profile":"core-1.1","source":"APRS101 p. 18; A11 X1J deprecation","packet":"N0CALL>BEACON:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","outcome":"opaque","source_expected":{"header":{"source":"N0CALL","destination":"BEACON","path":[]},"kind":"non-aprs-beacon","raw_text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-","position_usable":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"BEACON","path":[]},"payload":{"type":"beacon","text":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!4903.50N/07201.75W-"}},"unmapped":["$.position_usable"]} {"id":"OTH-038","title":"Historical grid locator in destination","profile":"historical-1.0","source":"APRS101 p.15","packet":"N0CALL>IO91SX:>Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"IO91SX","path":[]},"kind":"status","status_text":"Ready","destination_grid":{"locator":"IO91SX","bounds_deg":{"latitude":[51.958333333333,52.0],"longitude":[-0.5,-0.416666666667]},"center_deg":[51.979166666667,-0.458333333333]}},"note":"The six-character destination is a Maidenhead locator in this historical convention. Preserve its area independently of status text; do not treat its center as an exact position fix.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"IO91SX","path":[]},"payload":{"type":"status","text":"Ready"}},"unmapped":["$.destination_grid.bounds_deg.latitude","$.destination_grid.bounds_deg.longitude","$.destination_grid.center_deg","$.destination_grid.locator"]} From 68d0446b2e8b07c96da8cd65d39318e115bb98dc Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Sat, 17 Oct 2026 11:45:50 -0700 Subject: [PATCH 08/14] Addressed reviewer comments. --- packages/aprs/docs/API_COVERAGE.md | 39 ++-- packages/aprs/docs/APRS_COMPLIANCE_VECTORS.md | 190 +++++++++++++++--- packages/aprs/docs/ENVELOPE_POLICIES.md | 17 +- packages/aprs/docs/UNRESOLVED_SPEC.md | 4 +- packages/aprs/src/hamkit/aprs/_conformance.py | 62 +++++- packages/aprs/src/hamkit/aprs/_messages.py | 44 ++-- packages/aprs/src/hamkit/aprs/_mic_e.py | 34 ++-- packages/aprs/src/hamkit/aprs/_nmea_codec.py | 9 +- packages/aprs/src/hamkit/aprs/_policy.py | 6 +- packages/aprs/src/hamkit/aprs/_weather.py | 6 +- packages/aprs/tests/packets/test_codec.py | 8 +- .../tests/packets/test_codec_regressions.py | 137 +++++++++++++ .../tests/packets/test_envelope_policy.py | 12 +- .../tests/packets/test_roundtrip_corpus.py | 31 ++- packages/aprs/tests/roundtrip_exceptions.json | 16 -- .../aprs/tests/test_vector_corpus_contract.py | 30 ++- packages/aprs/tests/vectors/README.md | 27 +-- packages/aprs/tests/vectors/wx.jsonl | 3 + 18 files changed, 548 insertions(+), 127 deletions(-) diff --git a/packages/aprs/docs/API_COVERAGE.md b/packages/aprs/docs/API_COVERAGE.md index 1deaea4..af30290 100644 --- a/packages/aprs/docs/API_COVERAGE.md +++ b/packages/aprs/docs/API_COVERAGE.md @@ -3,7 +3,7 @@ Packet dataclasses, payload unions and the packet JSON schema are unchanged. Envelope entry points now accept `policy=EnvelopePolicy(...)` instead of a profile string, with public `RF` and `APRS_IS` presets. `APRS_IS` is the default. -Decoding and encoding cover the families exercised by all 1,561 occurrences in +Decoding and encoding cover the families exercised by all 1,564 occurrences in [the edition 1 corpus](APRS_COMPLIANCE_VECTORS.md). Unknown grammars still use `Opaque`; raw wrappers preserve authoritative information bytes. @@ -91,15 +91,29 @@ NMEA fields, or extension `raw` evidence. Explicit raw models are the exception: Field overflow is rejected. No saturation or text truncation is performed. - Mic-E requires a destination consistent with latitude, ambiguity, message and longitude flags. A mismatch raises `FieldError`; packet headers are not silently - changed. Payload-only Mic-E still requires header context. + changed. Payload-only Mic-E still requires header context. Longitude degrees + use APRS101's table, so 100–109° are sent as `l`–`u`, never as control bytes. - NMEA uses semantic numeric fields and recomputes a supplied checksum. Checksum - characters can change when equivalent numeric spellings change. A deliberately - bad input checksum is repaired and fix usability is reevaluated. + characters can change when equivalent numeric spellings change. A sentence + received with a bad checksum (`checksum_valid=False`) is a conformance finding: + it is reported when parsed and refused when sending, so corrupt data is never + re-signed implicitly. Repair it explicitly by clearing `checksum_valid` (a fresh + checksum is computed) or by omitting the checksum. - Weather encoders convert supported units to wire units, then round to field precision. Uncompressed located wind retains the corpus's explicit `disputed_knots_or_mph` unit on decode; composition of an explicitly metric or mph reading follows the FAP mph interpretation. No interpretation is assigned to a received disputed reading by the core decoder. +- Structured weather data is exempt from the 43-byte position-comment budget. + Uncompressed wind (`ddd/sss`) still counts as the 7-byte data extension, leaving + 36 comment bytes; with wind in compressed csT all weather data is exempt. + Envelope limits (information and line bytes) still count every byte. +- Weather software/unit codes end a report (APRS101 pp. 63–66 define no comment + after them). They are decoded only when they end the report, so sending refuses + codes followed by a comment, and a comment alone that would read back as codes + (3–5 characters such as `home`). +- Message text is a query response only when it matches a response grammar + completely; anything else remains an ordinary `Message`. - Explicit altitude datum and DF interpretation annotations with no wire form remain unsendable rather than being silently discarded. Raw vendor weather annotations do not replace authoritative bytes. @@ -110,23 +124,24 @@ warnings alone do not prevent encoding: Latin-1 input can become valid UTF-8. ## Verification -All 1,561 decode cases pass without skips or expected failures. Public JSON +All 1,564 decode cases pass without skips or expected failures. Public JSON projections and source assertions outside the projections are both checked, including partial values recovered before a rejection. All original packet bytes, semantic expectations, options and provenance have a frozen integrity hash tied to PR #4's head commit. Every vector also has an encoding test. With an explicit permissive envelope -policy (`EnvelopePolicy(".*", ".*", ".*")`), 1,296 occurrences encode and stabilize +policy (`EnvelopePolicy(".*", ".*", ".*")`), 1,303 occurrences encode and stabilize through semantic decode/encode round trips with all raw evidence removed. The -other 265 have explicit refusal records: 181 malformed public packets and 84 +other 261 have explicit refusal records: 181 malformed public packets and 80 violations of the existing transmit-conformance rules. Those refusal tests assert -the reason; they are not broad exception catches or skipped tests. Three bad -NMEA checksums are repaired as part of the 1,296 successful encodings. +the reason; they are not broad exception catches or skipped tests. Three NMEA +sentences with bad checksums are first refused, then encode after an explicit +repair; they are counted among the 1,303. -Of those 1,296, 13 have addresses rejected by the new default `APRS_IS` policy; -the tests independently require those default-policy refusals and validate the -other 1,283 under the default policy. The permissive policy changes no decoded +Of those 1,303, 15 have addresses rejected by the new default `APRS_IS` policy, +including two with SSID `-0`; the tests independently require those +default-policy refusals and validate the other 1,288 under the default policy. The permissive policy changes no decoded fields, packet bytes or payload conformance checks. Dedicated policy tests cover custom patterns, optional and zero limits, boundary sizes including CRLF, repeated markers, and consistent outer-envelope handling of third-party packets. diff --git a/packages/aprs/docs/APRS_COMPLIANCE_VECTORS.md b/packages/aprs/docs/APRS_COMPLIANCE_VECTORS.md index e3828c7..3d06b36 100755 --- a/packages/aprs/docs/APRS_COMPLIANCE_VECTORS.md +++ b/packages/aprs/docs/APRS_COMPLIANCE_VECTORS.md @@ -2,7 +2,9 @@ Edition 1 — prepared 2026-10-15. Source baseline: APRS Protocol Reference document 1.0.1, the live APRS 1.1 addendum and selected clarifications it links, and the pinned `hessu/go-aprs-fap` tests. -This document contains **1,545 numbered cases: 1,538 individual packet cases and 7 stateful sequences containing 23 additional packet occurrences**. There are 1,028 specification-derived, historical, policy, ambiguity, and robustness cases, plus 517 FAP compatibility snapshots. The individual cases contain 1,515 distinct byte strings. Repeated strings are intentional where profiles or parser options change the expected result. +Amended 2026-10-17: added [WX-067](#wx-067)–[WX-069](#wx-069) for the placement of weather software/unit codes (APRS101 pp. 63–66). The verification notes below describe the original edition. + +This document contains **1,548 numbered cases: 1,541 individual packet cases and 7 stateful sequences containing 23 additional packet occurrences**. There are 1,031 specification-derived, historical, policy, ambiguity, and robustness cases, plus 517 FAP compatibility snapshots. The individual cases contain 1,518 distinct byte strings. Repeated strings are intentional where profiles or parser options change the expected result. Every packet is fully expanded. JSON strings preserve padding, backslashes, embedded colons, control bytes, and high-bit bytes. The decoded fields are intended as inputs to an implementation-neutral test adapter; the FAP appendix deliberately uses a separate schema. This is a broad finite corpus, not a claim that all possible APRS byte combinations, products, or later extensions have been enumerated. @@ -20,7 +22,7 @@ Every packet is fully expanded. JSON strings preserve padding, backslashes, embe - [CMP: Compressed positions](#family-cmp) — 122 cases - [MIC: Mic-E](#family-mic) — 265 cases - [OBJ: Objects, items, areas and signposts](#family-obj) — 53 cases -- [WX: Weather and storms](#family-wx) — 66 cases +- [WX: Weather and storms](#family-wx) — 69 cases - [TLM: Telemetry and definition messages](#family-tlm) — 18 cases - [MSG: Messages, bulletins, announcements and radiograms](#family-msg) — 45 cases - [QRY: Queries and station capabilities](#family-qry) — 20 cases @@ -110,7 +112,7 @@ Exact conversions used: 1 knot = 1.852 km/h = 1852/3600 m/s; 1 mph = 0.44704 m/s | Profile | Cases | Purpose | | -------------------------- | ----: | ------------------------------------------------------------------------------------------------------------------------------- | -| `core-1.1` | 801 | APRS101 plus explicit live-addendum corrections; field decoding and selected application semantics. | +| `core-1.1` | 804 | APRS101 plus explicit live-addendum corrections; field decoding and selected application semantics. | | `historical-1.0` | 41 | Legacy behavior retained for deliberate backward compatibility; not a modern transmission recommendation. | | `strict-envelope` | 14 | RF/TNC2 transmitter and envelope constraints. Do not apply RF address restrictions indiscriminately to APRS-IS. | | `strict-validation` | 112 | Malformed fields, width/range limits, or a stated conservative extension-extraction policy. Valid surrounding data may survive. | @@ -140,26 +142,26 @@ Stateful records have `steps` instead of a single `packet` and `outcome`. Reset ## Coverage and verification -| Family | Cases | Coverage | -| ------------------ | ----: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [HDR](#family-hdr) | 51 | Envelope splitting; repeated markers; eight-hop boundary; destination dispatch; historical destination-SSID routing. | -| [POS](#family-pos) | 68 | Four position DTIs; hemispheres and poles; null convention; all ambiguity levels; comments and overlays. | -| [TIM](#family-tim) | 20 | DHM UTC/local, HMS, weather MDHM, component boundaries, invalid timestamps, status timestamp restrictions. | -| [EXT](#family-ext) | 50 | Course/speed; altitude placement; PHG height/gain/directivity; explicit range; DFS and every DF quality code. | -| [CMP](#family-cmp) | 122 | Coordinate quantization; table/overlay encoding; motion/range/altitude precedence; all 64 six-bit compression types. | -| [MIC](#family-mic) | 265 | All longitude degrees 0–179; minute/hundredth boundaries; message-bit combinations; speed/course encodings; ambiguity; type markers; altitude and legacy telemetry. | -| [OBJ](#family-obj) | 53 | Object/item live and killed forms; name boundaries; compressed and moving forms; ten area shapes; sixteen colors; signposts. | -| [WX](#family-wx) | 66 | Positionless/uncompressed/compressed weather; missing and zero values; temperatures; humidity/pressure; rain windows; luminosity; snowfall; water level; storms. | -| [TLM](#family-tlm) | 18 | Numeric/MIC sequence fields; five analog/eight digital channels; definition messages; partial/empty definitions. | -| [MSG](#family-msg) | 45 | Text/ID/address limits; groups; ack/rej; reply-ack; automatic answers; bulletins/announcements/NWS; NTS record types. | -| [QRY](#family-qry) | 20 | General and directed queries; geographic footprints; response payloads; capability tokens. | -| [STA](#family-sta) | 29 | Empty/padded/timed status; Maidenhead cells; beam heading/ERP; suffix anchoring. | -| [NME](#family-nme) | 36 | GGA/GLL/RMC/VTG/WPL; checksum and no-fix isolation; destination symbols; historical SSID symbols; symbol precedence. | -| [NET](#family-net) | 15 | Third-party nested envelopes; no-gate/no-archive; q-token preservation; AEA adapter. | -| [OTH](#family-oth) | 38 | Opaque vendor formats; user-defined binary data; explicit invalid/test; obsolete grids/beacons; reserved DTIs; old/new X1J behavior. | -| [BAD](#family-bad) | 125 | Envelope, field width, coordinate range, truncation, symbol, compression, message, telemetry, weather, and nested-packet failures. | -| [SEQ](#family-seq) | 7 | Object ownership/lifecycle; case/name identity; duplicate messages/reply-ack; telemetry calibration; bulletins; status precedence; weather association. | -| [FAP](#family-fap) | 517 | Every captured root-parser invocation plus eligible full-packet/encoder/CLI supplements from the pinned tests. | +| Family | Cases | Coverage | +| ------------------ | ----: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [HDR](#family-hdr) | 51 | Envelope splitting; repeated markers; eight-hop boundary; destination dispatch; historical destination-SSID routing. | +| [POS](#family-pos) | 68 | Four position DTIs; hemispheres and poles; null convention; all ambiguity levels; comments and overlays. | +| [TIM](#family-tim) | 20 | DHM UTC/local, HMS, weather MDHM, component boundaries, invalid timestamps, status timestamp restrictions. | +| [EXT](#family-ext) | 50 | Course/speed; altitude placement; PHG height/gain/directivity; explicit range; DFS and every DF quality code. | +| [CMP](#family-cmp) | 122 | Coordinate quantization; table/overlay encoding; motion/range/altitude precedence; all 64 six-bit compression types. | +| [MIC](#family-mic) | 265 | All longitude degrees 0–179; minute/hundredth boundaries; message-bit combinations; speed/course encodings; ambiguity; type markers; altitude and legacy telemetry. | +| [OBJ](#family-obj) | 53 | Object/item live and killed forms; name boundaries; compressed and moving forms; ten area shapes; sixteen colors; signposts. | +| [WX](#family-wx) | 69 | Positionless/uncompressed/compressed weather; missing and zero values; temperatures; humidity/pressure; rain windows; luminosity; snowfall; water level; storms; software/unit code placement. | +| [TLM](#family-tlm) | 18 | Numeric/MIC sequence fields; five analog/eight digital channels; definition messages; partial/empty definitions. | +| [MSG](#family-msg) | 45 | Text/ID/address limits; groups; ack/rej; reply-ack; automatic answers; bulletins/announcements/NWS; NTS record types. | +| [QRY](#family-qry) | 20 | General and directed queries; geographic footprints; response payloads; capability tokens. | +| [STA](#family-sta) | 29 | Empty/padded/timed status; Maidenhead cells; beam heading/ERP; suffix anchoring. | +| [NME](#family-nme) | 36 | GGA/GLL/RMC/VTG/WPL; checksum and no-fix isolation; destination symbols; historical SSID symbols; symbol precedence. | +| [NET](#family-net) | 15 | Third-party nested envelopes; no-gate/no-archive; q-token preservation; AEA adapter. | +| [OTH](#family-oth) | 38 | Opaque vendor formats; user-defined binary data; explicit invalid/test; obsolete grids/beacons; reserved DTIs; old/new X1J behavior. | +| [BAD](#family-bad) | 125 | Envelope, field width, coordinate range, truncation, symbol, compression, message, telemetry, weather, and nested-packet failures. | +| [SEQ](#family-seq) | 7 | Object ownership/lifecycle; case/name identity; duplicate messages/reply-ack; telemetry calibration; bulletins; status precedence; weather association. | +| [FAP](#family-fap) | 517 | Every captured root-parser invocation plus eligible full-packet/encoder/CLI supplements from the pinned tests. | Verification performed while building this edition: @@ -33244,6 +33246,148 @@ Positionless/uncompressed/compressed weather; missing and zero values; temperatu } ``` + + +### WX-067 — APRS101 rain-gauge example: trailing text as software/unit + +```json +{ + "id": "WX-067", + "title": "APRS101 rain-gauge example: trailing text as software/unit", + "profile": "core-1.1", + "outcome": "accept", + "source": "APRS101 pp. 63-64", + "packet": "N0CALL>APRS:_10090556c...s...g...t...P012Jim", + "expected": { + "header": { + "source": "N0CALL", + "destination": "APRS", + "path": [] + }, + "kind": "weather", + "timestamp": { + "raw": "10090556", + "format": "MDHM", + "zone": "UTC", + "month": 10, + "day": 9, + "hour": 5, + "minute": 56 + }, + "weather": { + "wind_direction_deg": null, + "wind_speed_mph": null, + "wind_speed_mps": null, + "gust_mph": null, + "gust_mps": null, + "temperature_f": null, + "temperature_c": null, + "rain_since_midnight_hundredth_in": 12, + "rain_since_midnight_mm": 3.048, + "software_code": "J", + "device_code": "im" + } + }, + "note": "The specification's own example. By the p.63 layout a report ends with the optional software code S (1 byte) and unit code uuuu (2-4 bytes), so the trailing 'Jim' is software 'J' and unit 'im'. The grammar cannot distinguish a short name from these codes.", + "packet_length_bytes": 44 +} +``` + + + +### WX-068 — Short trailing text reads as software/unit codes + +```json +{ + "id": "WX-068", + "title": "Short trailing text reads as software/unit codes", + "profile": "core-1.1", + "outcome": "accept", + "source": "APRS101 p. 63", + "packet": "N0CALL>APRS:_10090556c220s004g005t077P012Home", + "expected": { + "header": { + "source": "N0CALL", + "destination": "APRS", + "path": [] + }, + "kind": "weather", + "timestamp": { + "raw": "10090556", + "format": "MDHM", + "zone": "UTC", + "month": 10, + "day": 9, + "hour": 5, + "minute": 56 + }, + "weather": { + "wind_direction_deg": 220, + "wind_speed_mph": 4, + "wind_speed_mps": 1.78816, + "gust_mph": 5, + "gust_mps": 2.2352, + "temperature_f": 77, + "temperature_c": 25.0, + "rain_since_midnight_hundredth_in": 12, + "rain_since_midnight_mm": 3.048, + "software_code": "H", + "device_code": "ome" + } + }, + "note": "Unit codes are open-ended ('Users may specify any other 2-4 character code'), so any 3-5 trailing characters that end the report are read as S plus uuuu. Receivers must not reinterpret them as comment text.", + "packet_length_bytes": 45 +} +``` + + + +### WX-069 — Text after software/unit codes is comment + +```json +{ + "id": "WX-069", + "title": "Text after software/unit codes is comment", + "profile": "core-1.1", + "outcome": "accept", + "source": "APRS101 pp. 63-66", + "packet": "N0CALL>APRS:_10090556c220s004g005t077P012wRSW home", + "expected": { + "header": { + "source": "N0CALL", + "destination": "APRS", + "path": [] + }, + "kind": "weather", + "timestamp": { + "raw": "10090556", + "format": "MDHM", + "zone": "UTC", + "month": 10, + "day": 9, + "hour": 5, + "minute": 56 + }, + "weather": { + "wind_direction_deg": 220, + "wind_speed_mph": 4, + "wind_speed_mps": 1.78816, + "gust_mph": 5, + "gust_mps": 2.2352, + "temperature_f": 77, + "temperature_c": 25.0, + "rain_since_midnight_hundredth_in": 12, + "rain_since_midnight_mm": 3.048, + "software_code": null, + "device_code": null + }, + "comment": "wRSW home" + }, + "note": "Every weather format ends with the optional S and uuuu codes; none defines a comment after them. Text that does not end the report as exactly those codes is retained as comment and no codes are inferred. Transmitters must not place a comment after the codes.", + "packet_length_bytes": 50 +} +``` + ## TLM — Telemetry and definition messages diff --git a/packages/aprs/docs/ENVELOPE_POLICIES.md b/packages/aprs/docs/ENVELOPE_POLICIES.md index ed7d63c..cd30ad1 100644 --- a/packages/aprs/docs/ENVELOPE_POLICIES.md +++ b/packages/aprs/docs/ENVELOPE_POLICIES.md @@ -23,15 +23,16 @@ without their trailing `*` repeated marker. `None` means no limit; zero means zero entries or bytes. Invalid regular expressions, negative limits, and limits that are not integers are rejected when constructing a policy. -| Constraint | `aprs.RF` | `aprs.APRS_IS` | -| ------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | -| Source | 1–6 uppercase ASCII letters/digits, optional numeric SSID 0–15 | At least 3 ASCII letters/digits, optional 1–2 alphanumeric SSID characters, at most 9 characters total | -| Destination and path address | Same format as RF source | At least 1 ASCII letter/digit, optional 1–2 alphanumeric SSID characters, at most 9 characters total | -| Path entries | 8 | No separate limit | -| Information bytes | 256 | No separate limit | -| TNC2 line bytes, including CRLF | No separate limit | 512 | +| Constraint | `aprs.RF` | `aprs.APRS_IS` | +| ------------------------------- | -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| Source | 1–6 uppercase ASCII letters/digits, optional numeric SSID 0–15 | At least 3 ASCII letters/digits, optional 1–2 alphanumeric SSID characters other than `-0`, at most 9 characters total | +| Destination and path address | Same format as RF source | At least 1 ASCII letter/digit, optional 1–2 alphanumeric SSID characters other than `-0`, at most 9 characters total | +| Path entries | 8 | No separate limit | +| Information bytes | 256 | No separate limit | +| TNC2 line bytes, including CRLF | No separate limit | 512 | -APRS-IS patterns permit mixed case, including `qAR` in paths. Patterns check +APRS-IS patterns permit mixed case, including `qAR` in paths, and refuse SSID +`-0`, which APRS-IS drops because it conflicts with an absent SSID. Patterns check individual formats, not q-construct ordering or network routing rules. The APRS-IS limits follow the [server address rules](https://www.aprs-is.net/ServerDesign.aspx) and [connection specification](https://www.aprs-is.net/Connecting.aspx). diff --git a/packages/aprs/docs/UNRESOLVED_SPEC.md b/packages/aprs/docs/UNRESOLVED_SPEC.md index 15e26da..cece545 100644 --- a/packages/aprs/docs/UNRESOLVED_SPEC.md +++ b/packages/aprs/docs/UNRESOLVED_SPEC.md @@ -76,7 +76,9 @@ reported observations; agreement is not enforced because numeric fields do not retain the precision needed to compare rounded wire readings. The encoder preserves both reported observations. Calendar validation rejects impossible dates, allowing February 29 in YY=00 without assigning a century. `checksum_valid` requires a supplied checksum, but is evidence about original -input, not certification of an edited sentence. The model does not calculate checksums; the encoder recomputes a supplied checksum. +input, not certification of an edited sentence. The model does not calculate +checksums; the encoder recomputes a supplied checksum, and refuses to send a +sentence still marked `checksum_valid=False` until the caller repairs it. **What resolves it:** define which speed is authoritative for composition and retain each received field's precision, or define an explicitly selected rounding diff --git a/packages/aprs/src/hamkit/aprs/_conformance.py b/packages/aprs/src/hamkit/aprs/_conformance.py index 95467ea..c975b2b 100644 --- a/packages/aprs/src/hamkit/aprs/_conformance.py +++ b/packages/aprs/src/hamkit/aprs/_conformance.py @@ -35,6 +35,7 @@ ) from ._errors import CodecNotImplementedError, FieldError from ._models import ( + NMEA, Acknowledgment, AutoAnswer, Bulletin, @@ -318,6 +319,18 @@ def _trace(v: Trace, policy: EnvelopePolicy | None) -> Iterator[Finding]: yield from _text("header", str(v.header) + ":", 67) +@_conformance(NMEA) +def _nmea(v: NMEA, policy: EnvelopePolicy | None) -> Iterator[Finding]: + # The encoder computes a fresh checksum, so sending a sentence received with + # a bad one would make corrupt data look verified. Require explicit repair: + # clear checksum_valid (or omit the checksum) once the fields are trusted. + if v.metadata.checksum_valid is False: + yield ( + "$.metadata.checksum_valid", + "NMEA checksum mismatch; clear checksum_valid to repair before sending", + ) + + @_conformance(Capabilities) def _capabilities(v: Capabilities, policy: EnvelopePolicy | None) -> Iterator[Finding]: if not v.tokens: @@ -338,6 +351,46 @@ def _item(v: Item, policy: EnvelopePolicy | None) -> Iterator[Finding]: yield "$.name", "item names have at least three characters" +# APRS101 pp.63-66 end every weather report with the optional software (S) and +# unit (uuuu) codes and define no comment after them, so the decoder reads codes +# only when they end the report. Text after them would hide the codes. +WEATHER_CODES_LAST = ( + "weather software/unit codes must end the report; a comment cannot follow them" +) +WEATHER_COMMENT_AS_CODES = "comment would be read back as weather software/unit codes" + + +def _weather_comment(weather: Any, comment: str) -> str | None: + """Why a comment after weather data would not read back unchanged.""" + if not comment: + return None + if weather.software_code or weather.device_code: + return WEATHER_CODES_LAST + from ._weather import CODES + + if CODES.fullmatch(comment.encode("utf-8")): + return WEATHER_COMMENT_AS_CODES + return None + + +def _weather_exempt_bytes(extensions: Any) -> int: + """Encoded weather bytes outside the 43-byte position-comment budget. + + Uncompressed wind (ddd/sss) occupies the 7-byte data-extension slot, which + the budget still counts, leaving 36 comment bytes as for course/speed. The + other weather fields, and all of them when wind is in compressed csT, are + structured data rather than comment. Envelope limits still apply to them. + """ + w = extensions.weather + if w is None: + return 0 + from . import _weather + + compressed_wind = w.wind_direction is None and w.wind_speed is None + encoded = _weather.write(w, positioned=True, compressed=compressed_wind) + return len(encoded) - (0 if compressed_wind else 7) + + @_conformance(Position, Object, Item) def _position(v: Position, policy: EnvelopePolicy | None) -> Iterator[Finding]: """The encoded tail must read back as the same extensions and comment.""" @@ -359,7 +412,11 @@ def _position(v: Position, policy: EnvelopePolicy | None) -> Iterator[Finding]: yield "$.extensions", str(exc) return comment = v.comment.encode("utf-8") - if len(prefix) + len(comment) > 43: + problem = extensions.weather and _weather_comment(extensions.weather, v.comment) + if problem: + yield "$.comment", problem + return + if len(prefix) - _weather_exempt_bytes(extensions) + len(comment) > 43: yield "$.comment", "extensions and comment exceed 43 bytes" try: expected, _ = _extensions.read(prefix, v.symbol) @@ -458,6 +515,9 @@ def _weather_report(w: Weather, path: str, positioned: bool) -> Iterator[Finding @_conformance(Weather) def _weather(v: Weather, policy: EnvelopePolicy | None) -> Iterator[Finding]: + problem = _weather_comment(v, v.comment) + if problem: + yield "$.comment", problem for name in ( "wind_direction", "wind_speed", diff --git a/packages/aprs/src/hamkit/aprs/_messages.py b/packages/aprs/src/hamkit/aprs/_messages.py index 9399e2e..2523c84 100644 --- a/packages/aprs/src/hamkit/aprs/_messages.py +++ b/packages/aprs/src/hamkit/aprs/_messages.py @@ -9,7 +9,7 @@ from . import _data as d from . import _models as m -from ._errors import FieldError +from ._errors import APRSError, FieldError from ._fields import decode_timestamp, encode_timestamp from ._text import free_text, token @@ -190,25 +190,31 @@ def specialized(address: str, body: bytes, diagnostics: list): def response(address: str, body: bytes): - """Recognize the three documented directed-query response grammars.""" - if body.startswith(b"Directs= "): - return m.Response( - address, - m.DirectStations(tuple(token(body[9:], "$.response.stations").split())), - ) - match = re.fullmatch( - rb"([A-Za-z0-9-]+) HEARD: ((?:[0-9]+|\.)(?: (?:[0-9]+|\.)){7})", body - ) - if match: - return m.Response( - address, - m.HeardStation( - match[1].decode(), - tuple(None if c == b"." else int(c) for c in match[2].split()), - ), + """Recognize the three documented directed-query response grammars. + + Text that does not match a grammar completely is an ordinary message. + """ + try: + if re.fullmatch(rb"Directs=(?: [A-Za-z0-9-]{1,9})+", body): + return m.Response( + address, + m.DirectStations(tuple(body[9:].decode("ascii").split())), + ) + match = re.fullmatch( + rb"([A-Za-z0-9-]+) HEARD: ((?:[0-9]+|\.)(?: (?:[0-9]+|\.)){7})", body ) - if re.fullmatch(rb"[A-Za-z0-9-]+>[A-Za-z0-9,*-]+:", body): - return m.Response(address, m.Trace(m.Header.parse(body[:-1].decode()))) + if match: + return m.Response( + address, + m.HeardStation( + match[1].decode(), + tuple(None if c == b"." else int(c) for c in match[2].split()), + ), + ) + if re.fullmatch(rb"[A-Za-z0-9-]+>[A-Za-z0-9,*-]+:", body): + return m.Response(address, m.Trace(m.Header.parse(body[:-1].decode()))) + except APRSError: + pass return None diff --git a/packages/aprs/src/hamkit/aprs/_mic_e.py b/packages/aprs/src/hamkit/aprs/_mic_e.py index a6c6333..5218fd2 100644 --- a/packages/aprs/src/hamkit/aprs/_mic_e.py +++ b/packages/aprs/src/hamkit/aprs/_mic_e.py @@ -154,6 +154,25 @@ def read(information: bytes, header: Header, diagnostics: list) -> MicE: ) +def _longitude_degrees_byte(degrees: int, offset: bool) -> int: + """APRS101 p.48 longitude-degrees table. + + 100-109 degrees use 'l'-'u' (108-117). Bytes 28-37 decode to the same + values arithmetically, but they are not the specified encoding and include + the FS-US control characters. + """ + if offset: + if 0 <= degrees <= 9: + return degrees + 118 + if 100 <= degrees <= 109: + return degrees + 8 + if 110 <= degrees <= 179: + return degrees - 100 + 28 + elif 10 <= degrees <= 99: + return degrees + 28 + raise FieldError("Mic-E destination longitude offset does not match longitude") + + def write(p: MicE, header: Header) -> bytes: p = replace( p, @@ -173,18 +192,7 @@ def write(p: MicE, header: Header) -> bytes: units = round(abs(p.longitude_deg) * 6000) degrees, minutes = divmod(units, 6000) minutes, hundredths = divmod(minutes, 100) - # Find a legal wire longitude byte for the caller-supplied destination bit. - candidates = [] - for byte in range(28, 128): - value = byte - 28 + (100 if offset else 0) - if 180 <= value <= 189: - value -= 80 - elif 190 <= value <= 199: - value -= 190 - if value == degrees: - candidates.append(byte) - if not candidates: - raise FieldError("Mic-E destination longitude offset does not match longitude") + degree_byte = _longitude_degrees_byte(degrees, offset) m = p.extensions.motion if m is None or m.course_deg is None or m.speed_knots is None: raise FieldError("Mic-E requires course and speed") @@ -194,7 +202,7 @@ def write(p: MicE, header: Header) -> bytes: body = ( bytes( [ - candidates[0], + degree_byte, minutes + (88 if minutes < 10 else 28), hundredths + 28, speed // 10 + 28, diff --git a/packages/aprs/src/hamkit/aprs/_nmea_codec.py b/packages/aprs/src/hamkit/aprs/_nmea_codec.py index 3f8b4ef..a92deac 100644 --- a/packages/aprs/src/hamkit/aprs/_nmea_codec.py +++ b/packages/aprs/src/hamkit/aprs/_nmea_codec.py @@ -88,15 +88,8 @@ def read(raw: bytes, header: Header | None, diagnostics: list) -> NMEA: supplied = trailer[:2].decode() comment = trailer[2:] actual = functools.reduce(operator.xor, raw[1 : raw.index(b"*")], 0) + # A mismatch is reported by conformance, so it also blocks sending. valid = actual == int(supplied, 16) - if not valid: - diagnostics.append( - Diagnostic( - "nonconforming", - "NMEA checksum mismatch", - "$.metadata.checksum_valid", - ) - ) fields_raw = tuple(data.split(b",")) f = [token(v, "$.sentence") for v in fields_raw] number = lambda i: float(f[i]) if f[i] else None diff --git a/packages/aprs/src/hamkit/aprs/_policy.py b/packages/aprs/src/hamkit/aprs/_policy.py index c6e7f71..88ecfdf 100644 --- a/packages/aprs/src/hamkit/aprs/_policy.py +++ b/packages/aprs/src/hamkit/aprs/_policy.py @@ -54,8 +54,10 @@ def __post_init__(self) -> None: _AX25_ADDRESS = r"[A-Z0-9]{1,6}(?:-(?:[0-9]|1[0-5]))?" -_APRS_IS_SOURCE = r"(?=.{1,9}\Z)[A-Za-z0-9]{3,9}(?:-[A-Za-z0-9]{1,2})?" -_APRS_IS_ADDRESS = r"(?=.{1,9}\Z)[A-Za-z0-9]{1,9}(?:-[A-Za-z0-9]{1,2})?" +# APRS-IS drops SSID -0 because it conflicts with an absent SSID. +_APRS_IS_SSID = r"(?:-(?!0\Z)[A-Za-z0-9]{1,2})?" +_APRS_IS_SOURCE = r"(?=.{1,9}\Z)[A-Za-z0-9]{3,9}" + _APRS_IS_SSID +_APRS_IS_ADDRESS = r"(?=.{1,9}\Z)[A-Za-z0-9]{1,9}" + _APRS_IS_SSID RF = EnvelopePolicy( source_pattern=_AX25_ADDRESS, diff --git a/packages/aprs/src/hamkit/aprs/_weather.py b/packages/aprs/src/hamkit/aprs/_weather.py index da7dcd0..f63e8d5 100644 --- a/packages/aprs/src/hamkit/aprs/_weather.py +++ b/packages/aprs/src/hamkit/aprs/_weather.py @@ -93,7 +93,7 @@ def read( values[name] = Measurement(value, unit, raw=field) raw = raw[width + 1 :] # APRS software + two/three-character weather device code is a suffix. - if re.fullmatch(rb"[A-Za-z][A-Za-z0-9]{2,4}", raw): + if CODES.fullmatch(raw): values["software_code"] = chr(raw[0]) values["device_code"] = raw[1:].decode() raw = b"" @@ -140,6 +140,10 @@ def _number(value: float | None, width: int, scale: float = 1) -> bytes: return raw +# Software S plus unit uuuu (APRS101 p.63) when they are all that remains. +CODES = re.compile(rb"[A-Za-z][A-Za-z0-9]{2,4}") + + def write(w: Weather, *, positioned=False, compressed=False) -> bytes: raw = b"" if not positioned: diff --git a/packages/aprs/tests/packets/test_codec.py b/packages/aprs/tests/packets/test_codec.py index 887743c..372b556 100644 --- a/packages/aprs/tests/packets/test_codec.py +++ b/packages/aprs/tests/packets/test_codec.py @@ -11,6 +11,7 @@ Altitude, CodecNotImplementedError, EnvelopeError, + EnvelopePolicy, Extensions, FieldError, Header, @@ -94,14 +95,17 @@ def test_data_extensions_round_trip(self) -> None: self.assertEqual(serialize_packet(packet), wire) def test_original_wire_is_archival(self) -> None: + # Unusual tokens (lowercase, SSID -0) show nothing is normalized; the + # permissive policy keeps envelope rules out of this archival check. + loose = EnvelopePolicy(".*", ".*", ".*") raw = b"n0call-0>APRS,qAR,igate:>radio: ready > listening" packet = parse_packet(raw) assert isinstance(packet, Packet) self.assertEqual(packet.original_wire, raw) - self.assertEqual(serialize_packet(packet), raw) + self.assertEqual(serialize_packet(packet, policy=loose), raw) changed = replace(packet, payload=Status("Changed")) self.assertEqual(changed.original_wire, raw) - self.assertTrue(serialize_packet(changed).endswith(b":>Changed")) + self.assertTrue(serialize_packet(changed, policy=loose).endswith(b":>Changed")) def test_path_markers(self) -> None: packet = parse_packet(b"N0CALL>APRS,D1,D2*,WIDE2-1:>Ready") diff --git a/packages/aprs/tests/packets/test_codec_regressions.py b/packages/aprs/tests/packets/test_codec_regressions.py index 8485236..4b02b32 100644 --- a/packages/aprs/tests/packets/test_codec_regressions.py +++ b/packages/aprs/tests/packets/test_codec_regressions.py @@ -167,3 +167,140 @@ def test_invalid_signpost_token_and_oversized_sequence_are_malformed(): b"N0CALL>APRS:T#" + b"1" * 5000 + b",1,2,3,4,5,00000000", ): assert isinstance(a.parse_packet(wire), a.Malformed) + + +def test_mic_e_longitude_100_to_109_degrees_uses_specified_bytes(): + # APRS101 p.48 encodes 100-109 degrees as 'l'-'u'; bytes 28-37 decode to the + # same values but include FS-US control characters. + cases = [r for r in rows() if r["id"] in {f"MIC-{n}" for n in range(116, 126)}] + assert len(cases) == 10 + for row in cases: + raw = row["packet"].encode("latin-1") + wire = a.serialize_packet(without_evidence(packet(raw))) + assert wire == raw, row["id"] + assert 108 <= wire[wire.index(b":") + 2] <= 117 + + +def test_known_bad_nmea_checksum_requires_explicit_repair(): + received = packet(b"N0CALL>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A*00") + n = received.payload + assert isinstance(n, a.NMEA) and n.metadata.checksum_valid is False + finding = "$.payload.metadata.checksum_valid" + assert [d.path for d in received.diagnostics] == [finding] # Reported once. + assert [d.path for d in a.check_packet(received)] == [finding] + for send in (a.serialize_packet, a.validate_packet, a.serialize_tnc2_line): + with pytest.raises(a.ConformanceError) as caught: + send(received) + assert [d.path for d in caught.value.diagnostics] == [finding] + # Explicit repair: clear the verdict, and a fresh checksum is computed. + trusted = dataclasses.replace(n.metadata, checksum_valid=None) + repaired = dataclasses.replace( + received, payload=dataclasses.replace(n, metadata=trusted) + ) + resent = packet(a.serialize_packet(repaired)).payload + assert isinstance(resent, a.NMEA) and resent.metadata.checksum_valid is True + # Or omit the checksum entirely. + unsigned = dataclasses.replace( + received, + payload=dataclasses.replace(n, metadata=a.NMEAMetadata(n.metadata.talker)), + ) + assert b"*" not in a.serialize_packet(unsigned) + + +@pytest.mark.parametrize( + "text", + [ + "Directs= are fine, see you at 7", + "Directs=", + "N0CALL HEARD: 1 2 3", + "N0CALL HEARD: 1 2 3 4 5 6 7 8 9", + ], +) +def test_text_resembling_a_response_stays_a_message(text): + raw = b"N0CALL>APRS::W1AW :" + text.encode() + value = packet(raw).payload + assert value == a.Message("W1AW", text) + assert a.serialize_packet(packet(raw)) == raw + + +def test_complete_response_grammar_is_still_structured(): + value = packet(b"N0CALL>APRS::W1AW :Directs= W1AW W2ABC").payload + assert value == a.Response("W1AW", a.DirectStations(("W1AW", "W2ABC"))) + + +def test_structured_weather_is_exempt_from_the_position_comment_budget(): + weather = ( + b"N0CALL>APRS:@092345z4903.50N/07201.75W_220/004g005t077r000p000P000h50b09900" + ) + # 44 bytes of structured weather data: an ordinary report is sendable. + assert a.check_packet(packet(weather + b"L123wRSW")) == () + # Wind occupies the 7-byte data-extension slot; the comment keeps 36 bytes. + assert a.check_packet(packet(weather + b" " + b"x" * 35)) == () + assert [d.path for d in a.check_packet(packet(weather + b" " + b"x" * 36))] == [ + "$.payload.comment" + ] + # With wind in compressed csT, all weather data is exempt. + compressed = b"N0CALL>APRS:=/5L!!<*e7_7P[g005t077r000p000P000h50b09900L123" + assert a.check_packet(packet(compressed + b" " + b"x" * 42)) == () + assert [d.path for d in a.check_packet(packet(compressed + b" " + b"x" * 43))] == [ + "$.payload.comment" + ] + # Envelope limits still count every weather byte. + tight = dataclasses.replace(a.RF, max_information_bytes=60) + findings = a.check_packet(packet(weather + b"L123wRSW"), policy=tight) + assert [d.path for d in findings] == ["$.payload"] + + +@pytest.mark.parametrize( + "raw", + [ + b"N0CALL>APRS:_10090556c220s004g005t077r000p000P000h50b09900wRSW", + b"N0CALL>APRS:!4903.50N/07201.75W_220/004g005t077r000p000P000h50b09900wRSW", + ], +) +def test_weather_codes_must_end_the_report(raw): + # APRS101 pp.63-66 end every weather report with the S/uuuu codes and define + # no comment after them, so a comment would hide the codes on read-back. + received = packet(raw) + assert a.check_packet(received) == () + payload = dataclasses.replace(received.payload, comment="home") + both = dataclasses.replace(received, payload=payload) + findings = a.check_packet(both) + assert [(d.path, d.message) for d in findings] == [ + ( + "$.payload.comment", + ( + "weather software/unit codes must end the report; " + "a comment cannot follow them" + ), + ) + ] + with pytest.raises(a.ConformanceError): + a.serialize_packet(both) + # Without codes, the comment is sent and read back unchanged. + if isinstance(payload, a.Weather): + uncoded = dataclasses.replace(payload, software_code=None, device_code=None) + else: + assert payload.extensions.weather is not None + weather = dataclasses.replace( + payload.extensions.weather, software_code=None, device_code=None + ) + uncoded = dataclasses.replace( + payload, + extensions=dataclasses.replace(payload.extensions, weather=weather), + ) + # Without codes, a comment shaped like codes would be read back as codes. + lookalike = dataclasses.replace(both, payload=uncoded) + assert [(d.path, d.message) for d in a.check_packet(lookalike)] == [ + ( + "$.payload.comment", + "comment would be read back as weather software/unit codes", + ) + ] + # Any other comment is sent and read back unchanged. + for comment in ("home station", "73!"): + plain = dataclasses.replace( + lookalike, payload=dataclasses.replace(uncoded, comment=comment) + ) + resent = packet(a.serialize_packet(plain)) + assert resent.payload.comment == comment diff --git a/packages/aprs/tests/packets/test_envelope_policy.py b/packages/aprs/tests/packets/test_envelope_policy.py index e138ff8..d7fbbb5 100644 --- a/packages/aprs/tests/packets/test_envelope_policy.py +++ b/packages/aprs/tests/packets/test_envelope_policy.py @@ -52,7 +52,7 @@ def assert_conformance( [ ("N0CALL", True, True), ("n0call", False, True), - ("N0CALL-0", True, True), + ("N0CALL-0", True, False), # APRS-IS drops SSID -0. ("N0CALL-15", True, True), ("N0CALL-16", False, True), ("N0CALL-JS", False, True), @@ -76,6 +76,16 @@ def test_source_formats(address: str, rf_ok: bool, internet_ok: bool) -> None: assert_conformance(raw, policy, set() if valid else {"$.header.source"}) +def test_internet_rejects_ssid_zero_everywhere() -> None: + # aprs-is.net: "SSID -0 is dropped as conflicts with not present SSID". + for raw, path in ( + (b"N0CALL>APRS-0:>Ready", "$.header.destination"), + (b"N0CALL>APRS,WIDE1-0:>Ready", "$.header.path[0].address"), + ): + assert_conformance(raw, a.APRS_IS, {path}) + assert_conformance(raw, a.RF, set()) + + @pytest.mark.parametrize("address", ["A", "AB", "A-1", "qAR", "AE5PL-JS"]) def test_internet_destination_and_path_allow_short_addresses(address: str) -> None: assert_conformance(f"N0CALL>{address},{address}*:>Ready".encode(), a.APRS_IS, set()) diff --git a/packages/aprs/tests/packets/test_roundtrip_corpus.py b/packages/aprs/tests/packets/test_roundtrip_corpus.py index 8767822..5215ed9 100644 --- a/packages/aprs/tests/packets/test_roundtrip_corpus.py +++ b/packages/aprs/tests/packets/test_roundtrip_corpus.py @@ -36,7 +36,21 @@ "FAP-047", "FAP-051", "FAP-052", + # APRS-IS drops SSID -0; RF and the permissive corpus policy accept it. + "HDR-002", + "HDR-036", } +CHECKSUM_FINDING = "$.payload.metadata.checksum_valid" + + +def repair_checksum(packet: a.Packet) -> a.Packet: + """The explicit repair a caller makes before resending a bad checksum.""" + n = packet.payload + assert isinstance(n, a.NMEA) + metadata = dataclasses.replace(n.metadata, checksum_valid=None) + return dataclasses.replace( + packet, payload=dataclasses.replace(n, metadata=metadata) + ) def without_evidence(value: Any) -> Any: @@ -97,6 +111,18 @@ def test_vector_roundtrip(row): assert [d.message for d in packet.diagnostics] == exception["reasons"] return clean = without_evidence(packet) + repaired = False + if ( + isinstance(clean.payload, a.NMEA) + and clean.payload.metadata.checksum_valid is False + ): + # A known-bad checksum is never re-signed implicitly: sending refuses + # until the caller clears checksum_valid as an explicit repair. + for send in (a.serialize_packet, a.validate_packet, a.serialize_tnc2_line): + with pytest.raises(a.ConformanceError) as caught: + send(clean, policy=CORPUS_POLICY) + assert [d.path for d in caught.value.diagnostics] == [CHECKSUM_FINDING] + clean, repaired = repair_checksum(clean), True if exception: assert exception["kind"] == "conformance" with pytest.raises(a.ConformanceError) as caught: @@ -118,8 +144,9 @@ def test_vector_roundtrip(row): if n.metadata.checksum_supplied is not None: assert isinstance(decoded.payload, a.NMEA) assert decoded.payload.metadata.checksum_valid is True - if n.metadata.checksum_valid is False: - # Three deliberately bad checksums are repaired, not replayed. + if repaired: + # After explicit repair the encoder signs the trusted fields, + # and the receiver re-evaluates fix usability. s = n.sentence usable = ( s.fix_quality > 0 diff --git a/packages/aprs/tests/roundtrip_exceptions.json b/packages/aprs/tests/roundtrip_exceptions.json index f21222b..22fc39d 100644 --- a/packages/aprs/tests/roundtrip_exceptions.json +++ b/packages/aprs/tests/roundtrip_exceptions.json @@ -655,14 +655,6 @@ "invalid coordinate syntax" ] }, - "FAP-032": { - "kind": "conformance", - "reasons": ["extensions and comment exceed 43 bytes"] - }, - "FAP-033": { - "kind": "conformance", - "reasons": ["extensions and comment exceed 43 bytes"] - }, "FAP-038": { "kind": "malformed", "reasons": ["missing information separator"] @@ -1180,10 +1172,6 @@ "kind": "conformance", "reasons": ["extensions and comment exceed 43 bytes"] }, - "FAP-475": { - "kind": "conformance", - "reasons": ["extensions and comment exceed 43 bytes"] - }, "FAP-476": { "kind": "conformance", "reasons": ["extensions and comment exceed 43 bytes"] @@ -1203,10 +1191,6 @@ "requires an integer in 0..255" ] }, - "FAP-497": { - "kind": "conformance", - "reasons": ["extensions and comment exceed 43 bytes"] - }, "FAP-500": { "kind": "malformed", "reasons": ["invalid object name or alive marker"] diff --git a/packages/aprs/tests/test_vector_corpus_contract.py b/packages/aprs/tests/test_vector_corpus_contract.py index 88d493e..552614d 100644 --- a/packages/aprs/tests/test_vector_corpus_contract.py +++ b/packages/aprs/tests/test_vector_corpus_contract.py @@ -29,12 +29,12 @@ def all_rows() -> list[dict[str, Any]]: def test_complete_source_extraction() -> None: rows = all_rows() assert len(list(VECTORS.glob("*.jsonl"))) == 18 - assert len(rows) == 1561 # 1,538 individual packets + 23 sequence occurrences. + assert len(rows) == 1564 # 1,541 individual packets + 23 sequence occurrences. assert len({row["id"] for row in rows}) == len(rows) assert sorted(rows, key=lambda r: r["id"]) == sorted( records(), key=lambda r: r["id"] ) - assert len({row.get("sequence", row["id"]) for row in rows}) == 1545 + assert len({row.get("sequence", row["id"]) for row in rows}) == 1548 def test_comparator_checks_missing_null_lists_and_tolerances() -> None: @@ -129,8 +129,16 @@ def validate(value: Any, annotation: Any, path: str) -> None: validate(row["expected"], a.Packet, row["id"]) +# Source cases added after the PR #4 freeze (see the corpus amendment note). +AMENDED_IDS = {"WX-067", "WX-068", "WX-069"} + + def test_original_vector_bytes_expectations_and_provenance_are_unchanged() -> None: - """Frozen at PR #4 head b97beb7970c6b6fec2c0b6e30200f348bb87d96c.""" + """Frozen at PR #4 head b97beb7970c6b6fec2c0b6e30200f348bb87d96c. + + Later source amendments are frozen separately, so the original digest keeps + proving that no original vector changed. + """ import hashlib keys = [ @@ -147,9 +155,19 @@ def test_original_vector_bytes_expectations_and_provenance_are_unchanged() -> No "extension_tags", "sequence", ] - original = [{k: r[k] for k in keys if k in r} for r in all_rows()] - encoded = json.dumps(original, sort_keys=True, separators=(",", ":")).encode() + + def digest(rows: list[dict[str, Any]]) -> str: + frozen = [{k: r[k] for k in keys if k in r} for r in rows] + encoded = json.dumps(frozen, sort_keys=True, separators=(",", ":")).encode() + return hashlib.sha256(encoded).hexdigest() + + rows = all_rows() + assert {r["id"] for r in rows} >= AMENDED_IDS assert ( - hashlib.sha256(encoded).hexdigest() + digest([r for r in rows if r["id"] not in AMENDED_IDS]) == "2db005c07f133aa738ccf3ec65b6364bf57d48cceff447a72c63e659c612573e" ) + assert ( + digest([r for r in rows if r["id"] in AMENDED_IDS]) + == "54b230e42653249842ec4c1143ad4f618c66eeba967366446944d3fd45a412db" + ) diff --git a/packages/aprs/tests/vectors/README.md b/packages/aprs/tests/vectors/README.md index d305d0f..368fb55 100644 --- a/packages/aprs/tests/vectors/README.md +++ b/packages/aprs/tests/vectors/README.md @@ -1,10 +1,11 @@ # Documented APRS vectors -These 18 JSONL files retain all 1,538 individual packets and 23 sequence -occurrences from [edition 1](../../docs/APRS_COMPLIANCE_VECTORS.md): 1,561 rows and -1,545 original case IDs. Every raw TNC2 byte, source expectation, receiver option -and provenance field is unchanged from PR #4. A frozen integrity test protects -that requirement, independently of regeneration. +These 18 JSONL files retain all 1,541 individual packets and 23 sequence +occurrences from [edition 1](../../docs/APRS_COMPLIANCE_VECTORS.md): 1,564 rows and +1,548 case IDs. Every raw TNC2 byte, source expectation, receiver option and +provenance field of the original 1,561 rows is unchanged from PR #4. A frozen +integrity test protects that requirement, independently of regeneration; the +three cases added by the corpus amendment (WX-067–WX-069) are frozen separately. Run from the repository root: @@ -59,17 +60,19 @@ values remain unchanged and are also checked. Sequence rows contain `state_expected` and run all preceding steps through a test receiver implemented using public packet models. State is not added to the codec. -All 1,561 rows pass without xfails. Every row also participates in encoding tests: -1,296 semantic round trips under an explicit permissive envelope policy -(`EnvelopePolicy(".*", ".*", ".*")`), with checksum repair for three intentionally bad NMEA -checksums, and 265 explicit malformed/conformance refusals. The reviewed +All 1,564 rows pass without xfails. Every row also participates in encoding tests: +1,303 semantic round trips under an explicit permissive envelope policy +(`EnvelopePolicy(".*", ".*", ".*")`), and 261 explicit malformed/conformance +refusals. Three intentionally bad NMEA checksums are refused until explicitly +repaired, then round-trip. The reviewed `../roundtrip_exceptions.json` records exact reasons. Adding a new unexpected refusal or silently fixing a recorded one fails the test; this file is not regenerated by `generate_vectors.py`. -The new default `APRS_IS` policy additionally refuses serialization for 13 of -those round-trippable packets because of their address formats. The tests assert -those refusals separately and validate the other 1,283 under the default policy. +The new default `APRS_IS` policy additionally refuses serialization for 15 of +those round-trippable packets because of their address formats (including SSID +`-0`). The tests assert those refusals separately and validate the other 1,288 +under the default policy. This preserves the source vectors while exercising both representation and transport constraints through the public API. diff --git a/packages/aprs/tests/vectors/wx.jsonl b/packages/aprs/tests/vectors/wx.jsonl index ca0cc97..595b8c4 100644 --- a/packages/aprs/tests/vectors/wx.jsonl +++ b/packages/aprs/tests/vectors/wx.jsonl @@ -64,3 +64,6 @@ {"id":"WX-064","title":"Linked water-gauge field F-1.2","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077F-1.2","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"F","raw":"-1.2","value":-1.2,"unit":"ft","meters":-0.36576,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"water_height":{"measurement":{"value":-1.2,"unit":"feet"},"reference_datum":null}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.wind_speed_mps"]} {"id":"WX-065","title":"Linked water-gauge field f20.1","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077f20.1","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"f","raw":"20.1","value":20.1,"unit":"m","meters":20.1,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"water_height":{"measurement":{"value":20.1,"unit":"meters"},"reference_datum":null}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.wind_speed_mps"]} {"id":"WX-066","title":"Linked water-gauge field f-1.2","profile":"linked-weather-extension","source":"A11 WX (2010 water-gauge addition)","packet":"N0CALL>APRS:_10090556c220s004g005t077f-1.2","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"water_height":{"field":"f","raw":"-1.2","value":-1.2,"unit":"m","meters":-1.2,"reference_datum":null}}},"note":"Four-character value; the packet does not identify the gauge datum. This is a later linked extension, kept separate from the historical 1.0/1.1 core.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"water_height":{"measurement":{"value":-1.2,"unit":"meters"},"reference_datum":null}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.temperature_c","$.weather.water_height.field","$.weather.water_height.meters","$.weather.water_height.raw","$.weather.wind_speed_mps"]} +{"id":"WX-067","title":"APRS101 rain-gauge example: trailing text as software/unit","profile":"core-1.1","source":"APRS101 pp. 63-64","packet":"N0CALL>APRS:_10090556c...s...g...t...P012Jim","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":null,"wind_speed_mph":null,"wind_speed_mps":null,"gust_mph":null,"gust_mps":null,"temperature_f":null,"temperature_c":null,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"software_code":"J","device_code":"im"}},"note":"The specification's own example. By the p.63 layout a report ends with the optional software code S (1 byte) and unit code uuuu (2-4 bytes), so the trailing 'Jim' is software 'J' and unit 'im'. The grammar cannot distinguish a short name from these codes.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"software_code":"J","device_code":"im","wind_direction":{"value":null,"unit":"degrees"},"wind_speed":{"value":null,"unit":"mph"},"gust":{"value":null,"unit":"mph"},"temperature":{"value":null,"unit":"fahrenheit"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-068","title":"Short trailing text reads as software/unit codes","profile":"core-1.1","source":"APRS101 p. 63","packet":"N0CALL>APRS:_10090556c220s004g005t077P012Home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"software_code":"H","device_code":"ome"}},"note":"Unit codes are open-ended ('Users may specify any other 2-4 character code'), so any 3-5 trailing characters that end the report are read as S plus uuuu. Receivers must not reinterpret them as comment text.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"software_code":"H","device_code":"ome","wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} +{"id":"WX-069","title":"Text after software/unit codes is comment","profile":"core-1.1","source":"APRS101 pp. 63-66","packet":"N0CALL>APRS:_10090556c220s004g005t077P012wRSW home","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"APRS","path":[]},"kind":"weather","timestamp":{"raw":"10090556","format":"MDHM","zone":"UTC","month":10,"day":9,"hour":5,"minute":56},"weather":{"wind_direction_deg":220,"wind_speed_mph":4,"wind_speed_mps":1.78816,"gust_mph":5,"gust_mps":2.2352,"temperature_f":77,"temperature_c":25.0,"rain_since_midnight_hundredth_in":12,"rain_since_midnight_mm":3.048,"software_code":null,"device_code":null},"comment":"wRSW home"},"note":"Every weather format ends with the optional S and uuuu codes; none defines a comment after them. Text that does not end the report as exactly those codes is retained as comment and no codes are inferred. Transmitters must not place a comment after the codes.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"weather","comment":"wRSW home","timestamp":{"kind":"mdhm_utc","day":9,"month":10,"hour":5,"minute":56},"software_code":null,"device_code":null,"wind_direction":{"value":220,"unit":"degrees"},"wind_speed":{"value":4,"unit":"mph"},"gust":{"value":5,"unit":"mph"},"temperature":{"value":77,"unit":"fahrenheit"},"rain_since_midnight":{"value":0.12,"unit":"inches"}}},"unmapped":["$.timestamp.raw","$.weather.gust_mps","$.weather.rain_since_midnight_mm","$.weather.temperature_c","$.weather.wind_speed_mps"]} From 038603b35b7d064dd61e25e5825630998d12da81 Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Sat, 17 Oct 2026 12:08:39 -0700 Subject: [PATCH 09/14] Progress removing _compatibility.py --- packages/aprs/docs/API_COVERAGE.md | 14 +- packages/aprs/tests/fap_divergences.json | 298 ++++++++++++++++++ packages/aprs/tests/generate_vectors.py | 39 +++ packages/aprs/tests/packets/test_corpus.py | 69 ++-- .../aprs/tests/test_vector_corpus_contract.py | 8 +- .../tests/test_vector_schema_migration.py | 52 ++- packages/aprs/tests/vectors/README.md | 34 +- packages/aprs/tests/vectors/fap.jsonl | 74 ++--- 8 files changed, 468 insertions(+), 120 deletions(-) create mode 100644 packages/aprs/tests/fap_divergences.json diff --git a/packages/aprs/docs/API_COVERAGE.md b/packages/aprs/docs/API_COVERAGE.md index af30290..012ca27 100644 --- a/packages/aprs/docs/API_COVERAGE.md +++ b/packages/aprs/docs/API_COVERAGE.md @@ -65,12 +65,14 @@ The runtime weather-unit conversion, wrapper flattening, and NMEA source-schema comparison have been removed. Source snapshots and all raw packet bytes remain unchanged; inverse-unit and source-value tests check that no information was lost. -Nineteen additional cases now use direct public JSON comparisons with the main -compatibility view disabled. Bypassing that view elsewhere still exposes 60 -failing vector tests: 58 FAP and two conflicting modern-beacon interpretations. -That count includes real interpretation, incomplete-decoding and acceptance -differences, not schema mismatches. Supplemental source-fact helpers remain in -use, so it is not a count of every dependency on historical receiver behavior. +All but 23 vectors compare public `parse_packet` output with their stored +expectations directly. Thirty-seven FAP expectations record where FAP's +interpretation differs from the specification-following public decoder +(`tests/fap_divergences.json`). The remaining 23 still use the compatibility +view: Mic-E manufacturer prefixes, the embedded `!` search in modern beacons, +`000000z` timestamps, short or decimal telemetry, minimal GLL sentences and +trailing APRS 1.2 weather fields. Supplemental FAP source facts are still +checked through the adapter's helpers. The 23 sequence occurrences run through a test application receiver using public models. Ownership, deduplication, acknowledgment construction, calibration, diff --git a/packages/aprs/tests/fap_divergences.json b/packages/aprs/tests/fap_divergences.json new file mode 100644 index 0000000..58508d6 --- /dev/null +++ b/packages/aprs/tests/fap_divergences.json @@ -0,0 +1,298 @@ +{ + "reasons": { + "whitespace": "Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them.", + "case": "Callsigns keep the case transmitted; FAP uppercases them.", + "course_zero": "A compressed course byte of 0 is reported as 0 degrees, as transmitted; FAP rewrites it to 360.", + "mic_e_sequence": "Mic-E hex telemetry carries no sequence number, so none is reported; FAP reports 0.", + "nmea_precision": "NMEA course keeps the transmitted precision; FAP rounds to whole degrees.", + "nmea_symbol": "APRS101 assigns a default symbol from the source SSID when NMEA has no symbol destination (SSID 11 is the balloon, /O); FAP reports no symbol.", + "parm_case": "APRS101 defines the telemetry keywords in upper case, so 'parm.' is ordinary message text; FAP matches them case-insensitively.", + "wx_symbol": "A weather-station symbol with no weather fields is a position with a comment; FAP reports an empty weather report and discards the comment.", + "disputed_wind": "The uncompressed wind-speed unit is disputed between the specifications and stays marked as disputed; FAP assumes mph.", + "user_defined": "'{' is APRS101's user-defined data type, so this decodes as user-defined data; FAP rejects experimental formats.", + "unknown_nmea": "Unknown NMEA sentences are kept as opaque data with an 'unsupported' diagnostic, not rejected.", + "vtg": "$GPVTG is a supported NMEA sentence (course and speed only, so no usable position); FAP rejects it.", + "beacon": "Text with no position in the first 40 bytes is a non-APRS beacon, kept as text; FAP rejects it." + }, + "rows": { + "FAP-013": { + "reasons": ["case"], + "set": { + "$.header.source": "oh7lzb" + } + }, + "FAP-016": { + "reasons": ["case"], + "set": { + "$.header.destination": "aprs" + } + }, + "FAP-022": { + "reasons": ["user_defined"], + "accept": { + "payload": { + "type": "user_defined", + "user_id": "{", + "user_type": " ", + "data": "unsupported experimental format" + } + } + }, + "FAP-030": { + "reasons": ["course_zero", "whitespace"], + "set": { + "$.payload.comment": " Tero, Green Volvo 960, GGL-880", + "$.payload.extensions.motion.course_deg": 0 + } + }, + "FAP-034": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " 12.3V 21C" + } + }, + "FAP-035": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " http://aprs.fi/" + } + }, + "FAP-347": { + "reasons": ["mic_e_sequence", "whitespace"], + "set": { + "$.payload.comment": " commeeeent", + "$.payload.extensions.telemetry.sequence": null + } + }, + "FAP-357": { + "reasons": ["nmea_precision", "nmea_symbol"], + "set": { + "$.payload.sentence.course_deg": 27.9, + "$.payload.symbol": { + "table_id": "/", + "code": "O" + } + } + }, + "FAP-359": { + "reasons": ["nmea_symbol"], + "set": { + "$.payload.symbol": { + "table_id": "/", + "code": "O" + } + } + }, + "FAP-361": { + "reasons": ["nmea_symbol"], + "set": { + "$.payload.symbol": { + "table_id": "/", + "code": "O" + } + } + }, + "FAP-363": { + "reasons": ["unknown_nmea"], + "accept": { + "payload": { + "type": "opaque", + "information": "$XXXXX,A,B,C", + "diagnostic": { + "code": "unsupported", + "path": "$" + } + } + } + }, + "FAP-366": { + "reasons": ["vtg"], + "accept": { + "payload": { + "type": "nmea", + "sentence": { + "type": "vtg", + "course_true_deg": 0.0, + "course_magnetic_deg": 0.0, + "speed_knots": 0.0, + "speed_kmh_reported": 0.0 + }, + "metadata": { + "talker": "GP", + "checksum_supplied": null, + "checksum_valid": null, + "fields_raw": ["0", "T", "0", "M", "0", "N", "0", "K"] + }, + "position_usable": false, + "symbol": null, + "comment": "" + } + } + }, + "FAP-408": { + "reasons": ["beacon"], + "accept": { + "payload": { + "type": "beacon", + "text": "0123456789012345678901234567890123456789!6028.51N/02505.68E#" + } + } + }, + "FAP-409": { + "reasons": ["beacon"], + "accept": { + "payload": { + "type": "beacon", + "text": "Tno position here at all" + } + } + }, + "FAP-417": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": "test " + } + }, + "FAP-418": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " " + } + }, + "FAP-419": { + "reasons": ["course_zero", "whitespace"], + "set": { + "$.payload.comment": " Tero, Green Volvo 960, GGL-880", + "$.payload.extensions.motion.course_deg": 0 + } + }, + "FAP-421": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": "a|b " + } + }, + "FAP-428": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " comment " + } + }, + "FAP-429": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " comment " + } + }, + "FAP-431": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " comment " + } + }, + "FAP-444": { + "reasons": ["parm_case"], + "set": { + "$.payload": { + "type": "message", + "addressee": "N0CALL", + "text": "parm.Vin,Rx1h", + "message_id": null, + "reply_ack": null + } + } + }, + "FAP-446": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " {UIV32N}" + } + }, + "FAP-447": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " {UIV32N}" + } + }, + "FAP-448": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " 14.3V 27C HDOP01.0 SATS09" + } + }, + "FAP-449": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " 14.3V 27C HDOP01.0 SATS09" + } + }, + "FAP-450": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " 14.3V 27C HDOP01.0 SATS09" + } + }, + "FAP-451": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " 14.3V 27C HDOP01.0 SATS09" + } + }, + "FAP-452": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " {UIV32N}" + } + }, + "FAP-453": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " 14.3V 27C HDOP01.0 SATS09" + } + }, + "FAP-457": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " " + } + }, + "FAP-465": { + "reasons": ["wx_symbol"], + "set": { + "$.payload.comment": "Home of KA0RID" + }, + "remove": ["$.payload.extensions.weather"], + "drop_unmapped": ["$.fap_fields.Wx."] + }, + "FAP-471": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " 13.8V 15CYB1RUS-9 Mobile Tracker" + } + }, + "FAP-472": { + "reasons": ["whitespace"], + "set": { + "$.payload.comment": " 13.8V 15CYB1RUS-9 Mobile Tracker" + } + }, + "FAP-474": { + "reasons": ["disputed_wind"], + "set": { + "$.payload.extensions.weather.wind_speed.unit": "disputed_knots_or_mph" + } + }, + "FAP-475": { + "reasons": ["disputed_wind"], + "set": { + "$.payload.extensions.weather.wind_speed.unit": "disputed_knots_or_mph" + } + }, + "FAP-476": { + "reasons": ["disputed_wind"], + "set": { + "$.payload.extensions.weather.wind_speed.unit": "disputed_knots_or_mph" + } + } + } +} diff --git a/packages/aprs/tests/generate_vectors.py b/packages/aprs/tests/generate_vectors.py index 0231366..271ab7c 100644 --- a/packages/aprs/tests/generate_vectors.py +++ b/packages/aprs/tests/generate_vectors.py @@ -18,6 +18,7 @@ ROOT = Path(__file__).parents[1] SOURCE = ROOT / "docs/APRS_COMPLIANCE_VECTORS.md" DEST = ROOT / "tests/vectors" +DIVERGENCES = ROOT / "tests/fap_divergences.json" JSON = dict[str, Any] @@ -754,6 +755,40 @@ def fap_projection(e: JSON, packet: str) -> JSON: return result +def diverge(row: JSON, divergences: JSON) -> None: + """Replace FAP-specific interpretations with the reviewed public expectation. + + Each override names its reasons; source_expected keeps FAP's own values. + """ + assert row["profile"] == "compatibility-fap", row["id"] + entry = divergences["rows"][row["id"]] + row["divergence"] = [divergences["reasons"][key] for key in entry["reasons"]] + if "accept" in entry: + assert row.pop("rejection"), row["id"] + row["expected"] = { + "type": "packet", + "original_wire": row["packet"], + **entry["accept"], + } + return + for path, value in entry.get("set", {}).items(): + *parents, key = path.removeprefix("$.").split(".") + target = row["expected"] + for name in parents: + target = target[name] + assert key in target, (row["id"], path) + target[key] = value + for prefix in entry.get("drop_unmapped", []): + # Facts from FAP's interpretation that the public expectation rejects. + row["unmapped"] = [p for p in row["unmapped"] if not p.startswith(prefix)] + for path in entry.get("remove", []): + *parents, key = path.removeprefix("$.").split(".") + target = row["expected"] + for name in parents: + target = target[name] + del target[key] + + def nest_legacy_position(result: JSON, packet: str) -> None: """Use the existing wrapper for source assertions identifying a position.""" payload = result.get("payload", {}) @@ -774,6 +809,7 @@ def nest_legacy_position(result: JSON, packet: str) -> None: def records() -> list[JSON]: result = [] defaults: JSON = {} + divergences = json.loads(DIVERGENCES.read_text()) for block in re.findall(r"```json\n(.*?)\n```", SOURCE.read_text(), re.DOTALL): case = json.loads(block) if "fap_field_defaults" in case: @@ -827,7 +863,10 @@ def records() -> list[JSON]: row[ "unresolved" ] = "Source has no mapped payload expectation; retain the original assertions for adapter completion." + if row["id"] in divergences["rows"]: + diverge(row, divergences) result.append(row) + assert set(divergences["rows"]) <= {row["id"] for row in result} return result diff --git a/packages/aprs/tests/packets/test_corpus.py b/packages/aprs/tests/packets/test_corpus.py index fb99fd2..ef75cbd 100644 --- a/packages/aprs/tests/packets/test_corpus.py +++ b/packages/aprs/tests/packets/test_corpus.py @@ -15,28 +15,35 @@ DIRECTORY = Path(__file__).parents[1] / "vectors" -# These cases previously differed only in schema/units. Their persisted -# expectations now match the public schema, so bypass the compatibility view. -SCHEMA_NATIVE_IDS = { - "FAP-005", - "FAP-036", - "FAP-345", - "FAP-346", - "FAP-032", - "FAP-033", - "FAP-406", - "FAP-407", - "FAP-477", - "FAP-478", - "FAP-479", - "FAP-480", - "FAP-481", - "FAP-491", - "FAP-492", - "FAP-493", - "FAP-494", - "OTH-034", - "OTH-036", +# Rows still checked through the private compatibility view. Each one waits on +# a parser change or a decision; every other row compares parse_packet output +# directly. Group 2: Mic-E manufacturer prefixes and the embedded "!" search. +# Group 3: 000000z timestamps, short or decimal telemetry, minimal GLL and +# trailing APRS 1.2 weather fields (X/V tails also read as software/unit codes). +COMPATIBILITY_PENDING = { + "FAP-348", + "FAP-349", + "FAP-430", + "OTH-033", + "OTH-035", + "FAP-362", + "FAP-433", + "FAP-434", + "FAP-435", + "FAP-436", + "FAP-454", + "FAP-455", + "FAP-456", + "FAP-482", + "FAP-483", + "FAP-484", + "FAP-485", + "FAP-486", + "FAP-487", + "FAP-488", + "FAP-489", + "FAP-490", + "FAP-497", } @@ -96,15 +103,19 @@ def public_phg_row(row: dict[str, Any]) -> bool: def check(row: dict[str, Any]) -> None: raw = row["packet"].encode("latin-1") - if public_phg_row(row) or row["id"] in SCHEMA_NATIVE_IDS: - packet = aprs.parse_packet(raw) - assert isinstance(packet, aprs.Packet) - actual = aprs.to_json_dict(packet, include_defaults=True) - rejected = any(d.code == "nonconforming" for d in packet.diagnostics) - else: + packet: aprs.Packet | aprs.Malformed | None = None + if row["id"] in COMPATIBILITY_PENDING: from hamkit.aprs._compatibility import view actual, rejected = view(raw, row["profile"], row.get("options")) + else: + options = row.get("options") or {} + strict = row["profile"] == "strict-envelope" or options.get("ax25") + packet = aprs.parse_packet(raw, policy=aprs.RF if strict else aprs.APRS_IS) + actual = aprs.to_json_dict(packet, include_defaults=True) + rejected = isinstance(packet, aprs.Malformed) or any( + d.code == "nonconforming" for d in packet.diagnostics + ) assert actual["original_wire"] == row["packet"], "original bytes changed" assert not row.get("gap") and not row.get("unresolved") errors = differences(actual, row["expected"]) @@ -123,7 +134,7 @@ def check(row: dict[str, Any]) -> None: errors.extend(check_public_phg(row, packet)) else: errors.extend( - check_fap(row, packet if row["id"] in SCHEMA_NATIVE_IDS else None) + check_fap(row, packet if isinstance(packet, aprs.Packet) else None) ) if row.get("sequence"): from receiver import Receiver diff --git a/packages/aprs/tests/test_vector_corpus_contract.py b/packages/aprs/tests/test_vector_corpus_contract.py index 552614d..d9d4bad 100644 --- a/packages/aprs/tests/test_vector_corpus_contract.py +++ b/packages/aprs/tests/test_vector_corpus_contract.py @@ -46,14 +46,12 @@ def test_comparator_checks_missing_null_lists_and_tolerances() -> None: def test_mismatch_cannot_be_hidden(monkeypatch: pytest.MonkeyPatch) -> None: - from hamkit.aprs import _compatibility - row = next(r for r in all_rows() if r["id"] == "STA-008") check(row) packet = a.parse_packet(row["packet"].encode("latin-1")) assert isinstance(packet, a.Packet) bad = replace(packet, header=a.Header("WRONG", "APRS")) - monkeypatch.setattr(_compatibility, "parse_packet", lambda *args, **kwargs: bad) + monkeypatch.setattr(a, "parse_packet", lambda *args, **kwargs: bad) with pytest.raises(AssertionError, match="header.source"): check(row) @@ -66,9 +64,7 @@ def test_parser_exception_is_not_an_expected_failure( def broken(*args: Any, **kwargs: Any) -> Any: raise RuntimeError("unexpected parser crash") - from hamkit.aprs import _compatibility - - monkeypatch.setattr(_compatibility, "parse_packet", broken) + monkeypatch.setattr(a, "parse_packet", broken) with pytest.raises(RuntimeError, match="unexpected parser crash"): check(row) diff --git a/packages/aprs/tests/test_vector_schema_migration.py b/packages/aprs/tests/test_vector_schema_migration.py index 219b06e..4d707a2 100644 --- a/packages/aprs/tests/test_vector_schema_migration.py +++ b/packages/aprs/tests/test_vector_schema_migration.py @@ -6,7 +6,8 @@ import pytest from generate_vectors import records -from packets.test_corpus import SCHEMA_NATIVE_IDS, check, rows +from packets import test_corpus +from packets.test_corpus import COMPATIBILITY_PENDING, check, rows from hamkit import aprs as a @@ -20,6 +21,8 @@ row for row in FAP_ACCEPTED if row["source_expected"]["fap_fields"]["Wx"] is not None + # FAP-465 diverges: its weather symbol carries no weather fields. + and row["id"] != "FAP-465" ] NMEA = [ row @@ -50,30 +53,19 @@ def forbidden(*args, **kwargs): @pytest.mark.parametrize( - "row", [r for r in ROWS if r["id"] in SCHEMA_NATIVE_IDS], ids=lambda row: row["id"] + "row", + [r for r in ROWS if r["id"] in COMPATIBILITY_PENDING], + ids=lambda row: row["id"], ) -def test_schema_only_cases_bypass_compatibility_view(monkeypatch, row): - from hamkit.aprs import _compatibility - - def forbidden(*args, **kwargs): - raise AssertionError("Schema changes belong in persisted expectations") - - original_facts = _compatibility.facts - - def supplemental(raw, options=None, *, packet=None): - assert isinstance(packet, a.Packet) - return original_facts(raw, options, packet=packet) - - monkeypatch.setattr(_compatibility, "view", forbidden) - monkeypatch.setattr(_compatibility, "facts", supplemental) - monkeypatch.setattr(_compatibility, "rejected_facts", forbidden) - monkeypatch.setattr(_compatibility, "_mic_e_compat", forbidden) - check(row) +def test_pending_rows_still_need_the_compatibility_view(monkeypatch, row): + """Remove an ID from COMPATIBILITY_PENDING once the public parser meets it.""" + monkeypatch.setattr(test_corpus, "COMPATIBILITY_PENDING", set()) + with pytest.raises(AssertionError): + check(row) -def test_schema_only_coverage_is_not_empty_or_stale(): - assert len(SCHEMA_NATIVE_IDS) == 19 - assert SCHEMA_NATIVE_IDS <= {row["id"] for row in ROWS} +def test_pending_list_is_not_stale(): + assert COMPATIBILITY_PENDING <= {row["id"] for row in ROWS} @pytest.mark.parametrize("row", WEATHER, ids=lambda row: row["id"]) @@ -108,7 +100,10 @@ def test_weather_expectations_preserve_physical_measurements(row): reading = weather[target] value, unit = reading["value"], reading["unit"] if source in ("WindSpeed", "WindGust"): - assert unit in ("mph", "m/s") # Do not weaken mph to disputed units. + # Only a reviewed divergence may keep the disputed unit. + if unit == "disputed_knots_or_mph" and "divergence" in row: + unit = "mph" + assert unit in ("mph", "m/s") value = value * 0.44704 if unit == "mph" else value elif source == "Temp": assert unit in ("fahrenheit", "celsius") @@ -155,11 +150,14 @@ def test_nmea_observations_are_stored_in_typed_fields(row): assert sentence["speed_knots"] * 1.852 == pytest.approx( source["Speed"], abs=1e-12 ) + diverged = "divergence" in row # Course precision and default symbol. if source["Course"] is not None: - assert sentence["course_deg"] == source["Course"] + assert sentence["course_deg"] == pytest.approx( + source["Course"], abs=0.5 if diverged else 0 + ) if source["Altitude"] is not None: assert sentence["altitude_msl_m"] == source["Altitude"] - assert payload["symbol"] is None + assert diverged or payload["symbol"] is None assert source["SymbolTable"] is None and source["SymbolCode"] is None assert payload["metadata"]["checksum_valid"] == source["ChecksumOK"] # The source did not assert these sentence fields. Never invent them to make @@ -194,8 +192,8 @@ def test_migrated_values_are_asserted_not_only_archived(identifier): if identifier == "FAP-032": payload["extensions"]["weather"]["wind_direction"]["value"] += 1 elif identifier == "FAP-357": - assert payload["sentence"]["course_deg"] == 28 # Wire contains 27.9. - payload["sentence"]["course_deg"] = 27.9 + assert payload["sentence"]["course_deg"] == 27.9 # FAP reports 28. + payload["sentence"]["course_deg"] = 28 elif identifier == "FAP-406": payload["position"]["latitude_deg"] += 1 else: diff --git a/packages/aprs/tests/vectors/README.md b/packages/aprs/tests/vectors/README.md index 368fb55..5a386df 100644 --- a/packages/aprs/tests/vectors/README.md +++ b/packages/aprs/tests/vectors/README.md @@ -30,25 +30,29 @@ Rejection cases also check retained headers and partial observations, including invalid timestamps and the historical receiver's validation order. Error wording is represented by the public diagnostic scheme rather than copied verbatim. -Some profiles conflict for the same bytes. `_compatibility.py` expresses those -receiver policies without changing the public API or consulting expected values. -The canonical codec retains precise wire data; the adapter selects historical -comment trimming, disputed wind-unit interpretation, acceptance and warning policies. +Every row compares `parse_packet` output with `expected` directly, except the +23 listed in `COMPATIBILITY_PENDING` (`tests/packets/test_corpus.py`). Those +still go through the private `_compatibility.py` view while they wait on parser +changes or decisions; a regression test fails once one of them passes directly, +so the list can only shrink. + +Where FAP's interpretation differs from the public decoder's, and the public +one follows the specification, `tests/fap_divergences.json` replaces the +FAP-derived expectation. Each override names its reasons, such as comment +whitespace kept as transmitted, callsign case, compressed course 0, disputed +wind units, NMEA default symbols and precision, and packets FAP refuses but the +specification allows. The generator applies the overrides, copies the reasons +into the row's `divergence` field and leaves `outcome` and `source_expected` as +FAP captured them. The schema migration rewrote 35 stored expectations (33 FAP and two historical position cases): equivalent weather units, compressed weather wind nesting, `LegacyPosition`/`RawWeather` wrappers, four flattened NMEA observations, and four Mic-E device markers split from comments. -Captured rounded values, whitespace, absent symbols, and incomplete reports were -not changed to agree with the decoder. For example, FAP-357 still expects course -28 despite the wire containing 27.9. Uncompressed FAP wind retains an explicit -mph interpretation rather than changing to the public decoder's disputed unit. - -Nineteen formerly adapter-dependent cases now compare public packet JSON directly, -with regression tests disabling the compatibility view. Offline conversion tests -reverse unit changes back to the captured measurements and verify stored fields -against source values. The original `source_expected` snapshots remain immutable -provenance; their supplemental observations without public model fields remain -explicitly asserted, not discarded or silently added to the packet schema. +Offline conversion tests reverse unit changes back to the captured measurements +and verify stored fields against source values. The original `source_expected` +snapshots remain immutable provenance; their supplemental observations without +public model fields remain explicitly asserted, not discarded or silently added +to the packet schema. All 29 PHG/PHGR projections (including 15 FAP vectors) instead exercise the public API directly. Regression tests disable compatibility functions while checking diff --git a/packages/aprs/tests/vectors/fap.jsonl b/packages/aprs/tests/vectors/fap.jsonl index 7a77fdd..023d390 100644 --- a/packages/aprs/tests/vectors/fap.jsonl +++ b/packages/aprs/tests/vectors/fap.jsonl @@ -10,16 +10,16 @@ {"id":"FAP-010","title":"TestWithAX25/invalid_AX.25_digipeater_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS,TOOLONGCALLSIGN:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_noax25: digipeater callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,TOOLONGCALLSIGN:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-011","title":"TestWithAX25/too_many_path_components_for_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS,D1,D2,D3,D4,D5,D6,D7,D8,D9:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstpath_toomany: too many path components for AX.25"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS,D1,D2,D3,D4,D5,D6,D7,D8,D9:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-012","title":"TestWithAX25/max_8_digipeaters_is_valid","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS,D1,D2,D3,D4,D5,D6,D7,D8:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":[{"Call":"D1","WasDigied":false},{"Call":"D2","WasDigied":false},{"Call":"D3","WasDigied":false},{"Call":"D4","WasDigied":false},{"Call":"D5","WasDigied":false},{"Call":"D6","WasDigied":false},{"Call":"D7","WasDigied":false},{"Call":"D8","WasDigied":false}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[{"address":"D1","repeated":false},{"address":"D2","repeated":false},{"address":"D3","repeated":false},{"address":"D4","repeated":false},{"address":"D5","repeated":false},{"address":"D6","repeated":false},{"address":"D7","repeated":false},{"address":"D8","repeated":false}]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-013","title":"TestWithAX25/source_callsign_normalized_to_uppercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"oh7lzb>APRS:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-013","title":"TestWithAX25/source_callsign_normalized_to_uppercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"oh7lzb>APRS:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"oh7lzb","destination":"APRS","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"divergence":["Callsigns keep the case transmitted; FAP uppercases them."]} {"id":"FAP-014","title":"TestWithAX25/invalid_AX.25_destination_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>TOOLONGDST:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_noax25: destination callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>TOOLONGDST:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-015","title":"TestWithAX25/destination_SSID_too_large_for_AX.25","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS-16:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_noax25: destination callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS-16:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-016","title":"TestWithAX25/destination_callsign_normalized_to_uppercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>aprs:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-016","title":"TestWithAX25/destination_callsign_normalized_to_uppercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>aprs:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"aprs","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"divergence":["Callsigns keep the case transmitted; FAP uppercases them."]} {"id":"FAP-017","title":"TestDstCallNoAX25WithoutOption","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L132","packet":"OH7LZB>TOOLONGDST:>status","outcome":"reject","source_expected":{"fap_header":{"source":"OH7LZB","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: dstcall_noax25: destination callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>TOOLONGDST:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-018","title":"TestBadPacketCorruptedPosition","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L14","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!60ff.51N/0250akh3r99hfae","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: loc_inv: invalid latitude: invalid minutes: invalid character at position 2: f"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!60ff.51N/0250akh3r99hfae"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-019","title":"TestBadPacketBadSrcCall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L42","packet":"K6IFR_S>APJS10,TCPIP*,qAC,K6IFR-BS:;K6IFR B *250300z3351.79ND11626.40WaRNG0040 440 Voice 447.140 -5.00 Mhz","outcome":"reject","source_expected":{"fap_header":{"source":"K6IFR_S","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_badchars: source callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"K6IFR_S>APJS10,TCPIP*,qAC,K6IFR-BS:;K6IFR B *250300z3351.79ND11626.40WaRNG0040 440 Voice 447.140 -5.00 Mhz"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-020","title":"TestBadPacketBadDigiCall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L58","packet":"SV2BRF-6>APU25N,TCPXX*,qAX,SZ8L_GREE:=/:$U#T<:G- BVagelis, qrv:434.350, tsq:77 {UIV32N}","outcome":"reject","source_expected":{"fap_header":{"source":"SV2BRF-6","destination":"APU25N","digipeaters":[{"Call":"TCPXX","WasDigied":true},{"Call":"qAX","WasDigied":false}]},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_badchars: digipeater callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SV2BRF-6>APU25N,TCPXX*,qAX,SZ8L_GREE:=/:$U#T<:G- BVagelis, qrv:434.350, tsq:77 {UIV32N}"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-021","title":"TestBadPacketBadSymbolTable","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L74","packet":"ASDF>DSALK,OH2RDG*,WIDE:!6028.51N,02505.68E#","outcome":"reject","source_expected":{"fap_header":{"source":"ASDF","destination":"DSALK","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":null,"PosAmbiguity":0,"PosResolution":null,"SymbolTable":",","SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: sym_inv_table: invalid symbol table: ,"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"ASDF>DSALK,OH2RDG*,WIDE:!6028.51N,02505.68E#"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-022","title":"TestBadPacketExperimental","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L87","packet":"ASDF>DSALK,OH2RDG*,WIDE:{{ unsupported experimental format","outcome":"reject","source_expected":{"fap_header":{"source":"ASDF","destination":"DSALK","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: exp_unsupp: unsupported experimental packet"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"ASDF>DSALK,OH2RDG*,WIDE:{{ unsupported experimental format"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-022","title":"TestBadPacketExperimental","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/badpacket_test.go#L87","packet":"ASDF>DSALK,OH2RDG*,WIDE:{{ unsupported experimental format","outcome":"reject","source_expected":{"fap_header":{"source":"ASDF","destination":"DSALK","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: exp_unsupp: unsupported experimental packet"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","original_wire":"ASDF>DSALK,OH2RDG*,WIDE:{{ unsupported experimental format","payload":{"type":"user_defined","user_id":"{","user_type":" ","data":"unsupported experimental format"}},"divergence":["'{' is APRS101's user-defined data type, so this decodes as user-defined data; FAP rejects experimental formats."]} {"id":"FAP-023","title":"TestBeacon/non-APRS","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L13","packet":"OH2RDU>UIDIGI: UIDIGI 1.9","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"UIDIGI","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"UIDIGI","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-024","title":"TestBeacon/all_beacon_destinations/ID","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>ID:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"ID","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"ID","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-025","title":"TestBeacon/all_beacon_destinations/BEACON","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>BEACON:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"BEACON","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"BEACON","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} @@ -27,12 +27,12 @@ {"id":"FAP-027","title":"TestBeacon/all_beacon_destinations/CQ","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L34","packet":"OH2RDU>CQ:hello world","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"CQ","digipeaters":null},"fap_fields":{"Type":"beacon","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"CQ","path":[]},"payload":{"type":"beacon"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-028","title":"TestBeacon/beacon_with_position_fallback","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/beacon_test.go#L48","packet":"OH2RDU>BEACON:testing!6028.51N/02505.68E#PHG2360","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDU","destination":"BEACON","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"2360","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDU","destination":"BEACON","path":[]},"payload":{"type":"legacy_position","prefix":"testing","position":{"comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":4,"height_haat_ft":80,"gain_dbi":6,"directivity_deg":null}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-029","title":"TestCompressedNonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L15","packet":"OH2KKU-15>APRS,TCPIP*,qAC,FOURTH:!I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU-15","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.052010101699544,"Longitude":24.504507437140035,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"I","SymbolCode":"&","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":8.10520393696385,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"igate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU-15","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"igate testing","messaging":false,"latitude_deg":60.052010101699544,"longitude_deg":24.504507437140035,"symbol":{"table_id":"I","code":"&"},"extensions":{"range":{"miles":5.036340233637961}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-030","title":"TestCompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L107","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-030","title":"TestCompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L107","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":" Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["A compressed course byte of 0 is reported as 0 degrees, as transmitted; FAP rewrites it to 360.","Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-031","title":"TestCompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L196","packet":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol ","outcome":"reject","source_expected":{"fap_header":{"source":"KJ4ERJ-AL","destination":"APWW05","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: comp_short: compressed position too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"original_wire":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol "},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-032","title":"TestCompressedWeather","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L206","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg001t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"gust":{"value":1.0,"unit":"mph"},"temperature":{"value":54.0,"unit":"fahrenheit"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.1,"unit":"inches"},"rain_since_midnight":{"value":0.1,"unit":"inches"},"wind_direction":{"value":272,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"knots"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} {"id":"FAP-033","title":"TestCompressedWeatherSpaceGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L255","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"temperature":{"value":54.0,"unit":"fahrenheit"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.1,"unit":"inches"},"rain_since_midnight":{"value":0.1,"unit":"inches"},"wind_direction":{"value":272,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"knots"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-034","title":"TestDAOUncompressedHumanReadable","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L13","packet":"K0ELR-15>APOT02,WIDE1-1,WIDE2-1,qAo,K0ELR:/102033h4133.03NX09029.49Wv204/000!W33! 12.3V 21C/A=000665","outcome":"accept","source_expected":{"fap_header":{"source":"K0ELR-15","destination":"APOT02","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"K0ELR","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":41.55055,"Longitude":-90.49155,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"X","SymbolCode":"v","Speed":0,"Course":204,"Altitude":202.692,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"12.3V 21C","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"K0ELR-15","destination":"APOT02","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"K0ELR","repeated":false}]},"payload":{"type":"position","comment":"12.3V 21C","messaging":false,"latitude_deg":41.55055,"longitude_deg":-90.49155,"ambiguity":0,"symbol":{"table_id":"X","code":"v"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":204},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":665.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-035","title":"TestDAOCompressedBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L53","packet":"OH7LZB-9>APZMDR,WIDE2-2,qAo,OH2RCH:!/0(yiTc5y>{2O http://aprs.fi/!w11!","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APZMDR","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2RCH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.15273087861335,"Longitude":24.662220910798077,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":11.909203712770884,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APZMDR","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2RCH","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.15273087861335,"longitude_deg":24.662220910798077,"symbol":{"table_id":"/","code":">"},"extensions":{"range":{"miles":7.400036109601728}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-034","title":"TestDAOUncompressedHumanReadable","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L13","packet":"K0ELR-15>APOT02,WIDE1-1,WIDE2-1,qAo,K0ELR:/102033h4133.03NX09029.49Wv204/000!W33! 12.3V 21C/A=000665","outcome":"accept","source_expected":{"fap_header":{"source":"K0ELR-15","destination":"APOT02","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"K0ELR","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":41.55055,"Longitude":-90.49155,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"X","SymbolCode":"v","Speed":0,"Course":204,"Altitude":202.692,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"12.3V 21C","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"K0ELR-15","destination":"APOT02","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"K0ELR","repeated":false}]},"payload":{"type":"position","comment":" 12.3V 21C","messaging":false,"latitude_deg":41.55055,"longitude_deg":-90.49155,"ambiguity":0,"symbol":{"table_id":"X","code":"v"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":204},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":665.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} +{"id":"FAP-035","title":"TestDAOCompressedBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L53","packet":"OH7LZB-9>APZMDR,WIDE2-2,qAo,OH2RCH:!/0(yiTc5y>{2O http://aprs.fi/!w11!","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APZMDR","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2RCH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.15273087861335,"Longitude":24.662220910798077,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":11.909203712770884,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APZMDR","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2RCH","repeated":false}]},"payload":{"type":"position","comment":" http://aprs.fi/","messaging":false,"latitude_deg":60.15273087861335,"longitude_deg":24.662220910798077,"symbol":{"table_id":"/","code":">"},"extensions":{"range":{"miles":7.400036109601728}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-036","title":"TestDAOMicEBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L87","packet":"OH2JCQ-9>VP1U88,TRACE2-2,qAR,OH2RDK-5:'5'9\"^Rj/]\"4-}Foo !w66!Bar","outcome":"accept","source_expected":{"fap_header":{"source":"OH2JCQ-9","destination":"VP1U88","digipeaters":[{"Call":"TRACE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH2RDK-5","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":60.26470512820512,"Longitude":25.18820512820513,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"j","Speed":122.232,"Course":254,"Altitude":22,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Foo Bar","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH2JCQ-9","destination":"VP1U88","path":[{"address":"TRACE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"OH2RDK-5","repeated":false}]},"payload":{"type":"mic_e","comment":"Foo Bar","latitude_deg":60.26470512820512,"longitude_deg":25.18820512820513,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"device_code":"]","extensions":{"motion":{"speed_knots":66.0,"course_deg":254},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":22}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-037","title":"TestParseStatus","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L12","packet":"OH7LZB>APRS:>Testing status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"Testing status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"Testing status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-038","title":"TestParseNoBody","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/fap_test.go#L27","packet":"OH7LZB>APRS","outcome":"reject","source_expected":{"fap_header":{"source":"","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: packet_no_body: no packet body after header"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7LZB>APRS"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -344,7 +344,7 @@ {"id":"FAP-344","title":"TestMessageErrors/missing_colon_after_addressee","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L444","packet":"OH7AA-1>APRS::N0CALL XHello world","outcome":"reject","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: msg_inv: message addressee field malformed"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7AA-1>APRS::N0CALL XHello world"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-345","title":"TestMicENonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/]","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"device_code":"]","extensions":{"motion":{"speed_knots":0.0,"course_deg":0}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-346","title":"TestMicEMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L108","packet":"OH7LZB-2>TQ4W2V,WIDE2-1,qAo,OH7LZB:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"=","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"device_code":"]","extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":6}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-347","title":"TestMicEHexTelemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L208","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'102030FFff commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,32,48,255,255],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"telemetry":{"sequence":0,"analog":[16,32,48,255,255]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-347","title":"TestMicEHexTelemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L208","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'102030FFff commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,32,48,255,255],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":" commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"telemetry":{"sequence":null,"analog":[16,32,48,255,255]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Mic-E hex telemetry carries no sequence number, so none is reported; FAP reports 0.","Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-348","title":"TestMicEHexTelemetry2Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L237","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'1020 commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,0,32],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"telemetry":{"sequence":0,"analog":[16,0,32]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-349","title":"TestMicEMangled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L267","packet":"KD0KZE>TUPX9R,RS0ISS*,qAR,K0GDI-6:'yaIl -/]Greetings via ISS=","outcome":"accept","source_expected":{"fap_header":{"source":"KD0KZE","destination":"TUPX9R","digipeaters":[{"Call":"RS0ISS","WasDigied":true},{"Call":"qAR","WasDigied":false},{"Call":"K0GDI-6","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":45.148666666666664,"Longitude":-93.1575,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"111","MiceMangled":true,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Greetings via ISS=","Warnings":null}},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"KD0KZE","destination":"TUPX9R","path":[{"address":"RS0ISS","repeated":true},{"address":"qAR","repeated":false},{"address":"K0GDI-6","repeated":false}]},"payload":{"type":"mic_e","comment":"]Greetings via ISS=","latitude_deg":45.148666666666664,"longitude_deg":-93.1575,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-350","title":"TestMicEErrors/destination_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"N0CALL>AB:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"AB","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: Mic-E destination callsign too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>AB:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -354,16 +354,16 @@ {"id":"FAP-354","title":"TestMicEMangledErrors/destination_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L370","packet":"N0CALL>AB:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"AB","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_short: mangled Mic-E packet too short"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>AB:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-355","title":"TestMicEMangledErrors/invalid_info_field","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L370","packet":"N0CALL>SX15S6:`c51!f?>\u0001","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX15S6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":171.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"\u0001","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_infofield: invalid Mic-E information field"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX15S6:`c51!f?>\u0001"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-356","title":"TestMicEMangledErrors/invalid_destination_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L370","packet":"N0CALL>SX1MS6:`@@@@ >/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX1MS6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":true,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: invalid Mic-E destination character"},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX1MS6:`@@@@ >/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-357","title":"TestGPRMC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L17","packet":"N0CALL-11>APRS,DIGI*,WIDE2-1,qAR,IGATE:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*7A","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"DIGI","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":33.817296666666664,"Longitude":-84.10436166666666,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":null,"SymbolCode":null,"Speed":43.940552000000004,"Course":28,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"DIGI","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"rmc","coordinates":{"latitude_deg":33.817296666666664,"longitude_deg":-84.10436166666666},"speed_knots":23.726,"course_deg":28},"symbol":null,"metadata":{"checksum_valid":true}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Timestamp","$.fap_fields.Warnings"]} +{"id":"FAP-357","title":"TestGPRMC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L17","packet":"N0CALL-11>APRS,DIGI*,WIDE2-1,qAR,IGATE:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*7A","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"DIGI","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":33.817296666666664,"Longitude":-84.10436166666666,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":null,"SymbolCode":null,"Speed":43.940552000000004,"Course":28,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"DIGI","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"rmc","coordinates":{"latitude_deg":33.817296666666664,"longitude_deg":-84.10436166666666},"speed_knots":23.726,"course_deg":27.9},"symbol":{"table_id":"/","code":"O"},"metadata":{"checksum_valid":true}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Timestamp","$.fap_fields.Warnings"],"divergence":["NMEA course keeps the transmitted precision; FAP rounds to whole degrees.","APRS101 assigns a default symbol from the source SSID when NMEA has no symbol destination (SSID 11 is the balloon, /O); FAP reports no symbol."]} {"id":"FAP-358","title":"TestGPRMCNoFix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L99","packet":"SRC>APRS,WIDE1-1,GATE,qAR,GATE-1:$GPRMC,041518,V,,,,,,,230309,,*33","outcome":"reject","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"GATE","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"GATE-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null},"fap_error":"fap: gprmc_nofix: GPRMC: no valid fix"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRC>APRS,WIDE1-1,GATE,qAR,GATE-1:$GPRMC,041518,V,,,,,,,230309,,*33"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-359","title":"TestGPGGA","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L111","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,*4F","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":11.516666666666667,"PosAmbiguity":null,"PosResolution":1.852,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":545.4,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"gga","coordinates":{"latitude_deg":48.1173,"longitude_deg":11.516666666666667},"altitude_msl_m":545.4},"symbol":null,"metadata":{"checksum_valid":true}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-359","title":"TestGPGGA","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L111","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,*4F","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":11.516666666666667,"PosAmbiguity":null,"PosResolution":1.852,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":545.4,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"gga","coordinates":{"latitude_deg":48.1173,"longitude_deg":11.516666666666667},"altitude_msl_m":545.4},"symbol":{"table_id":"/","code":"O"},"metadata":{"checksum_valid":true}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["APRS101 assigns a default symbol from the source SSID when NMEA has no symbol destination (SSID 11 is the balloon, /O); FAP reports no symbol."]} {"id":"FAP-360","title":"TestGPGGANoFix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L171","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*48","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA checksum mismatch"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*48"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-361","title":"TestGPGLL","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L183","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"gll","coordinates":{"latitude_deg":49.274166666666666,"longitude_deg":-123.18533333333333}},"symbol":null,"metadata":{"checksum_valid":true}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-361","title":"TestGPGLL","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L183","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"gll","coordinates":{"latitude_deg":49.274166666666666,"longitude_deg":-123.18533333333333}},"symbol":{"table_id":"/","code":"O"},"metadata":{"checksum_valid":true}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["APRS101 assigns a default symbol from the source SSID when NMEA has no symbol destination (SSID 11 is the balloon, /O); FAP reports no symbol."]} {"id":"FAP-362","title":"TestGPGLLMinimal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L239","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"gll","coordinates":{"latitude_deg":49.274166666666666,"longitude_deg":-123.18533333333333}},"symbol":null,"metadata":{"checksum_valid":null}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-363","title":"TestParseNMEAErrors/not_starting_with_$GP","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA sentence must start with $GP"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-363","title":"TestParseNMEAErrors/not_starting_with_$GP","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA sentence must start with $GP"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","original_wire":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C","payload":{"type":"opaque","information":"$XXXXX,A,B,C","diagnostic":{"code":"unsupported","path":"$"}}},"divergence":["Unknown NMEA sentences are kept as opaque data with an 'unsupported' diagnostic, not rejected."]} {"id":"FAP-364","title":"TestParseNMEAErrors/checksum_mismatch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*FF","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA checksum mismatch"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*FF"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-365","title":"TestParseNMEAErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPXXX","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: NMEA sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPXXX"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-366","title":"TestParseNMEAErrors/unsupported_sentence","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPVTG,0,T,0,M,0,N,0,K","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: unsupported NMEA sentence: $GPVTG"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPVTG,0,T,0,M,0,N,0,K"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-366","title":"TestParseNMEAErrors/unsupported_sentence","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPVTG,0,T,0,M,0,N,0,K","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: unsupported NMEA sentence: $GPVTG"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","original_wire":"N0CALL>APRS,WIDE2-1:$GPVTG,0,T,0,M,0,N,0,K","payload":{"type":"nmea","sentence":{"type":"vtg","course_true_deg":0.0,"course_magnetic_deg":0.0,"speed_knots":0.0,"speed_kmh_reported":0.0},"metadata":{"talker":"GP","checksum_supplied":null,"checksum_valid":null,"fields_raw":["0","T","0","M","0","N","0","K"]},"position_usable":false,"symbol":null,"comment":""}},"divergence":["$GPVTG is a supported NMEA sentence (course and speed only, so no usable position); FAP rejects it."]} {"id":"FAP-367","title":"TestParseGPRMCErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: GPRMC sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-368","title":"TestParseGPRMCErrors/no_fix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,V,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: gprmc_nofix: GPRMC: no valid fix"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,V,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-369","title":"TestParseGPRMCErrors/invalid_latitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L394","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,XXXX.XXXX,N,08406.2617,W,23.726,27.9,121207,4.9,W","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null,"Timestamp":"2007-12-12T14:55:26Z"},"fap_error":"fap: pos_lat_inv: GPRMC: invalid degrees: strconv.ParseFloat: parsing \"XX\": invalid syntax"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,XXXX.XXXX,N,08406.2617,W,23.726,27.9,121207,4.9,W"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -405,8 +405,8 @@ {"id":"FAP-405","title":"TestFallbackUncompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L15","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:hoponassualku!6028.51S/02505.68W#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"legacy_position","prefix":"hoponassualku","position":{"comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-406","title":"TestFallbackCompressed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L44","packet":"OH2KKU>APRS,TCPIP*:hello!/I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":10.540467177352028,"Longitude":-74.88313740726545,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"v","Speed":1885.1787453433603,"Course":20,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"Aigate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"legacy_position","prefix":"hello","position":{"comment":"Aigate testing","messaging":false,"latitude_deg":10.540467177352028,"longitude_deg":-74.88313740726545,"symbol":{"table_id":"/","code":"v"},"extensions":{"motion":{"speed_knots":1017.9150892782723,"course_deg":20}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-407","title":"TestFallbackExclAtOffset39","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L64","packet":"OH2RDP-1>BEACON-15:012345678901234567890123456789012345678!6028.51N/02505.68E#","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"legacy_position","prefix":"012345678901234567890123456789012345678","position":{"comment":"","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-408","title":"TestFallbackExclAtOffset40","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L81","packet":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-409","title":"TestFallbackNoExcl","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L94","packet":"OH2RDP-1>BEACON-15:Tno position here at all","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:Tno position here at all"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} +{"id":"FAP-408","title":"TestFallbackExclAtOffset40","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L81","packet":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","original_wire":"OH2RDP-1>BEACON-15:0123456789012345678901234567890123456789!6028.51N/02505.68E#","payload":{"type":"beacon","text":"0123456789012345678901234567890123456789!6028.51N/02505.68E#"}},"divergence":["Text with no position in the first 40 bytes is a non-APRS beacon, kept as text; FAP rejects it."]} +{"id":"FAP-409","title":"TestFallbackNoExcl","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L94","packet":"OH2RDP-1>BEACON-15:Tno position here at all","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","original_wire":"OH2RDP-1>BEACON-15:Tno position here at all","payload":{"type":"beacon","text":"Tno position here at all"}},"divergence":["Text with no position in the first 40 bytes is a non-APRS beacon, kept as text; FAP rejects it."]} {"id":"FAP-410","title":"TestFallbackUncompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L107","packet":"OH2RDP-1>BEACON-15:X!6028.51N/02505.6","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!6028.51N/02505.6"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-411","title":"TestFallbackCompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L120","packet":"OH2RDP-1>BEACON-15:X!/I0-X;T_Wv&","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!/I0-X;T_Wv&"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-412","title":"TestFallbackBadCompressedTableChar","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/position_fallback_test.go#L134","packet":"OH2RDP-1>BEACON-15:X!zI0-X;T_Wv&{-A","outcome":"reject","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: type_not_supported: unsupported packet type"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH2RDP-1>BEACON-15:X!zI0-X;T_Wv&{-A"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -414,21 +414,21 @@ {"id":"FAP-414","title":"TestStatusWithTimestamp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/status_test.go#L42","packet":"KB3HVP-14>APU25N,WIDE2-2,qAR,LANSNG:>151811z>>Nashville,TN>>Toronto,ON","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":">>Nashville,TN>>Toronto,ON","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"status","text":">>Nashville,TN>>Toronto,ON"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-415","title":"TestCommentTelemetry/uncompressed_PHG_4ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03NN02739.63E#PHG26303/Siilinjarvi|\"p%T'.agff|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"N","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"26303","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,6348,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Siilinjarvi","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"Siilinjarvi","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"N","code":"#"},"extensions":{"telemetry":{"sequence":170,"analog":[415,559,5894,6348]},"phg":{"power_w":4,"height_haat_ft":640,"gain_dbi":3,"directivity_deg":null,"rate_per_hour":3}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-416","title":"TestCommentTelemetry/compressed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!/0%3RTh<6>dS_http://aprs.fi/|\"p%T'.ag|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.2347017530964,"Longitude":24.882575618361585,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":85.0097863745044,"Course":268,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,559,5894,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"http://aprs.fi/","messaging":false,"latitude_deg":60.2347017530964,"longitude_deg":24.882575618361585,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":45.90161251323131,"course_deg":268},"telemetry":{"sequence":170,"analog":[415,559,5894]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-417","title":"TestCommentTelemetry/uncompressed_course_speed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL-14>APRS,qAR,IGATE:!6304.03N/02739.63E>036/010test |(7Cq?3<\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":659,"Vals":[3174,2748,2458,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"test","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"test","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":659,"analog":[3174,2748,2458]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-418","title":"TestCommentTelemetry/uncompressed_altitude_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-419","title":"TestCommentTelemetry/compressed_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":360},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-417","title":"TestCommentTelemetry/uncompressed_course_speed_3ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL-14>APRS,qAR,IGATE:!6304.03N/02739.63E>036/010test |(7Cq?3<\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":659,"Vals":[3174,2748,2458,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"test","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"test ","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":659,"analog":[3174,2748,2458]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} +{"id":"FAP-418","title":"TestCommentTelemetry/uncompressed_altitude_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":" ","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} +{"id":"FAP-419","title":"TestCommentTelemetry/compressed_5ch_bits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":" Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["A compressed course byte of 0 is reported as 0 degrees, as transmitted; FAP rewrites it to 360.","Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-420","title":"TestCommentTelemetry/uncompressed_bits_LSB_first","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>|ss1122334455!\"|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,1840],"Bits":"10000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,1840],"digital":[true,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-421","title":"TestCommentTelemetry/pipe_in_comment_text","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>a|b |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"a|b","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"a|b","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":0,"analog":[0]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-421","title":"TestCommentTelemetry/pipe_in_comment_text","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>a|b |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"a|b","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"a|b ","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":0,"analog":[0]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-422","title":"TestCommentTelemetry/uncompressed_telemetry_then_DAO","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L22","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>comment|\"p%T|!W12!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.06718333333333,"Longitude":27.660533333333333,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":170,"Vals":[415,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"comment","messaging":false,"latitude_deg":63.06718333333333,"longitude_deg":27.660533333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"telemetry":{"sequence":170,"analog":[415]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-423","title":"TestCommentTelemetryInvalid/too_long","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!!!!!!!!!!!!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!!!!!!!!!!!!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-424","title":"TestCommentTelemetryInvalid/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-425","title":"TestCommentTelemetryInvalid/odd_length","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!!|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!!|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-426","title":"TestCommentTelemetryInvalid/invalid_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!}|","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!}|","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!}|","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-427","title":"TestCommentTelemetryInvalid/single_pipe","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-428","title":"TestMicEBase91Telemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-429","title":"TestMicEBase91Telemetry1Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L50","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-428","title":"TestMicEBase91Telemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":" comment ","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} +{"id":"FAP-429","title":"TestMicEBase91Telemetry1Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L50","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":" comment ","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-430","title":"TestMicEBase91TelemetryHarder","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L84","packet":"N6BG-1>S6QTUX:`+,^l!cR/'\";z}||ss11223344bb!\"|!w>f!|3","outcome":"accept","source_expected":{"fap_header":{"source":"N6BG-1","destination":"S6QTUX","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":36.24305311355312,"Longitude":-115.27779304029303,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"R","Speed":0,"Course":171,"Altitude":736,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,5980],"Bits":"10000000"},"Capabilities":null,"MBits":"101","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"'||3","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N6BG-1","destination":"S6QTUX","path":[]},"payload":{"type":"mic_e","comment":"'||3","latitude_deg":36.24305311355312,"longitude_deg":-115.27779304029303,"ambiguity":0,"symbol":{"table_id":"/","code":"R"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":171},"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,5980],"digital":[true,false,false,false,false,false,false,false]},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":736}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-431","title":"TestMicEBase91TelemetryDAOConfusing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L102","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!wEU!![S|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":86,"Vals":[3328,0,5328,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"comment","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":86,"analog":[3328,0,5328]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-431","title":"TestMicEBase91TelemetryDAOConfusing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L102","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!wEU!![S|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":86,"Vals":[3328,0,5328,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":" comment ","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":86,"analog":[3328,0,5328]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-432","title":"TestTelemetryClassic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L12","packet":"SRCCALL>APRS:T#324,000,038,255,.12,50.12,01000001","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":324,"Vals":[0,38,255,0.12,50.12],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":324,"analog":[0,38,255,0.12,50.12],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-433","title":"TestTelemetryRelaxed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L43","packet":"SRCCALL>APRS:T#1,-1,2147483647,-2147483648,0.000001,-0.0000001,01000001 comment","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[-1,2147483647,-2147483648,1e-06,-1e-07],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[-1,2147483647,-2147483648,1e-06,-1e-07],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-434","title":"TestTelemetryShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L71","packet":"SRCCALL>APRS:T#001,42","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[42,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[42,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} @@ -441,20 +441,20 @@ {"id":"FAP-441","title":"TestTelemetryParameterMessageTypes/UNIT","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :UNIT.Volt,Pkt/h","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"UNIT.Volt,Pkt/h","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_units","channels":["Volt","Pkt/h",null,null,null,null,null,null,null,null,null,null,null]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-442","title":"TestTelemetryParameterMessageTypes/EQNS","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :EQNS.0,0.075,0,0,1,0","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"EQNS.0,0.075,0,0,1,0","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_equations","coefficients":[{"a":0.0,"b":0.075,"c":0.0},{"a":0.0,"b":1.0,"c":0.0}]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-443","title":"TestTelemetryParameterMessageTypes/BITS","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :BITS.11111111,My station","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"BITS.11111111,My station","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_bits","sense":[true,true,true,true,true,true,true,true],"project_title":"My station"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-444","title":"TestTelemetryParameterMessageTypes/parm_lowercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :parm.Vin,Rx1h","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"parm.Vin,Rx1h","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL","definition":{"type":"telemetry_parameters","channels":["Vin","Rx1h",null,null,null,null,null,null,null,null,null,null,null]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-444","title":"TestTelemetryParameterMessageTypes/parm_lowercase","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L295","packet":"SRCCALL>APRS::N0CALL :parm.Vin,Rx1h","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"parm.Vin,Rx1h","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"parm.Vin,Rx1h","message_id":null,"reply_ack":null}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"divergence":["APRS101 defines the telemetry keywords in upper case, so 'parm.' is ordinary message text; FAP matches them case-insensitively."]} {"id":"FAP-445","title":"TestRegularMessageNotTelemetryMessage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L308","packet":"SRCCALL>APRS::N0CALL :Hello world","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL","Text":"Hello world","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"message","addressee":"N0CALL","text":"Hello world","message_id":null}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-446","title":"TestTimestampRawDHMzUTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L19","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@151811z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"151811","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-447","title":"TestTimestampDecodedDHMzUTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L35","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@151811z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-448","title":"TestTimestampRawHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L50","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/055816h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"055816","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-449","title":"TestTimestampDecodedHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L66","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/181144h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-450","title":"TestTimestampRawDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L81","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/060642/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"060642","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-451","title":"TestTimestampDecodedDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L98","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/152011/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-452","title":"TestTimestampFutureRollback/DDHHMMz_UTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@162359z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-453","title":"TestTimestampFutureRollback/DDHHMM/_local","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/162359/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":"14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-446","title":"TestTimestampRawDHMzUTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L19","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@151811z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"151811","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":" {UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} +{"id":"FAP-447","title":"TestTimestampDecodedDHMzUTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L35","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@151811z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":" {UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} +{"id":"FAP-448","title":"TestTimestampRawHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L50","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/055816h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"055816","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":" 14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} +{"id":"FAP-449","title":"TestTimestampDecodedHMSh","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L66","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/181144h5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":" 14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} +{"id":"FAP-450","title":"TestTimestampRawDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L81","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/060642/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"060642","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":true},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":" 14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} +{"id":"FAP-451","title":"TestTimestampDecodedDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L98","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/152011/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":" 14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} +{"id":"FAP-452","title":"TestTimestampFutureRollback/DDHHMMz_UTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@162359z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":" {UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} +{"id":"FAP-453","title":"TestTimestampFutureRollback/DDHHMM/_local","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/162359/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":" 14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-454","title":"TestTimestampInvalidLocation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L224","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@000000z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-455","title":"TestTimestampInvalidObject","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L247","packet":"SRC>APRS,TCPIP*:;TestObj *000000z4903.50N/07201.75W-Test","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"TestObj ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Test","Warnings":[{"Code":"timestamp_inv","Msg":"invalid object timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRC","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"object","comment":"Test","name":"TestObj","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-456","title":"TestTimestampInvalidStatus","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L270","packet":"SRC>APRS,TCPIP*:>000000zStatus text here","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"Status text here","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRC","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"status","text":"Status text here"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-457","title":"TestUncompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_moving_test.go#L16","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":"","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-457","title":"TestUncompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_moving_test.go#L16","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":" ","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-458","title":"TestUncompressedNortheast","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L14","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-459","title":"TestUncompressedSouthwest","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L64","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51S/02505.68W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-460","title":"TestUncompressedAmbiguity3","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L82","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!602 . S/0250 . W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.416666666666664,"Longitude":-25.083333333333332,"PosAmbiguity":3,"PosResolution":18520,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.416666666666664,"longitude_deg":-25.083333333333332,"ambiguity":3,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} @@ -462,18 +462,18 @@ {"id":"FAP-462","title":"TestUncompressedAmbiguityUnbalanced","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L124","packet":"SRC>APRS,TCPIP*,qAC,T2POLAND:;SPBLTZ *010020z5210. N/021 . E? Comment","outcome":"reject","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2POLAND","WasDigied":false}]},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":52.175,"Longitude":null,"PosAmbiguity":2,"PosResolution":null,"SymbolTable":"/","SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"SPBLTZ ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: loc_amb_inv: invalid position ambiguity: longitude has spaces in non-ambiguous digits"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"original_wire":"SRC>APRS,TCPIP*,qAC,T2POLAND:;SPBLTZ *010020z5210. N/021 . E? Comment"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-463","title":"TestUncompressedAmbiguityLonMoreDigits","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L139","packet":"OH2RDP-1>BEACON-15:!5210.5 N/02101.73E#Comment here","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":52.17583333333334,"Longitude":21.029166666666665,"PosAmbiguity":1,"PosResolution":185.2,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Comment here","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"Comment here","messaging":false,"latitude_deg":52.17583333333334,"longitude_deg":21.029166666666665,"ambiguity":1,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-464","title":"TestUncompressedLastResort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L163","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:hoponassualku!6028.51S/02505.68W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"legacy_position","prefix":"hoponassualku","position":{"comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-465","title":"TestUncompressedWxSymbolComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L185","packet":"A0RID-1>KC0PID-7,WIDE1,qAR,NX0R-6:=3851.38N/09908.75W_Home of KA0RID","outcome":"accept","source_expected":{"fap_header":{"source":"A0RID-1","destination":"KC0PID-7","digipeaters":[{"Call":"WIDE1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"NX0R-6","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.85633333333333,"Longitude":-99.14583333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"A0RID-1","destination":"KC0PID-7","path":[{"address":"WIDE1","repeated":false},{"address":"qAR","repeated":false},{"address":"NX0R-6","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":38.85633333333333,"longitude_deg":-99.14583333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-465","title":"TestUncompressedWxSymbolComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L185","packet":"A0RID-1>KC0PID-7,WIDE1,qAR,NX0R-6:=3851.38N/09908.75W_Home of KA0RID","outcome":"accept","source_expected":{"fap_header":{"source":"A0RID-1","destination":"KC0PID-7","digipeaters":[{"Call":"WIDE1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"NX0R-6","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.85633333333333,"Longitude":-99.14583333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"A0RID-1","destination":"KC0PID-7","path":[{"address":"WIDE1","repeated":false},{"address":"qAR","repeated":false},{"address":"NX0R-6","repeated":false}]},"payload":{"type":"position","comment":"Home of KA0RID","messaging":true,"latitude_deg":38.85633333333333,"longitude_deg":-99.14583333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["A weather-station symbol with no weather fields is a position with a comment; FAP reports an empty weather report and discards the comment."]} {"id":"FAP-466","title":"TestUncompressedWhitespaceTrimming","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L207","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220 RELAY,WIDE, OH2AP Jarvenpaa \t ","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-467","title":"TestPHGRA","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L223","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG72205/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"72205","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null,"rate_per_hour":5}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-468","title":"TestPHGRALetterSuffix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L239","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220Z/some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220Z","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null,"rate_per_hour":35}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-469","title":"TestPHGInvalidNotParsed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L255","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7/20some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"PHG7/20some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"PHG7/20some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-470","title":"TestRNG","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L267","packet":"OH2RDP-1>BEACON-15:!6028.51N/02505.68E#RNG0050some comment","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":null},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":80.4672,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"some comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[]},"payload":{"type":"position","comment":"some comment","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"range":{"miles":50.0}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-471","title":"TestUncompressedTimestampAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L286","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=000079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":"13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-472","title":"TestUncompressedNegativeAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L308","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=-00079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":-24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":"13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":-79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-471","title":"TestUncompressedTimestampAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L286","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=000079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":" 13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} +{"id":"FAP-472","title":"TestUncompressedNegativeAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L308","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=-00079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":-24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":" 13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":-79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-473","title":"TestUncompressedBasicYC0SHR","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L324","packet":"YC0SHR>APU25N,TCPIP*,qAC,ALDIMORI:=0606.23S/10644.61E-GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","outcome":"accept","source_expected":{"fap_header":{"source":"YC0SHR","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"ALDIMORI","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.103833333333333,"Longitude":106.7435,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"YC0SHR","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"ALDIMORI","repeated":false}]},"payload":{"type":"position","comment":"GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","messaging":true,"latitude_deg":-6.103833333333333,"longitude_deg":106.7435,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-474","title":"TestWxBasic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L13","packet":"OH2RDP-1>BEACON-15,WIDE2-1,qAo,OH2MQK-1:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":2.0,"unit":"mph"},"gust":{"value":4.0,"unit":"mph"},"temperature":{"value":39.0,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.04,"unit":"inches"},"rain_since_midnight":{"value":0.02,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-475","title":"TestWxWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L77","packet":"OH2GAX>APU25N,TCPIP*,qAC,OH2GAX:@101317z6024.78N/02503.97E_156/001g005t038r000p000P000h91b10093/type ?sade for more wx info","outcome":"accept","source_expected":{"fap_header":{"source":"OH2GAX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"OH2GAX","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.413,"Longitude":25.066166666666668,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":156,"WindSpeed":0.44704,"WindGust":2.2352,"Temp":3.3333333333333335,"TempIn":null,"Humidity":91,"HumidityIn":null,"Pressure":1009.3,"Rain1h":0,"Rain24h":0,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"/type ?sade for more wx info","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"OH2GAX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"OH2GAX","repeated":false}]},"payload":{"type":"position","comment":"/type ?sade for more wx info","messaging":true,"latitude_deg":60.413,"longitude_deg":25.066166666666668,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":156,"unit":"degrees"},"wind_speed":{"value":1.0,"unit":"mph"},"gust":{"value":5.0,"unit":"mph"},"temperature":{"value":38.0,"unit":"fahrenheit"},"humidity":{"value":91,"unit":"percent"},"pressure":{"value":1009.3,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.0,"unit":"inches"},"rain_since_midnight":{"value":0.0,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-476","title":"TestWxThirdWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L134","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_068/001g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":68,"WindSpeed":0.44704,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":68,"unit":"degrees"},"wind_speed":{"value":1.0,"unit":"mph"},"gust":{"value":1.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.2,"unit":"inches"},"rain_since_midnight":{"value":0.2,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-474","title":"TestWxBasic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L13","packet":"OH2RDP-1>BEACON-15,WIDE2-1,qAo,OH2MQK-1:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":2.0,"unit":"disputed_knots_or_mph"},"gust":{"value":4.0,"unit":"mph"},"temperature":{"value":39.0,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.04,"unit":"inches"},"rain_since_midnight":{"value":0.02,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"divergence":["The uncompressed wind-speed unit is disputed between the specifications and stays marked as disputed; FAP assumes mph."]} +{"id":"FAP-475","title":"TestWxWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L77","packet":"OH2GAX>APU25N,TCPIP*,qAC,OH2GAX:@101317z6024.78N/02503.97E_156/001g005t038r000p000P000h91b10093/type ?sade for more wx info","outcome":"accept","source_expected":{"fap_header":{"source":"OH2GAX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"OH2GAX","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.413,"Longitude":25.066166666666668,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":156,"WindSpeed":0.44704,"WindGust":2.2352,"Temp":3.3333333333333335,"TempIn":null,"Humidity":91,"HumidityIn":null,"Pressure":1009.3,"Rain1h":0,"Rain24h":0,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"/type ?sade for more wx info","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"OH2GAX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"OH2GAX","repeated":false}]},"payload":{"type":"position","comment":"/type ?sade for more wx info","messaging":true,"latitude_deg":60.413,"longitude_deg":25.066166666666668,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":156,"unit":"degrees"},"wind_speed":{"value":1.0,"unit":"disputed_knots_or_mph"},"gust":{"value":5.0,"unit":"mph"},"temperature":{"value":38.0,"unit":"fahrenheit"},"humidity":{"value":91,"unit":"percent"},"pressure":{"value":1009.3,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.0,"unit":"inches"},"rain_since_midnight":{"value":0.0,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"divergence":["The uncompressed wind-speed unit is disputed between the specifications and stays marked as disputed; FAP assumes mph."]} +{"id":"FAP-476","title":"TestWxThirdWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L134","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_068/001g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":68,"WindSpeed":0.44704,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":68,"unit":"degrees"},"wind_speed":{"value":1.0,"unit":"disputed_knots_or_mph"},"gust":{"value":1.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.2,"unit":"inches"},"rain_since_midnight":{"value":0.2,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"divergence":["The uncompressed wind-speed unit is disputed between the specifications and stays marked as disputed; FAP assumes mph."]} {"id":"FAP-477","title":"TestWxNoWindDirectionCourse","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L191","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"gust":{"value":1.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.2,"unit":"inches"},"rain_since_midnight":{"value":0.2,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} {"id":"FAP-478","title":"TestWxNoWindNoTemp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L209","packet":"N0CALL>APJLSX,TCPIP*,qAS,KG4EXY:@061750z3849.10N/07725.10W_.../...g...t...r008p011P011b.....h..","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APJLSX","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAS","WasDigied":false},{"Call":"KG4EXY","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.818333333333335,"Longitude":-77.41833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":2.032,"Rain24h":2.794,"RainMidnight":2.794,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APJLSX","path":[{"address":"TCPIP","repeated":true},{"address":"qAS","repeated":false},{"address":"KG4EXY","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":38.818333333333335,"longitude_deg":-77.41833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"rain_1h":{"value":0.08,"unit":"inches"},"rain_24h":{"value":0.11,"unit":"inches"},"rain_since_midnight":{"value":0.11,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} {"id":"FAP-479","title":"TestWxSpaceInWindGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L227","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.2,"unit":"inches"},"rain_since_midnight":{"value":0.2,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} From d8cd5eabebc30aa2140ffad54bfef451a2a77f2c Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Sat, 17 Oct 2026 12:23:12 -0700 Subject: [PATCH 10/14] More fixes --- packages/aprs/README.md | 7 +- packages/aprs/docs/API_COVERAGE.md | 28 ++- packages/aprs/src/hamkit/aprs/_codec.py | 29 ++- .../aprs/src/hamkit/aprs/_compatibility.py | 8 - packages/aprs/src/hamkit/aprs/_conformance.py | 21 +- packages/aprs/src/hamkit/aprs/_mic_e.py | 198 ++++++++++++------ packages/aprs/src/hamkit/aprs/_transport.py | 2 + packages/aprs/tests/fap_divergences.json | 42 +++- packages/aprs/tests/generate_vectors.py | 3 +- .../tests/packets/test_codec_regressions.py | 83 ++++++++ packages/aprs/tests/packets/test_corpus.py | 32 +-- .../tests/packets/test_roundtrip_corpus.py | 7 +- packages/aprs/tests/roundtrip_exceptions.json | 8 - packages/aprs/tests/source_details.py | 4 +- .../tests/test_vector_schema_migration.py | 16 +- packages/aprs/tests/vectors/README.md | 16 +- packages/aprs/tests/vectors/fap.jsonl | 10 +- 17 files changed, 374 insertions(+), 140 deletions(-) diff --git a/packages/aprs/README.md b/packages/aprs/README.md index be2debe..8fcc0ff 100644 --- a/packages/aprs/README.md +++ b/packages/aprs/README.md @@ -683,7 +683,7 @@ encoding. They remain useful for storing or exchanging structured data. #### Mic-E -**Wire encoding available.** Compact position data with a Mic-E message type. The supplied destination must match latitude, hemisphere and message; the encoder verifies it. +**Wire encoding available.** Compact position data with a Mic-E message type. The supplied destination must match latitude, hemisphere and message; the encoder verifies it. `device_code` holds the APRS 1.2 type code: the type byte that begins the status text plus any declared suffix that ends it, such as `` `_% `` (Yaesu FTM-400DR) or `]=` (Kenwood TM-D710). Build with Python: @@ -1696,7 +1696,10 @@ Maidenhead #### Legacy position -**Wire encoding available.** A historical prefix around a position. +**Wire encoding available.** A historical prefix around a position. APRS101 +allowed a `!` position within the first 40 bytes of other text; the APRS 1.1 +addendum deprecates that search, so parsing returns a `Beacon` unless you pass +`legacy_positions=True`. Build with Python: diff --git a/packages/aprs/docs/API_COVERAGE.md b/packages/aprs/docs/API_COVERAGE.md index 012ca27..4ad6d49 100644 --- a/packages/aprs/docs/API_COVERAGE.md +++ b/packages/aprs/docs/API_COVERAGE.md @@ -19,7 +19,7 @@ Decoding and encoding cover the families exercised by all 1,564 occurrences in | Queries/responses | General/directed queries, footprints, heard-station operands, direct lists, hourly counts, trace headers, capabilities | | Status | Text, DHM, grid/symbol and beam/ERP | | NMEA | GGA, GLL, RMC, VTG and WPL, checksums, independent fix usability, destination/source symbol conventions | -| Historical/raw | Grid beacons, X1J embedded positions, plain beacons, Agrelo, user-defined, invalid/test, reserved and external raw formats | +| Historical/raw | Grid beacons, X1J embedded positions (opt-in), plain beacons, Agrelo, user-defined, invalid/test, reserved and external raw formats | | Vendor weather | Ultimeter 2000 measurements plus original bytes; other vendor modes retain bytes without invented measurements | `codec_support()` and `codec_support_for()` describe these boundaries at runtime. @@ -31,8 +31,9 @@ outside this package's packet codec. The source vectors deliberately describe different receivers. The same TNC2 bytes can have different expectations: embedded `!` is a modern beacon versus a -legacy X1J position; FAP trims comments, converts weather units, rounds some -values, and accepts certain incomplete historical reports. +legacy X1J position (opt in with `legacy_positions=True`); FAP trims comments, +converts weather units, rounds some values, and accepts certain incomplete +historical reports. Schema-only differences are resolved in the stored JSONL expectations, not by rewriting actual public output during comparison. The offline source-to-schema @@ -65,13 +66,13 @@ The runtime weather-unit conversion, wrapper flattening, and NMEA source-schema comparison have been removed. Source snapshots and all raw packet bytes remain unchanged; inverse-unit and source-value tests check that no information was lost. -All but 23 vectors compare public `parse_packet` output with their stored -expectations directly. Thirty-seven FAP expectations record where FAP's +All but 18 vectors compare public `parse_packet` output with their stored +expectations directly; historical and FAP rows parse with +`legacy_positions=True`. Forty-two FAP expectations record where FAP's interpretation differs from the specification-following public decoder -(`tests/fap_divergences.json`). The remaining 23 still use the compatibility -view: Mic-E manufacturer prefixes, the embedded `!` search in modern beacons, -`000000z` timestamps, short or decimal telemetry, minimal GLL sentences and -trailing APRS 1.2 weather fields. Supplemental FAP source facts are still +(`tests/fap_divergences.json`). The remaining 18 still use the compatibility +view: `000000z` timestamps, short or decimal telemetry, minimal GLL sentences +and trailing APRS 1.2 weather fields. Supplemental FAP source facts are still checked through the adapter's helpers. The 23 sequence occurrences run through a test application receiver using public @@ -95,6 +96,15 @@ NMEA fields, or extension `raw` evidence. Explicit raw models are the exception: longitude flags. A mismatch raises `FieldError`; packet headers are not silently changed. Payload-only Mic-E still requires header context. Longitude degrees use APRS101's table, so 100–109° are sent as `l`–`u`, never as control bytes. +- Mic-E status text follows the APRS 1.2 type codes + (aprs.org/aprs12/mic-e-types.txt). `device_code` holds the type byte that + begins the text plus any declared suffix that ends it, such as `` `_% `` + (Yaesu FTM-400DR), `'|3` (Byonics TinyTrack3) or `]=` (Kenwood TM-D710). + A leading `` ` `` or `'` is APRS101 hex telemetry only in its complete form + without a declared suffix; otherwise it is a type byte, and no type byte or + suffix makes a packet `Malformed`. Sending refuses an undeclared type code, a + type code combined with hex or binary telemetry, and a comment that would be + read back as a different type code. - NMEA uses semantic numeric fields and recomputes a supplied checksum. Checksum characters can change when equivalent numeric spellings change. A sentence received with a bad checksum (`checksum_valid=False`) is a conformance finding: diff --git a/packages/aprs/src/hamkit/aprs/_codec.py b/packages/aprs/src/hamkit/aprs/_codec.py index 1a584d0..ac6a000 100644 --- a/packages/aprs/src/hamkit/aprs/_codec.py +++ b/packages/aprs/src/hamkit/aprs/_codec.py @@ -77,10 +77,15 @@ class _Options: unsupported: UnsupportedPolicy malformed: MalformedPolicy max_depth: int + legacy_positions: bool = False def _options( - policy: EnvelopePolicy, unsupported: str, malformed: str, max_depth: object + policy: EnvelopePolicy, + unsupported: str, + malformed: str, + max_depth: object, + legacy_positions: object = False, ) -> _Options: if not isinstance(policy, EnvelopePolicy): raise TypeError("policy must be an EnvelopePolicy") @@ -90,7 +95,11 @@ def _options( raise ValueError("malformed must be 'return' or 'raise'") if type(max_depth) is not int or not 0 <= max_depth <= 32: raise ValueError("max_third_party_depth must be an integer in 0..32") - return _Options(policy, unsupported, malformed, max_depth) # type: ignore[arg-type] + if type(legacy_positions) is not bool: + raise TypeError("legacy_positions must be a bool") + return _Options( + policy, unsupported, malformed, max_depth, legacy_positions # type: ignore[arg-type] + ) def _special_message(address: str, body: bytes) -> bool: @@ -241,7 +250,9 @@ def _decode_payload( return m.Agrelo(int(match[1]), int(match[2]), raw=information) if dti == b":": return _decode_message(body, diagnostics) - offset = information.find(b"!") + # APRS101 p.18 lets a position start within the first 40 bytes of other + # text (X1J); the APRS 1.1 addendum deprecates that search, so it is opt-in. + offset = information.find(b"!") if options.legacy_positions else -1 if 0 < offset < 40: return m.LegacyPosition( information[:offset], @@ -492,6 +503,7 @@ def parse_packet( unsupported: UnsupportedPolicy = "opaque", malformed: MalformedPolicy = "return", max_third_party_depth: int = 4, + legacy_positions: bool = False, ) -> Packet | Malformed: """Parse one unframed TNC2 packet, such as ``b"N0CALL>APRS:>Ready"``. @@ -502,12 +514,16 @@ def parse_packet( unsupported="raise"). The envelope policy defaults to APRS_IS; pass RF for AX.25 address and size constraints, or supply a custom EnvelopePolicy. CR/LF is never stripped; use parse_tnc2_line for line-oriented input. + legacy_positions=True restores the deprecated APRS101 search for a "!" + position within the first 40 bytes of other text (LegacyPosition). """ if not isinstance(wire, bytes): raise TypeError( "parse_packet requires bytes; encode text first, e.g. line.encode()" ) - options = _options(policy, unsupported, malformed, max_third_party_depth) + options = _options( + policy, unsupported, malformed, max_third_party_depth, legacy_positions + ) return _parse(wire, options, 0)[0] @@ -518,6 +534,7 @@ def parse_payload( unsupported: UnsupportedPolicy = "opaque", malformed: MalformedPolicy = "return", max_third_party_depth: int = 4, + legacy_positions: bool = False, ) -> Payload | Malformed: """Decode an information field alone. Mic-E always requires header. @@ -525,7 +542,9 @@ def parse_payload( """ if not isinstance(information, bytes): raise TypeError("parse_payload requires bytes") - options = _options(APRS_IS, unsupported, malformed, max_third_party_depth) + options = _options( + APRS_IS, unsupported, malformed, max_third_party_depth, legacy_positions + ) if header is not None: validate_tree(header) return _recover_payload(information, header, options, 0, []) diff --git a/packages/aprs/src/hamkit/aprs/_compatibility.py b/packages/aprs/src/hamkit/aprs/_compatibility.py index 248bb62..e8520aa 100644 --- a/packages/aprs/src/hamkit/aprs/_compatibility.py +++ b/packages/aprs/src/hamkit/aprs/_compatibility.py @@ -151,14 +151,6 @@ def view( and any(x.code == "nonconforming" for x in packet.diagnostics) ) if profile != "compatibility-fap": - if ( - isinstance(packet, m.Packet) - and isinstance(packet.payload, m.LegacyPosition) - and profile != "historical-1.0" - ): - result["payload"] = to_json_dict( - m.Beacon(raw.partition(b":")[2].decode("latin1")), include_defaults=True - ) return result, rejected _envelope, _, body = raw.partition(b":") header = packet.header diff --git a/packages/aprs/src/hamkit/aprs/_conformance.py b/packages/aprs/src/hamkit/aprs/_conformance.py index c975b2b..4ea9507 100644 --- a/packages/aprs/src/hamkit/aprs/_conformance.py +++ b/packages/aprs/src/hamkit/aprs/_conformance.py @@ -33,7 +33,7 @@ TelemetryUnits, Weather, ) -from ._errors import CodecNotImplementedError, FieldError +from ._errors import APRSError, CodecNotImplementedError, FieldError from ._models import ( NMEA, Acknowledgment, @@ -473,11 +473,30 @@ def _located(v: Any, policy: EnvelopePolicy | None) -> Iterator[Finding]: if isinstance(v, MicE): if e.motion is None: yield "$.extensions.motion", "Mic-E always carries course and speed" + yield from _mic_e_status(v) return if v.compression is not None: yield from _compressed(v) +def _mic_e_status(v: MicE) -> Iterator[Finding]: + """The type code and status text must read back as composed.""" + from . import _mic_e + + try: + _mic_e.device_parts(v.device_code) + except APRSError: + yield "$.device_code", "not a declared Mic-E type code" + return + try: + device, _, comment = _mic_e.read_status(_mic_e.write_status(v), v.symbol) + except APRSError as error: + yield "$.device_code", str(error) + return + if (device, comment) != (v.device_code, v.comment.encode()): + yield "$.comment", "would be read back as a different Mic-E type code" + + def _compressed(v: Any) -> Iterator[Finding]: e, csT = v.extensions, v.compression if any(getattr(e, n) is not None for n in ("phg", "signal", "area", "bearing")): diff --git a/packages/aprs/src/hamkit/aprs/_mic_e.py b/packages/aprs/src/hamkit/aprs/_mic_e.py index 5218fd2..50dbc36 100644 --- a/packages/aprs/src/hamkit/aprs/_mic_e.py +++ b/packages/aprs/src/hamkit/aprs/_mic_e.py @@ -1,6 +1,12 @@ # SPDX-FileCopyrightText: 2024-present Adam Fourney # SPDX-License-Identifier: MIT -"""Mic-E joint destination/information codec (APRS101 chapter 10).""" +"""Mic-E joint destination/information codec (APRS101 chapter 10). + +Status text follows the APRS 1.2 type codes (aprs.org/aprs12/mic-e-types.txt): +"T......Mv", where T is a type byte and a declared suffix may end the text. +APRS 1.2 redefines the ` and ' type bytes, which APRS101 used for hex +telemetry; that reading remains only for the complete legacy hex form. +""" from __future__ import annotations @@ -9,12 +15,28 @@ from dataclasses import replace from typing import cast -from ._data import Altitude, Measurement, Motion, Symbol, Telemetry +from ._data import Altitude, Extensions, Measurement, Motion, Symbol, Telemetry from ._errors import FieldError from ._models import Header, MicE from ._position_codec import base91, center, dao_offset, pack91 from ._text import free_text +# Declared version suffixes. The manufacturer/version pair after ` or ' does +# not depend on which of the two type bytes was sent. +_OTHER_SUFFIXES = ( + *("_ ", '_"', "_#", "_$", "_%", "_)", "_(", "_0", "_3", "_1"), # Yaesu + *(" X", "(5", "(8", "|3", "|4", ":4", ":8"), # AP510, Anytone, Byonics, SCS +) +TYPE_SUFFIXES: dict[str, tuple[str, ...]] = { + ">": ("=", "^"), # TH-D72, TH-D74 + "]": ("=",), # TM-D710 + "`": _OTHER_SUFFIXES, + "'": _OTHER_SUFFIXES, +} +# The legacy grid/status prefix has no coordinate authority; it stays in the +# device code after a Kenwood type byte so composing does not discard it. +_GRID = r"[A-R]{2}[0-9]{2}[A-X]{2}/[A-Za-z]" + _MESSAGES = ( "emergency", "priority", @@ -98,49 +120,8 @@ def read(information: bytes, header: Header, diagnostics: list) -> MicE: course -= 400 motion = Motion(course, speed, course_code=course, speed_code=speed) symbol = Symbol(chr(b[7]), chr(b[6])) - tail = b[8:] - device = None - altitude = None - telemetry = None - if tail[:1] in (b"]", b">"): - device = tail[:1].decode() - tail = tail[1:] - if len(tail) >= 4 and tail[3:4] == b"}": - altitude = Altitude(Measurement(base91(tail[:3]) - 10000, "meters"), "mic_e") - tail = tail[4:] - if tail[:1] in (b"`", b"'"): - width = 4 if tail[:1] == b"`" else 10 - if len(tail) < width + 1 or not re.fullmatch( - rb"[0-9A-Fa-f]+", tail[1 : width + 1] - ): - raise FieldError("invalid Mic-E hex telemetry") - values: tuple[int | None, ...] = tuple( - bytes.fromhex(tail[1 : width + 1].decode()) - ) - if width == 4: - values = (values[0], None, values[1], None, None) - telemetry = Telemetry(values, encoding="mic_e_hex") - tail = tail[width + 1 :] - elif tail[:1] == b"\x1d": - if len(tail) < 6: - raise FieldError("truncated Mic-E binary telemetry") - telemetry = Telemetry(tuple(tail[1:6]), encoding="mic_e_binary") - tail = tail[6:] - # The legacy grid/status prefix has no coordinate authority; retain its - # bytes in the device code so composing does not discard that information. - grid = re.match(rb"[A-R]{2}[0-9]{2}[A-X]{2}/[A-Za-z]", tail) - if grid and device: - device += grid[0].decode() - tail = tail[grid.end() :] - from . import _extensions - - extra, tail = _extensions.read(tail, symbol) - e = replace( - extra, - motion=motion, - altitude=altitude or extra.altitude, - telemetry=telemetry or extra.telemetry, - ) + device, extra, tail = read_status(b[8:], symbol) + e = replace(extra, motion=motion) return MicE( dao_offset(lat, e.dao, "latitude"), dao_offset(lon, e.dao, "longitude"), @@ -213,24 +194,91 @@ def write(p: MicE, header: Header) -> bytes: + p.symbol.code.encode() + p.symbol.table_id.encode() ) - if p.device_code: - if not re.fullmatch( - r"[>\]](?:[A-R]{2}[0-9]{2}[A-X]{2}/[A-Za-z])?", p.device_code - ): - raise FieldError("unsupported Mic-E device marker") - body += p.device_code.encode() + return (b"`" if p.fix == "current" else b"'") + body + write_status(p) + + +def device_parts(code: str | None) -> tuple[str, str]: + """Split a device code into what precedes and what ends the status text.""" + if not code: + return "", "" + head, rest = code[:1], code[1:] + if head in (">", "]"): + grid = re.match(_GRID, rest) + if grid: + head, rest = head + grid[0], rest[grid.end() :] + if head[:1] not in TYPE_SUFFIXES or rest and rest not in TYPE_SUFFIXES[code[0]]: + raise FieldError("unsupported Mic-E type code") + return head, rest + + +def _suffix(device: str, text: bytes) -> bytes: + for suffix in TYPE_SUFFIXES[device]: + if text.endswith(suffix.encode()): + return suffix.encode() + return b"" + + +def _legacy_hex(tail: bytes) -> int: + """Width of complete APRS101 hex telemetry after ` or ', or 0.""" + width = 4 if tail[:1] == b"`" else 10 + complete = re.fullmatch(rb"[0-9A-Fa-f]{%d}" % width, tail[1 : width + 1]) + if complete and not _suffix(tail[:1].decode(), tail[width + 1 :]): + return width + return 0 + + +def read_status(tail: bytes, symbol: Symbol) -> tuple[str | None, Extensions, bytes]: + """Decode the status text after the symbol: device code, extensions, comment.""" + device = None + suffix = b"" + telemetry = None + altitude = None + width = _legacy_hex(tail) if tail[:1] in (b"`", b"'") else 0 + if width: + values: tuple[int | None, ...] = tuple( + bytes.fromhex(tail[1 : width + 1].decode()) + ) + if width == 4: + values = (values[0], None, values[1], None, None) + telemetry = Telemetry(values, encoding="mic_e_hex") + tail = tail[width + 1 :] + elif tail[:1] == b"\x1d": + if len(tail) < 6: + raise FieldError("truncated Mic-E binary telemetry") + telemetry = Telemetry(tuple(tail[1:6]), encoding="mic_e_binary") + tail = tail[6:] + elif tail[:1] in (b">", b"]", b"`", b"'"): + device = tail[:1].decode() + suffix = _suffix(device, tail[1:]) + tail = tail[1 : len(tail) - len(suffix)] + if len(tail) >= 4 and tail[3:4] == b"}": + altitude = Altitude(Measurement(base91(tail[:3]) - 10000, "meters"), "mic_e") + tail = tail[4:] + grid = re.match(_GRID.encode(), tail) + if grid and device in (">", "]"): + device += grid[0].decode() + tail = tail[grid.end() :] + if device is not None: + device += suffix.decode() + from . import _extensions + + extra, tail = _extensions.read(tail, symbol) + e = replace( + extra, + altitude=altitude or extra.altitude, + telemetry=telemetry or extra.telemetry, + ) + return device, e, tail + + +def write_status(p: MicE) -> bytes: + """Encode the status text after the symbol; the inverse of read_status.""" + head, suffix = device_parts(p.device_code) e = replace(p.extensions, motion=None) - if e.altitude and e.altitude.encoding == "mic_e": - if e.altitude.reference != "unspecified": - raise FieldError( - "Mic-E altitude reference is not an independent wire field" - ) - a = e.altitude.measurement - if a.unit != "meters" or a.value is None: - raise FieldError("Mic-E altitude requires meters") - body += pack91(round(a.value) + 10000, 3) + b"}" - e = replace(e, altitude=None) + first = b"" if e.telemetry and e.telemetry.encoding in ("mic_e_hex", "mic_e_binary"): + if head: + raise FieldError("Mic-E telemetry and a type code share the first byte") t = e.telemetry values = t.analog if len(values) == 2 and t.encoding == "mic_e_hex": @@ -238,9 +286,9 @@ def write(p: MicE, header: Header) -> bytes: if len(values) != 5 or t.digital: raise FieldError("invalid Mic-E telemetry channels") if t.encoding == "mic_e_binary": - body += b"\x1d" + bytes(int(cast(float, v)) for v in values) + first = b"\x1d" + bytes(int(cast(float, v)) for v in values) elif values[1] is None and values[3:] == (None, None): - body += ( + first = ( b"`" + bytes([int(cast(float, values[0])), int(cast(float, values[2]))]) .hex() @@ -248,15 +296,29 @@ def write(p: MicE, header: Header) -> bytes: .encode() ) else: - body += ( + first = ( b"'" + bytes(int(cast(float, v)) for v in values).hex().upper().encode() ) e = replace(e, telemetry=None) + else: + first = head[:1].encode() + if e.altitude and e.altitude.encoding == "mic_e": + if e.altitude.reference != "unspecified": + raise FieldError( + "Mic-E altitude reference is not an independent wire field" + ) + a = e.altitude.measurement + if a.unit != "meters" or a.value is None: + raise FieldError("Mic-E altitude requires meters") + first += pack91(round(a.value) + 10000, 3) + b"}" + e = replace(e, altitude=None) from . import _extensions + comment = p.comment.encode() return ( - (b"`" if p.fix == "current" else b"'") - + body - + _extensions.write(e, p.symbol, p.comment.encode()) - + p.comment.encode() + first + + head[1:].encode() + + _extensions.write(e, p.symbol, comment) + + comment + + suffix.encode() ) diff --git a/packages/aprs/src/hamkit/aprs/_transport.py b/packages/aprs/src/hamkit/aprs/_transport.py index 80d3021..dd1a7c4 100644 --- a/packages/aprs/src/hamkit/aprs/_transport.py +++ b/packages/aprs/src/hamkit/aprs/_transport.py @@ -22,6 +22,7 @@ def parse_tnc2_line( unsupported: UnsupportedPolicy = "opaque", malformed: MalformedPolicy = "return", max_third_party_depth: int = 4, + legacy_positions: bool = False, ) -> Packet | Malformed: """Parse one LF- or CRLF-terminated line, as read from APRS-IS or a TNC. @@ -45,6 +46,7 @@ def parse_tnc2_line( unsupported=unsupported, malformed=malformed, max_third_party_depth=max_third_party_depth, + legacy_positions=legacy_positions, ) diff --git a/packages/aprs/tests/fap_divergences.json b/packages/aprs/tests/fap_divergences.json index 58508d6..e3ac1ca 100644 --- a/packages/aprs/tests/fap_divergences.json +++ b/packages/aprs/tests/fap_divergences.json @@ -12,9 +12,20 @@ "user_defined": "'{' is APRS101's user-defined data type, so this decodes as user-defined data; FAP rejects experimental formats.", "unknown_nmea": "Unknown NMEA sentences are kept as opaque data with an 'unsupported' diagnostic, not rejected.", "vtg": "$GPVTG is a supported NMEA sentence (course and speed only, so no usable position); FAP rejects it.", - "beacon": "Text with no position in the first 40 bytes is a non-APRS beacon, kept as text; FAP rejects it." + "beacon": "Text with no position in the first 40 bytes is a non-APRS beacon, kept as text; FAP rejects it.", + "mic_e_type_suffix": "APRS 1.2 Mic-E type codes end the status text with a declared version suffix (\"=\" after \"]\" is the TM-D710); it is part of device_code, not comment text.", + "mic_e_type_byte": "APRS 1.2 redefines a leading ` or ' as a Mic-E type byte; APRS101 hex telemetry needs the complete form (10 hex digits after '), so this is a type code followed by comment text. FAP reads two channels.", + "mic_e_manufacturer": "APRS 1.2 Mic-E type code ' with the Byonics TinyTrack3 suffix |3 is stored in device_code; FAP keeps both in the comment.", + "mic_e_corrupt": "A byte was lost in transit, so the symbol table is invalid; FAP's accept_broken_mice option guesses the repair, while the public parser reports the packet as Malformed." }, "rows": { + "FAP-005": { + "reasons": ["mic_e_type_suffix"], + "set": { + "$.payload.comment": "", + "$.payload.device_code": "]=" + } + }, "FAP-013": { "reasons": ["case"], "set": { @@ -57,6 +68,13 @@ "$.payload.comment": " http://aprs.fi/" } }, + "FAP-346": { + "reasons": ["mic_e_type_suffix"], + "set": { + "$.payload.comment": "", + "$.payload.device_code": "]=" + } + }, "FAP-347": { "reasons": ["mic_e_sequence", "whitespace"], "set": { @@ -64,6 +82,21 @@ "$.payload.extensions.telemetry.sequence": null } }, + "FAP-348": { + "reasons": ["mic_e_type_byte"], + "set": { + "$.payload.comment": "1020 commeeeent", + "$.payload.device_code": "'" + }, + "remove": ["$.payload.extensions.telemetry"] + }, + "FAP-349": { + "reasons": ["mic_e_corrupt"], + "replace": { + "type": "malformed" + }, + "drop_unmapped": ["$."] + }, "FAP-357": { "reasons": ["nmea_precision", "nmea_symbol"], "set": { @@ -184,6 +217,13 @@ "$.payload.comment": " comment " } }, + "FAP-430": { + "reasons": ["mic_e_manufacturer"], + "set": { + "$.payload.comment": "|", + "$.payload.device_code": "'|3" + } + }, "FAP-431": { "reasons": ["whitespace"], "set": { diff --git a/packages/aprs/tests/generate_vectors.py b/packages/aprs/tests/generate_vectors.py index 271ab7c..f1c9e9d 100644 --- a/packages/aprs/tests/generate_vectors.py +++ b/packages/aprs/tests/generate_vectors.py @@ -763,6 +763,8 @@ def diverge(row: JSON, divergences: JSON) -> None: assert row["profile"] == "compatibility-fap", row["id"] entry = divergences["rows"][row["id"]] row["divergence"] = [divergences["reasons"][key] for key in entry["reasons"]] + if "replace" in entry: + row["expected"] = {"original_wire": row["packet"], **entry["replace"]} if "accept" in entry: assert row.pop("rejection"), row["id"] row["expected"] = { @@ -776,7 +778,6 @@ def diverge(row: JSON, divergences: JSON) -> None: target = row["expected"] for name in parents: target = target[name] - assert key in target, (row["id"], path) target[key] = value for prefix in entry.get("drop_unmapped", []): # Facts from FAP's interpretation that the public expectation rejects. diff --git a/packages/aprs/tests/packets/test_codec_regressions.py b/packages/aprs/tests/packets/test_codec_regressions.py index 4b02b32..d4affd9 100644 --- a/packages/aprs/tests/packets/test_codec_regressions.py +++ b/packages/aprs/tests/packets/test_codec_regressions.py @@ -304,3 +304,86 @@ def test_weather_codes_must_end_the_report(raw): ) resent = packet(a.serialize_packet(plain)) assert resent.payload.comment == comment + + +MIC_E = b"N0CALL>S32UVT:`(_f\x1e\x1eOj/" + + +@pytest.mark.parametrize( + ("status", "device", "comment", "telemetry"), + [ + (b'`"4T}Hi_%', "`_%", "Hi", None), # Yaesu FTM-400DR with altitude + (b"'Hello|3", "'|3", "Hello", None), # Byonics TinyTrack3 + (b"'1020 x", "'", "1020 x", None), # incomplete hex: a type byte + (b"`plain", "`", "plain", None), # undeclared suffix stays in the comment + (b']"3x}=', "]=", "", None), # Kenwood TM-D710 + (b">Ready^", ">^", "Ready", None), # Kenwood TH-D74 + (b"`1020", None, "", "mic_e_hex"), # APRS101 two-channel telemetry + (b"'102030FFff text", None, " text", "mic_e_hex"), + (b"'102030FFff|3", "'|3", "102030FFff", None), # a declared suffix wins + ], +) +def test_mic_e_type_codes(status, device, comment, telemetry): + # APRS 1.2 (aprs.org/aprs12/mic-e-types.txt) redefines ` and ' as type bytes; + # no type byte or suffix can make the packet Malformed. + decoded = packet(MIC_E + status) + assert decoded.payload.device_code == device + assert decoded.payload.comment == comment + t = decoded.payload.extensions.telemetry + assert (t and t.encoding) == telemetry + resent = packet(a.serialize_packet(decoded)) + assert (resent.payload.device_code, resent.payload.comment) == (device, comment) + + +def test_mic_e_type_codes_are_checked_before_sending(): + def mic_e(**fields): + motion = a.Extensions(motion=a.Motion(90, 10)) + fields.setdefault("extensions", motion) + payload = a.MicE(33.4277, -112.12, a.Symbol("/", ">"), message="off_duty") + return a.Packet( + a.Header("N0CALL", "S32UVT"), dataclasses.replace(payload, **fields) + ) + + def findings(**fields): + return [(d.path, d.message) for d in a.check_packet(mic_e(**fields))] + + assert findings(device_code="`_%", comment="Hi") == [] + readback = ( + "$.payload.comment", + "would be read back as a different Mic-E type code", + ) + assert findings(device_code="`", comment="Hi_%") == [readback] + assert findings(comment="]hello") == [readback] + assert findings(comment="'1020") == [readback] + assert findings(device_code=">", comment="ok=") == [readback] + assert findings(device_code="]x") == [ + ("$.payload.device_code", "not a declared Mic-E type code") + ] + telemetry = a.Telemetry((1, 2, 3, 4, 5), encoding="mic_e_hex") + shared = a.Extensions(motion=a.Motion(90, 10), telemetry=telemetry) + assert findings(device_code="'", extensions=shared) == [ + ( + "$.payload.device_code", + "Mic-E telemetry and a type code share the first byte", + ) + ] + with pytest.raises(a.ConformanceError): + a.serialize_packet(mic_e(device_code="`", comment="Hi_%")) + + +def test_embedded_position_search_is_opt_in(): + # APRS101 p.18 (X1J) allowed a "!" position in the first 40 bytes of other + # text; the APRS 1.1 addendum deprecates the search. + raw = b"N0CALL>BEACON:X!4903.50N/07201.75W-" + assert packet(raw).payload == a.Beacon("X!4903.50N/07201.75W-") + legacy = a.parse_packet(raw, legacy_positions=True) + assert isinstance(legacy.payload, a.LegacyPosition) + assert legacy.payload.prefix == b"X" + framed = a.parse_tnc2_line(raw + b"\r\n", legacy_positions=True) + assert framed.payload == legacy.payload + payload = a.parse_payload(raw.partition(b":")[2], legacy_positions=True) + assert payload == legacy.payload + beyond = b"N0CALL>BEACON:" + b"X" * 40 + b"!4903.50N/07201.75W-" + assert isinstance(a.parse_packet(beyond, legacy_positions=True).payload, a.Beacon) + with pytest.raises(TypeError): + a.parse_packet(raw, legacy_positions="yes") diff --git a/packages/aprs/tests/packets/test_corpus.py b/packages/aprs/tests/packets/test_corpus.py index ef75cbd..42fd37c 100644 --- a/packages/aprs/tests/packets/test_corpus.py +++ b/packages/aprs/tests/packets/test_corpus.py @@ -15,17 +15,11 @@ DIRECTORY = Path(__file__).parents[1] / "vectors" -# Rows still checked through the private compatibility view. Each one waits on -# a parser change or a decision; every other row compares parse_packet output -# directly. Group 2: Mic-E manufacturer prefixes and the embedded "!" search. -# Group 3: 000000z timestamps, short or decimal telemetry, minimal GLL and -# trailing APRS 1.2 weather fields (X/V tails also read as software/unit codes). +# Rows still checked through the private compatibility view; every other row +# compares parse_packet output directly. Each waits on a decision: 000000z +# timestamps, short or decimal telemetry, minimal GLL and trailing APRS 1.2 +# weather fields (X/V tails also read as software/unit codes). COMPATIBILITY_PENDING = { - "FAP-348", - "FAP-349", - "FAP-430", - "OTH-033", - "OTH-035", "FAP-362", "FAP-433", "FAP-434", @@ -81,6 +75,20 @@ def differences(actual: Any, expected: Any, path: str = "$") -> list[str]: ) +# Receivers in these profiles search other text for an embedded "!" position. +LEGACY_POSITION_PROFILES = {"historical-1.0", "compatibility-fap"} + + +def parse_row(row: dict[str, Any], raw: bytes) -> aprs.Packet | aprs.Malformed: + options = row.get("options") or {} + strict = row["profile"] == "strict-envelope" or options.get("ax25") + return aprs.parse_packet( + raw, + policy=aprs.RF if strict else aprs.APRS_IS, + legacy_positions=row["profile"] in LEGACY_POSITION_PROFILES, + ) + + def rows(): return [ json.loads(line) @@ -109,9 +117,7 @@ def check(row: dict[str, Any]) -> None: actual, rejected = view(raw, row["profile"], row.get("options")) else: - options = row.get("options") or {} - strict = row["profile"] == "strict-envelope" or options.get("ax25") - packet = aprs.parse_packet(raw, policy=aprs.RF if strict else aprs.APRS_IS) + packet = parse_row(row, raw) actual = aprs.to_json_dict(packet, include_defaults=True) rejected = isinstance(packet, aprs.Malformed) or any( d.code == "nonconforming" for d in packet.diagnostics diff --git a/packages/aprs/tests/packets/test_roundtrip_corpus.py b/packages/aprs/tests/packets/test_roundtrip_corpus.py index 5215ed9..fba3c7f 100644 --- a/packages/aprs/tests/packets/test_roundtrip_corpus.py +++ b/packages/aprs/tests/packets/test_roundtrip_corpus.py @@ -10,7 +10,7 @@ from typing import Any import pytest -from packets.test_corpus import load, rows +from packets.test_corpus import LEGACY_POSITION_PROFILES, load, rows from hamkit import aprs as a @@ -102,7 +102,8 @@ def same_semantics(x: Any, y: Any, path="$") -> None: @pytest.mark.parametrize("row", load()) def test_vector_roundtrip(row): - packet = a.parse_packet(row["packet"].encode("latin1")) + legacy = row["profile"] in LEGACY_POSITION_PROFILES + packet = a.parse_packet(row["packet"].encode("latin1"), legacy_positions=legacy) # JSON is lossless even for malformed or nonconforming received packets. assert a.to_json_dict(a.from_json(a.to_json(packet))) == a.to_json_dict(packet) exception = EXCEPTIONS.get(row["id"]) @@ -137,7 +138,7 @@ def test_vector_roundtrip(row): else: a.validate_packet(clean) wire = a.serialize_packet(clean, policy=CORPUS_POLICY) - decoded = a.parse_packet(wire) + decoded = a.parse_packet(wire, legacy_positions=legacy) assert isinstance(decoded, a.Packet) if isinstance(clean.payload, a.NMEA): n = clean.payload diff --git a/packages/aprs/tests/roundtrip_exceptions.json b/packages/aprs/tests/roundtrip_exceptions.json index 22fc39d..abb6403 100644 --- a/packages/aprs/tests/roundtrip_exceptions.json +++ b/packages/aprs/tests/roundtrip_exceptions.json @@ -887,10 +887,6 @@ "kind": "malformed", "reasons": ["message requires a nine-byte addressee and colon"] }, - "FAP-348": { - "kind": "malformed", - "reasons": ["invalid Mic-E hex telemetry"] - }, "FAP-349": { "kind": "malformed", "reasons": ["invalid symbol table or overlay"] @@ -1079,10 +1075,6 @@ "kind": "conformance", "reasons": ["extensions and comment exceed 43 bytes"] }, - "FAP-430": { - "kind": "malformed", - "reasons": ["invalid Mic-E hex telemetry"] - }, "FAP-432": { "kind": "conformance", "reasons": [ diff --git a/packages/aprs/tests/source_details.py b/packages/aprs/tests/source_details.py index c3962c3..c727b73 100644 --- a/packages/aprs/tests/source_details.py +++ b/packages/aprs/tests/source_details.py @@ -351,7 +351,9 @@ def check_core(row): from packets.test_corpus import differences raw = row["packet"].encode("latin1") - actual = core(a.parse_packet(raw), raw, row["profile"]) + from packets.test_corpus import parse_row + + actual = core(parse_row(row, raw), raw, row["profile"]) errors = [] for path in row.get("unmapped", []): try: diff --git a/packages/aprs/tests/test_vector_schema_migration.py b/packages/aprs/tests/test_vector_schema_migration.py index 4d707a2..6904368 100644 --- a/packages/aprs/tests/test_vector_schema_migration.py +++ b/packages/aprs/tests/test_vector_schema_migration.py @@ -215,17 +215,17 @@ def test_conflicting_modern_beacon_interpretation_is_not_rewritten(): def test_mic_e_device_field_preserves_captured_comment(identifier): row = next(r for r in ROWS if r["id"] == identifier) payload = row["expected"]["payload"] - assert payload["device_code"] == row["packet"].partition(":")[2][9] + # The type byte begins the status text and any version suffix ends it. + head, suffix = payload["device_code"][0], payload["device_code"][1:] + assert head == row["packet"].partition(":")[2][9] assert ( - payload["device_code"] + payload["comment"] + head + payload["comment"] + suffix == row["source_expected"]["fap_fields"]["Comment"] ) -def test_broken_mic_e_comment_is_not_reinterpreted(): +def test_corrupted_mic_e_is_not_repaired(): row = next(r for r in ROWS if r["id"] == "FAP-349") - assert "device_code" not in row["expected"]["payload"] - assert ( - row["expected"]["payload"]["comment"] - == row["source_expected"]["fap_fields"]["Comment"] - ) + assert row["options"]["accept_broken_mice"] + assert row["expected"] == {"original_wire": row["packet"], "type": "malformed"} + assert row["divergence"] diff --git a/packages/aprs/tests/vectors/README.md b/packages/aprs/tests/vectors/README.md index 5a386df..0398ffb 100644 --- a/packages/aprs/tests/vectors/README.md +++ b/packages/aprs/tests/vectors/README.md @@ -31,19 +31,21 @@ invalid timestamps and the historical receiver's validation order. Error wording is represented by the public diagnostic scheme rather than copied verbatim. Every row compares `parse_packet` output with `expected` directly, except the -23 listed in `COMPATIBILITY_PENDING` (`tests/packets/test_corpus.py`). Those +18 listed in `COMPATIBILITY_PENDING` (`tests/packets/test_corpus.py`). Those still go through the private `_compatibility.py` view while they wait on parser changes or decisions; a regression test fails once one of them passes directly, so the list can only shrink. Where FAP's interpretation differs from the public decoder's, and the public one follows the specification, `tests/fap_divergences.json` replaces the -FAP-derived expectation. Each override names its reasons, such as comment -whitespace kept as transmitted, callsign case, compressed course 0, disputed -wind units, NMEA default symbols and precision, and packets FAP refuses but the -specification allows. The generator applies the overrides, copies the reasons -into the row's `divergence` field and leaves `outcome` and `source_expected` as -FAP captured them. +FAP-derived expectation. Each override names its reasons: comment whitespace +kept as transmitted, callsign case, compressed course 0, disputed wind units, +NMEA default symbols and precision, packets FAP refuses but the specification +allows, Mic-E type codes, and a corrupted Mic-E packet that FAP repairs. The +generator applies the overrides, copies the reasons into the row's +`divergence` field and leaves `outcome` and `source_expected` as FAP captured +them. Historical and FAP rows parse with `legacy_positions=True`, since those +receivers search other text for an embedded `!` position. The schema migration rewrote 35 stored expectations (33 FAP and two historical position cases): equivalent weather units, compressed weather wind nesting, diff --git a/packages/aprs/tests/vectors/fap.jsonl b/packages/aprs/tests/vectors/fap.jsonl index 023d390..98454bd 100644 --- a/packages/aprs/tests/vectors/fap.jsonl +++ b/packages/aprs/tests/vectors/fap.jsonl @@ -2,7 +2,7 @@ {"id":"FAP-002","title":"TestAPRSISPathIPv6BeforeQConstruct","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_paths_test.go#L23","packet":"IQ3VQ>APD225,200106F8020204020000000000000002,TCPIP*,qAI,IQ3VQ,THIRD,92E5A2B6,T2HUB1,200106F8020204020000000000000002,T2FINLAND:!4526.66NI01104.68E#PHG21306/- Lnx APRS Srv - sez. ARI VR EST","outcome":"reject","source_expected":{"fap_header":{"source":"IQ3VQ","destination":"APD225","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: digicall_badchars: digipeater callsign contains bad characters"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"IQ3VQ>APD225,200106F8020204020000000000000002,TCPIP*,qAI,IQ3VQ,THIRD,92E5A2B6,T2HUB1,200106F8020204020000000000000002,T2FINLAND:!4526.66NI01104.68E#PHG21306/- Lnx APRS Srv - sez. ARI VR EST"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-003","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-1>APRS:;LEADER *092345z4903.50N/07201.75W>088/036","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":66.672,"Course":88,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"object","comment":"","name":"LEADER","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":35.99999999999999,"course_deg":88}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-004","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-1>APRS:)AID #2!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-005","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-2>TQ4W2V,WIDE2-1,qAo,IGATE:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"mic_e","comment":"=","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"device_code":"]","extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":6}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-005","title":"TestDial","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/aprsis_test.go#L77","packet":"N0CALL-2>TQ4W2V,WIDE2-1,qAo,IGATE:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"mic_e","comment":"","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"device_code":"]=","extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":6}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["APRS 1.2 Mic-E type codes end the status text with a declared version suffix (\"=\" after \"]\" is the TM-D710); it is part of device_code, not comment text."]} {"id":"FAP-006","title":"TestWithAX25/valid_AX.25_packet","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB-9>APX200,OH7AA-1*,WIDE2-1:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH7LZB testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APX200","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH7LZB testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APX200","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH7LZB testing","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-007","title":"TestWithAX25/valid_AX.25_no_digipeaters","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"OH7LZB>APRS:>status","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"status","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB","destination":"APRS","path":[]},"payload":{"type":"status","text":"status"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-008","title":"TestWithAX25/invalid_AX.25_source_callsign","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/ax25_option_test.go#L92","packet":"TOOLONGCALLSIGN>APRS:>status","outcome":"reject","source_expected":{"fap_header":{"source":"TOOLONGCALLSIGN","destination":"","digipeaters":null},"fap_fields":{"Type":"","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: srccall_noax25: source callsign is not a valid AX.25 call"},"options":{"accept_broken_mice":false,"ax25":true,"raw_timestamp":false},"expected":{"original_wire":"TOOLONGCALLSIGN>APRS:>status"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -343,10 +343,10 @@ {"id":"FAP-343","title":"TestMessageErrors/too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L444","packet":"OH7AA-1>APRS::N0CALL ","outcome":"reject","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: msg_short: message packet too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7AA-1>APRS::N0CALL "},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-344","title":"TestMessageErrors/missing_colon_after_addressee","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/message_test.go#L444","packet":"OH7AA-1>APRS::N0CALL XHello world","outcome":"reject","source_expected":{"fap_header":{"source":"OH7AA-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: msg_inv: message addressee field malformed"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"OH7AA-1>APRS::N0CALL XHello world"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-345","title":"TestMicENonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/]","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":"","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"device_code":"]","extensions":{"motion":{"speed_knots":0.0,"course_deg":0}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-346","title":"TestMicEMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L108","packet":"OH7LZB-2>TQ4W2V,WIDE2-1,qAo,OH7LZB:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"=","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"device_code":"]","extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":6}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-346","title":"TestMicEMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L108","packet":"OH7LZB-2>TQ4W2V,WIDE2-1,qAo,OH7LZB:`c51!f?>/]\"3x}=","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-2","destination":"TQ4W2V","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":41.78766666666667,"Longitude":-71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":6,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]=","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH7LZB-2","destination":"TQ4W2V","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"","latitude_deg":41.78766666666667,"longitude_deg":-71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"device_code":"]=","extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":6}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["APRS 1.2 Mic-E type codes end the status text with a declared version suffix (\"=\" after \"]\" is the TM-D710); it is part of device_code, not comment text."]} {"id":"FAP-347","title":"TestMicEHexTelemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L208","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'102030FFff commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,32,48,255,255],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":" commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"telemetry":{"sequence":null,"analog":[16,32,48,255,255]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Mic-E hex telemetry carries no sequence number, so none is reported; FAP reports 0.","Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} -{"id":"FAP-348","title":"TestMicEHexTelemetry2Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L237","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'1020 commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,0,32],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35},"telemetry":{"sequence":0,"analog":[16,0,32]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-349","title":"TestMicEMangled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L267","packet":"KD0KZE>TUPX9R,RS0ISS*,qAR,K0GDI-6:'yaIl -/]Greetings via ISS=","outcome":"accept","source_expected":{"fap_header":{"source":"KD0KZE","destination":"TUPX9R","digipeaters":[{"Call":"RS0ISS","WasDigied":true},{"Call":"qAR","WasDigied":false},{"Call":"K0GDI-6","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":45.148666666666664,"Longitude":-93.1575,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"111","MiceMangled":true,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Greetings via ISS=","Warnings":null}},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"KD0KZE","destination":"TUPX9R","path":[{"address":"RS0ISS","repeated":true},{"address":"qAR","repeated":false},{"address":"K0GDI-6","repeated":false}]},"payload":{"type":"mic_e","comment":"]Greetings via ISS=","latitude_deg":45.148666666666664,"longitude_deg":-93.1575,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-348","title":"TestMicEHexTelemetry2Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L237","packet":"OZ2BRN-4>5U2V08,WIDE2-1,qAo,OH7LZB:`c51!f?>/'1020 commeeeent","outcome":"accept","source_expected":{"fap_header":{"source":"OZ2BRN-4","destination":"5U2V08","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH7LZB","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":55.434666666666665,"Longitude":71.42016666666666,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":105.56400000000001,"Course":35,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[16,0,32],"Bits":""},"Capabilities":null,"MBits":"010","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"commeeeent","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OZ2BRN-4","destination":"5U2V08","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH7LZB","repeated":false}]},"payload":{"type":"mic_e","comment":"1020 commeeeent","latitude_deg":55.434666666666665,"longitude_deg":71.42016666666666,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":57.0,"course_deg":35}},"device_code":"'"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["APRS 1.2 redefines a leading ` or ' as a Mic-E type byte; APRS101 hex telemetry needs the complete form (10 hex digits after '), so this is a type code followed by comment text. FAP reads two channels."]} +{"id":"FAP-349","title":"TestMicEMangled","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L267","packet":"KD0KZE>TUPX9R,RS0ISS*,qAR,K0GDI-6:'yaIl -/]Greetings via ISS=","outcome":"accept","source_expected":{"fap_header":{"source":"KD0KZE","destination":"TUPX9R","digipeaters":[{"Call":"RS0ISS","WasDigied":true},{"Call":"qAR","WasDigied":false},{"Call":"K0GDI-6","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":45.148666666666664,"Longitude":-93.1575,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"111","MiceMangled":true,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Greetings via ISS=","Warnings":null}},"options":{"accept_broken_mice":true,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"KD0KZE>TUPX9R,RS0ISS*,qAR,K0GDI-6:'yaIl -/]Greetings via ISS=","type":"malformed"},"unmapped":[],"divergence":["A byte was lost in transit, so the symbol table is invalid; FAP's accept_broken_mice option guesses the repair, while the public parser reports the packet as Malformed."]} {"id":"FAP-350","title":"TestMicEErrors/destination_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"N0CALL>AB:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"AB","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: Mic-E destination callsign too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>AB:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-351","title":"TestMicEErrors/info_field_too_short","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"N0CALL>SX15S6:`short","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX15S6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_short: Mic-E information field too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX15S6:`short"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-352","title":"TestMicEErrors/invalid_destination_character","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/mice_test.go#L334","packet":"N0CALL>SX1MS6:`c51!f?>/","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"SX1MS6","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: mice_inv_dstcall: invalid Mic-E destination character: M"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>SX1MS6:`c51!f?>/"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -427,7 +427,7 @@ {"id":"FAP-427","title":"TestCommentTelemetryInvalid/single_pipe","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_comment_test.go#L174","packet":"N0CALL>APRS,qAR,IGATE:!6304.03N/02739.63E>c |!!!!","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":63.067166666666665,"Longitude":27.6605,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"c |!!!!","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"position","comment":"c |!!!!","messaging":false,"latitude_deg":63.067166666666665,"longitude_deg":27.6605,"ambiguity":0,"symbol":{"table_id":"/","code":">"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-428","title":"TestMicEBase91Telemetry5Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L13","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":" comment ","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-429","title":"TestMicEBase91Telemetry1Ch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L50","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":" comment ","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":0,"analog":[0]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} -{"id":"FAP-430","title":"TestMicEBase91TelemetryHarder","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L84","packet":"N6BG-1>S6QTUX:`+,^l!cR/'\";z}||ss11223344bb!\"|!w>f!|3","outcome":"accept","source_expected":{"fap_header":{"source":"N6BG-1","destination":"S6QTUX","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":36.24305311355312,"Longitude":-115.27779304029303,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"R","Speed":0,"Course":171,"Altitude":736,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,5980],"Bits":"10000000"},"Capabilities":null,"MBits":"101","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"'||3","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N6BG-1","destination":"S6QTUX","path":[]},"payload":{"type":"mic_e","comment":"'||3","latitude_deg":36.24305311355312,"longitude_deg":-115.27779304029303,"ambiguity":0,"symbol":{"table_id":"/","code":"R"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":171},"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,5980],"digital":[true,false,false,false,false,false,false,false]},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":736}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-430","title":"TestMicEBase91TelemetryHarder","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L84","packet":"N6BG-1>S6QTUX:`+,^l!cR/'\";z}||ss11223344bb!\"|!w>f!|3","outcome":"accept","source_expected":{"fap_header":{"source":"N6BG-1","destination":"S6QTUX","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":36.24305311355312,"Longitude":-115.27779304029303,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"R","Speed":0,"Course":171,"Altitude":736,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,5980],"Bits":"10000000"},"Capabilities":null,"MBits":"101","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"'||3","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N6BG-1","destination":"S6QTUX","path":[]},"payload":{"type":"mic_e","comment":"|","latitude_deg":36.24305311355312,"longitude_deg":-115.27779304029303,"ambiguity":0,"symbol":{"table_id":"/","code":"R"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":171},"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,5980],"digital":[true,false,false,false,false,false,false,false]},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":736}}},"device_code":"'|3"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["APRS 1.2 Mic-E type code ' with the Byonics TinyTrack3 suffix |3 is stored in device_code; FAP keeps both in the comment."]} {"id":"FAP-431","title":"TestMicEBase91TelemetryDAOConfusing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L102","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!wEU!![S|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":86,"Vals":[3328,0,5328,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":" comment ","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":86,"analog":[3328,0,5328]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-432","title":"TestTelemetryClassic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L12","packet":"SRCCALL>APRS:T#324,000,038,255,.12,50.12,01000001","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":324,"Vals":[0,38,255,0.12,50.12],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":324,"analog":[0,38,255,0.12,50.12],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-433","title":"TestTelemetryRelaxed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L43","packet":"SRCCALL>APRS:T#1,-1,2147483647,-2147483648,0.000001,-0.0000001,01000001 comment","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[-1,2147483647,-2147483648,1e-06,-1e-07],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[-1,2147483647,-2147483648,1e-06,-1e-07],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} From e2c709b75078a52c73f0c029c15c54da92ecfaef Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Sat, 17 Oct 2026 12:41:18 -0700 Subject: [PATCH 11/14] More work --- packages/aprs/README.md | 2 +- packages/aprs/docs/API_COVERAGE.md | 77 +- packages/aprs/docs/JSON_FORMAT.md | 40 +- packages/aprs/docs/UNRESOLVED_SPEC.md | 16 +- .../aprs/src/hamkit/aprs/_compatibility.py | 711 ------------------ packages/aprs/src/hamkit/aprs/_conformance.py | 29 +- packages/aprs/src/hamkit/aprs/_data.py | 6 +- packages/aprs/src/hamkit/aprs/_messages.py | 48 +- packages/aprs/src/hamkit/aprs/_recovery.py | 29 +- packages/aprs/src/hamkit/aprs/_rules.py | 2 + packages/aprs/src/hamkit/aprs/_weather.py | 71 +- packages/aprs/tests/fap_divergences.json | 74 +- packages/aprs/tests/generate_vectors.py | 7 + .../tests/packets/test_codec_regressions.py | 85 +++ packages/aprs/tests/packets/test_corpus.py | 49 +- packages/aprs/tests/packets/test_phg.py | 9 +- packages/aprs/tests/roundtrip_exceptions.json | 31 +- packages/aprs/tests/source_details.py | 24 +- .../tests/test_vector_schema_migration.py | 41 +- packages/aprs/tests/vectors/README.md | 36 +- packages/aprs/tests/vectors/fap.jsonl | 62 +- 21 files changed, 475 insertions(+), 974 deletions(-) delete mode 100644 packages/aprs/src/hamkit/aprs/_compatibility.py diff --git a/packages/aprs/README.md b/packages/aprs/README.md index 8fcc0ff..46e1d45 100644 --- a/packages/aprs/README.md +++ b/packages/aprs/README.md @@ -1945,7 +1945,7 @@ print(packet) Output: ```text -Packet(header=Header(source='N0CALL', destination='APRS', path=()), payload=Weather(wind_direction=Measurement(value=220.0, unit='degrees'), wind_speed=Measurement(value=4.0, unit='mph'), gust=Measurement(value=5.0, unit='mph'), temperature=Measurement(value=77.0, unit='fahrenheit'), humidity=Measurement(value=50.0, unit='percent'), pressure=Measurement(value=990.0, unit='hPa'), rain_1h=Measurement(value=0.01, unit='inches'), rain_24h=Measurement(value=0.25, unit='inches'), rain_since_midnight=Measurement(value=0.12, unit='inches'), snow_24h=None, luminosity=None, rain_counter=None, water_height=None, software_code='W', device_code='RSW', timestamp=Timestamp(kind='mdhm_utc', hour=5, minute=56, day=9, second=None, month=10), comment=''), diagnostics=()) +Packet(header=Header(source='N0CALL', destination='APRS', path=()), payload=Weather(wind_direction=Measurement(value=220.0, unit='degrees'), wind_speed=Measurement(value=4.0, unit='mph'), gust=Measurement(value=5.0, unit='mph'), temperature=Measurement(value=77.0, unit='fahrenheit'), humidity=Measurement(value=50.0, unit='percent'), pressure=Measurement(value=990.0, unit='hPa'), rain_1h=Measurement(value=0.01, unit='inches'), rain_24h=Measurement(value=0.25, unit='inches'), rain_since_midnight=Measurement(value=0.12, unit='inches'), snow_24h=None, luminosity=None, rain_counter=None, water_height=None, radiation=None, battery_voltage=None, software_code='W', device_code='RSW', timestamp=Timestamp(kind='mdhm_utc', hour=5, minute=56, day=9, second=None, month=10), comment=''), diagnostics=()) ``` Show that same result as JSON: diff --git a/packages/aprs/docs/API_COVERAGE.md b/packages/aprs/docs/API_COVERAGE.md index 4ad6d49..ad3f4e9 100644 --- a/packages/aprs/docs/API_COVERAGE.md +++ b/packages/aprs/docs/API_COVERAGE.md @@ -7,20 +7,20 @@ Decoding and encoding cover the families exercised by all 1,564 occurrences in [the edition 1 corpus](APRS_COMPLIANCE_VECTORS.md). Unknown grammars still use `Opaque`; raw wrappers preserve authoritative information bytes. -| Family | Decoding and encoding | -| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | -| Envelope | TNC2, configurable address patterns and size limits, RF/APRS-IS presets, explicit repeated hops, AEA normalization, bounded third-party nesting | -| Positions | All four DTIs, ambiguity, compressed coordinates/csT, Mic-E destination-dependent latitude/message/hemisphere | -| Extensions | Motion, altitude, PHG/rate, range, DF signal/bearing, DAO, area/corridor, signpost, storm, weather, base91 and Mic-E telemetry | -| Objects/items | Names, ownership information, alive/killed markers, compressed/uncompressed positions and extensions | -| Weather | MDHM positionless and located reports, unavailable readings, rain/humidity/pressure, luminosity, snow, water height, device suffixes | -| Telemetry | Classic samples, PARM/UNIT/EQNS/BITS, comment base91, old Mic-E hex/binary | -| Messages | Ordinary messages, ack/rej, reply-ack, automatic answers, bulletins/announcements/groups, NWS envelopes, NTS records | -| Queries/responses | General/directed queries, footprints, heard-station operands, direct lists, hourly counts, trace headers, capabilities | -| Status | Text, DHM, grid/symbol and beam/ERP | -| NMEA | GGA, GLL, RMC, VTG and WPL, checksums, independent fix usability, destination/source symbol conventions | -| Historical/raw | Grid beacons, X1J embedded positions (opt-in), plain beacons, Agrelo, user-defined, invalid/test, reserved and external raw formats | -| Vendor weather | Ultimeter 2000 measurements plus original bytes; other vendor modes retain bytes without invented measurements | +| Family | Decoding and encoding | +| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Envelope | TNC2, configurable address patterns and size limits, RF/APRS-IS presets, explicit repeated hops, AEA normalization, bounded third-party nesting | +| Positions | All four DTIs, ambiguity, compressed coordinates/csT, Mic-E destination-dependent latitude/message/hemisphere | +| Extensions | Motion, altitude, PHG/rate, range, DF signal/bearing, DAO, area/corridor, signpost, storm, weather, base91 and Mic-E telemetry | +| Objects/items | Names, ownership information, alive/killed markers, compressed/uncompressed positions and extensions | +| Weather | MDHM positionless and located reports, unavailable readings, rain/humidity/pressure, luminosity, snow, water height, APRS 1.2 radiation and battery volts, device suffixes | +| Telemetry | Classic samples (short reports decode as nonconforming), PARM/UNIT/EQNS/BITS, comment base91, old Mic-E hex/binary | +| Messages | Ordinary messages, ack/rej, reply-ack, automatic answers, bulletins/announcements/groups, NWS envelopes, NTS records | +| Queries/responses | General/directed queries, footprints, heard-station operands, direct lists, hourly counts, trace headers, capabilities | +| Status | Text, DHM, grid/symbol and beam/ERP | +| NMEA | GGA, GLL, RMC, VTG and WPL, checksums, independent fix usability, destination/source symbol conventions | +| Historical/raw | Grid beacons, X1J embedded positions (opt-in), plain beacons, Agrelo, user-defined, invalid/test, reserved and external raw formats | +| Vendor weather | Ultimeter 2000 measurements plus original bytes; other vendor modes retain bytes without invented measurements | `codec_support()` and `codec_support_for()` describe these boundaries at runtime. Raw models do not promise interpretation of arbitrary vendor or external grammars. @@ -41,19 +41,17 @@ generator preserves values while translating names, nesting and equivalent units it never consults a parser or expected decoder output. The public codec is deterministic and preserves the richer wire interpretation. -The private `_compatibility` adapter supplies the named historical views and -additional receiver facts without adding profile parameters or JSON fields to -the public API. It never reads fixtures or expected values. FAP compatibility is -an implementation of the captured receiver policy, not the core transmit policy. -The pinned reference implementation was consulted; it is not a runtime dependency. - -Some facts cannot be stored as additional public fields: disputed DF quality -interpretations, network retention/routing policy, weather radiation/battery and -indoor sensor values, and historical receiver resolution/warnings. Tests verify -these separately from retained codes/bytes. Incomplete historical GLL reports -and invalid timestamps remain `Malformed` in the public model when required -facts cannot be constructed; the historical adapter exposes only available facts. -No missing time, coordinate or calibration coefficient is fabricated. +There is no receiver-emulation layer: every vector compares public +`parse_packet` output with its stored expectation. FAP's own extra fields +(display resolution, raw timestamps, warnings, indoor sensors) describe that +library's output rather than this schema, so they remain source provenance +without assertions. The pinned reference implementation was consulted; it is +not a runtime dependency. + +Incomplete historical GLL reports and invalid timestamps remain `Malformed` when +required facts cannot be constructed; `Malformed.recovered` keeps the intact +fields of positions, objects and status reports. No missing time, coordinate or +calibration coefficient is fabricated. The completed schema migration rewrites 35 expectations (33 FAP, two historical positions). It stores weather measurements in the public decoder's equivalent @@ -66,14 +64,10 @@ The runtime weather-unit conversion, wrapper flattening, and NMEA source-schema comparison have been removed. Source snapshots and all raw packet bytes remain unchanged; inverse-unit and source-value tests check that no information was lost. -All but 18 vectors compare public `parse_packet` output with their stored -expectations directly; historical and FAP rows parse with -`legacy_positions=True`. Forty-two FAP expectations record where FAP's -interpretation differs from the specification-following public decoder -(`tests/fap_divergences.json`). The remaining 18 still use the compatibility -view: `000000z` timestamps, short or decimal telemetry, minimal GLL sentences -and trailing APRS 1.2 weather fields. Supplemental FAP source facts are still -checked through the adapter's helpers. +Historical and FAP rows parse with `legacy_positions=True`. Fifty-two FAP +expectations record where FAP's interpretation differs from the +specification-following public decoder (`tests/fap_divergences.json`), each +with its reasons. The 23 sequence occurrences run through a test application receiver using public models. Ownership, deduplication, acknowledgment construction, calibration, @@ -143,21 +137,20 @@ All original packet bytes, semantic expectations, options and provenance have a frozen integrity hash tied to PR #4's head commit. Every vector also has an encoding test. With an explicit permissive envelope -policy (`EnvelopePolicy(".*", ".*", ".*")`), 1,303 occurrences encode and stabilize +policy (`EnvelopePolicy(".*", ".*", ".*")`), 1,305 occurrences encode and stabilize through semantic decode/encode round trips with all raw evidence removed. The -other 261 have explicit refusal records: 181 malformed public packets and 80 +other 259 have explicit refusal records: 176 malformed public packets and 83 violations of the existing transmit-conformance rules. Those refusal tests assert the reason; they are not broad exception catches or skipped tests. Three NMEA sentences with bad checksums are first refused, then encode after an explicit -repair; they are counted among the 1,303. +repair; they are counted among the 1,305. -Of those 1,303, 15 have addresses rejected by the new default `APRS_IS` policy, +Of those 1,305, 15 have addresses rejected by the new default `APRS_IS` policy, including two with SSID `-0`; the tests independently require those -default-policy refusals and validate the other 1,288 under the default policy. The permissive policy changes no decoded +default-policy refusals and validate the other 1,290 under the default policy. The permissive policy changes no decoded fields, packet bytes or payload conformance checks. Dedicated policy tests cover custom patterns, optional and zero limits, boundary sizes including CRLF, repeated markers, and consistent outer-envelope handling of third-party packets. -PHG/PHGR vectors exercise the public API directly, without compatibility -decoding. The PHGR rate character and required slash, ordinary PHG separators, +PHG/PHGR vectors exercise the public API directly. The PHGR rate character and required slash, ordinary PHG separators, and PHG comment whitespace are handled by the shared public decoder/encoder. diff --git a/packages/aprs/docs/JSON_FORMAT.md b/packages/aprs/docs/JSON_FORMAT.md index 854eee0..8872ddc 100644 --- a/packages/aprs/docs/JSON_FORMAT.md +++ b/packages/aprs/docs/JSON_FORMAT.md @@ -178,12 +178,12 @@ Standalone tag: `measurement`. [Back to type map](#type-map-and-object-catalog). } ``` -| Field | JSON value / allowed values | Presence / default | -| ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | -| `type` | `"measurement"` | see [Tags](#tags) | -| `value` | finite number or null | **required** | -| `unit` | `'degrees'`, `'knots'`, `'mph'`, `'m/s'`, `'km/h'`, `'feet'`, `'meters'`, `'miles'`, `'nautical_miles'`, `'fahrenheit'`, `'celsius'`, `'percent'`, `'hPa'`, `'inches'`, `'mm'`, `'W/m2'`, `'watts'`, `'dBi'`, `'dB'`, `'S_units'`, `'count'`, `'raw'`, `'disputed_knots_or_mph'` | **required** | -| `raw` | Latin-1 byte string or null | optional; default `null` | +| Field | JSON value / allowed values | Presence / default | +| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------ | +| `type` | `"measurement"` | see [Tags](#tags) | +| `value` | finite number or null | **required** | +| `unit` | `'degrees'`, `'knots'`, `'mph'`, `'m/s'`, `'km/h'`, `'feet'`, `'meters'`, `'miles'`, `'nautical_miles'`, `'fahrenheit'`, `'celsius'`, `'percent'`, `'hPa'`, `'inches'`, `'mm'`, `'W/m2'`, `'nSv/h'`, `'volts'`, `'watts'`, `'dBi'`, `'dB'`, `'S_units'`, `'count'`, `'raw'`, `'disputed_knots_or_mph'` | **required** | +| `raw` | Latin-1 byte string or null | optional; default `null` | ### Timestamp @@ -563,6 +563,8 @@ Weather measurements are direct JSON properties; `weather` is not a JSON propert "luminosity": null, "rain_counter": null, "water_height": null, + "radiation": null, + "battery_voltage": null, "software_code": null, "device_code": null, "timestamp": { @@ -595,6 +597,8 @@ Weather measurements are direct JSON properties; `weather` is not a JSON propert | `luminosity` | [Measurement](#measurement) or null | optional; default `null` | | `rain_counter` | [Measurement](#measurement) or null | optional; default `null` | | `water_height` | [WaterHeight](#waterheight) or null | optional; default `null` | +| `radiation` | [Measurement](#measurement) or null | optional; default `null` | +| `battery_voltage` | [Measurement](#measurement) or null | optional; default `null` | | `software_code` | string or null | optional; default `null` | | `device_code` | string or null | optional; default `null` | | `timestamp` | [Timestamp](#timestamp) or null | optional; default `null` | @@ -650,16 +654,16 @@ Standalone tag: `telemetry`. [Back to type map](#type-map-and-object-catalog). } ``` -| Field | JSON value / allowed values | Presence / default | -| -------------- | ----------------------------------------------------------------------------------- | ----------------------------- | -| `type` | `"telemetry"` | see [Tags](#tags) | -| `analog` | array of finite number or null | optional; default `[]` | -| `digital` | array of boolean or null | optional; default `[]` | -| `sequence` | integer or `'MIC'` or null | optional; default `null` | -| `encoding` | `'classic'`, `'mic_e_hex'`, `'mic_e_binary'`, `'base91_comment'`, `'compatibility'` | optional; default `'classic'` | -| `comment` | string | optional; default `""` | -| `sequence_raw` | Latin-1 byte string or null | optional; default `null` | -| `raw` | Latin-1 byte string or null | optional; default `null` | +| Field | JSON value / allowed values | Presence / default | +| -------------- | ---------------------------------------------------------------- | ----------------------------- | +| `type` | `"telemetry"` | see [Tags](#tags) | +| `analog` | array of finite number or null | optional; default `[]` | +| `digital` | array of boolean or null | optional; default `[]` | +| `sequence` | integer or `'MIC'` or null | optional; default `null` | +| `encoding` | `'classic'`, `'mic_e_hex'`, `'mic_e_binary'`, `'base91_comment'` | optional; default `'classic'` | +| `comment` | string | optional; default `""` | +| `sequence_raw` | Latin-1 byte string or null | optional; default `null` | +| `raw` | Latin-1 byte string or null | optional; default `null` | ### Extensions @@ -695,6 +699,8 @@ Standalone tag: `extensions`. [Back to type map](#type-map-and-object-catalog). "luminosity": null, "rain_counter": null, "water_height": null, + "radiation": null, + "battery_voltage": null, "software_code": null, "device_code": null, "timestamp": null, @@ -2472,6 +2478,8 @@ Each allowed member is shown in its actual container, where it carries its tag. "luminosity": null, "rain_counter": null, "water_height": null, + "radiation": null, + "battery_voltage": null, "software_code": null, "device_code": null, "timestamp": { diff --git a/packages/aprs/docs/UNRESOLVED_SPEC.md b/packages/aprs/docs/UNRESOLVED_SPEC.md index cece545..a146322 100644 --- a/packages/aprs/docs/UNRESOLVED_SPEC.md +++ b/packages/aprs/docs/UNRESOLVED_SPEC.md @@ -93,8 +93,7 @@ allows sequence-only telemetry. The extension describes itself as experimental. **Current behavior:** conformance for `base91_comment` follows §3.7: a sequence in 0..8280 and at least one analog value are required. Digital data follows all five analog fields. Sequence-only data is unsupported by this model contract, not declared universally -malformed on receipt; the core decoder retains sequence-only blocks as comment text. `compatibility` is an -explicitly unverified representation, not a named normative encoding. +malformed on receipt; the core decoder retains sequence-only blocks as comment text. **What resolves it:** choose a versioned extension profile or obtain an author clarification reconciling the documents. Do not silently expand the baseline by @@ -113,9 +112,16 @@ slot presence. There is no extra requirement for a numeric observation. A `Weather` model may be incomplete; only sending an incomplete report is refused. The later minimum flood example omits gust; proposed water units and examples -disagree across the documents. `WaterHeight` consequently remains a signed -measurement with explicit feet/meters and optional external datum metadata; the corpus selects F/f numeric feet/meters for core reports and the FAP adapter selects signed tenths of feet. `disputed_knots_or_mph` explicitly records -unresolved velocity units and must not be converted without a selected profile. +disagree across the documents. `WaterHeight` remains a signed measurement with +explicit feet/meters and optional external datum metadata. The two water-level +spellings are told apart by their syntax: a decimal value (`F20.1`, `f-1.2`) is +the 1.1 clarification's feet or meters, and four bytes without a decimal point +(`F0123`, `F-042`, `F....`) are the 1.2 proposal's tenths of a foot. The 1.2 +proposal's `Xnnn` radiation (two digits times a power of ten, nSv/h) and `Vnnn` +battery volts (tenths) decode into `radiation` and `battery_voltage`, with `...` +for unavailable, so they are never read as software/unit codes. +`disputed_knots_or_mph` explicitly records unresolved velocity units and must +not be converted without a selected profile. **What resolves it:** a chosen, cited water/flood profile and clarification of units, unavailable markers, field widths and mandatory slots. The blanket baseline diff --git a/packages/aprs/src/hamkit/aprs/_compatibility.py b/packages/aprs/src/hamkit/aprs/_compatibility.py deleted file mode 100644 index e8520aa..0000000 --- a/packages/aprs/src/hamkit/aprs/_compatibility.py +++ /dev/null @@ -1,711 +0,0 @@ -# SPDX-FileCopyrightText: 2024-present Adam Fourney -# SPDX-License-Identifier: MIT -"""Private compatibility views for historical receiver policies. - -The public codec remains loss-conscious and profile-independent. These adapters -express the corpus's older receiver conventions without changing public models, -rewriting archived packets, or consulting expected fixture values. -""" - -from __future__ import annotations - -import re -from dataclasses import replace -from typing import Any - -from . import _data as d -from . import _extensions, _messages, _mic_e -from . import _models as m -from ._codec import parse_packet, parse_payload -from ._errors import APRSError -from ._json import to_json_dict -from ._policy import APRS_IS, RF - - -def _relaxed_telemetry(raw: bytes) -> d.Telemetry: - parts = raw[2:].split(b",") - if len(parts) < 2 or not parts[0].isdigit(): - raise ValueError("invalid telemetry sequence") - values: list[float | None] = [None] * 5 - for i, v in enumerate(parts[1:6]): - v = v.strip() - if not v: - continue - if not re.fullmatch(rb"-?(?:\d*\.)?\d+", v): - if v == b"-" or v.endswith(b"."): - raise ValueError("invalid telemetry value") - break - values[i] = float(v) - bits = parts[6].strip()[:8] if len(parts) > 6 else b"" - digital = tuple(c == 49 for c in bits) if re.fullmatch(rb"[01]{8}", bits) else () - return d.Telemetry( - tuple(values), digital, sequence=int(parts[0]), encoding="compatibility" - ) - - -def _mic_e_compat(raw: bytes, header: m.Header, broken: bool): - body = raw[1:] - mangled = False - if ( - broken - and len(body) >= 7 - and body[6:7] in (b"/", b"\\") - and body[7:8] not in (b"/", b"\\") - ): - body = body[:5] + b" " + body[5:] - mangled = True - # The old receiver reads comment telemetry before DAO and accepts a - # short apostrophe hex block as channels 1 and 3. - tail = body[8:] - device_code = None - if not mangled and tail[:1] in (b"]", b">"): - device_code, tail = tail[:1].decode(), tail[1:] - extra, tail = _extensions.read(tail, d.Symbol(chr(body[7]), chr(body[6]))) - altitude = None - match = re.search(rb"([!-{]{3})\}", tail) - if match: - from ._position_codec import base91 - - altitude = d.Altitude( - d.Measurement(base91(match[1]) - 10000, "meters"), "mic_e" - ) - tail = tail[: match.start()] + tail[match.end() :] - telemetry = extra.telemetry - match = re.match(rb"'([0-9A-Fa-f]{10}|[0-9A-Fa-f]{4})", tail) - short = False - if match: - values = tuple(bytes.fromhex(match[1].decode())) - short = len(values) == 2 - if short: - values = (values[0], 0, values[1]) - telemetry = d.Telemetry(values, encoding="compatibility") - tail = tail[match.end() :].lstrip(b" ") - base = _mic_e.read(raw[:1] + body[:8], header, []) - e = replace( - extra, - motion=None if mangled else base.extensions.motion, - altitude=altitude or extra.altitude, - telemetry=telemetry, - ) - from ._position_codec import dao_offset - - p = replace( - base, - device_code=device_code, - extensions=e, - latitude_deg=dao_offset(base.latitude_deg, e.dao, "latitude"), - longitude_deg=dao_offset(base.longitude_deg, e.dao, "longitude"), - comment=tail.decode("utf8", errors="replace"), - ) - return p, mangled, short - - -def _receiver_rejects(raw: bytes, p: m.Packet | m.Malformed, options: dict) -> bool: - envelope, sep, body = raw.partition(b":") - source, arrow, route = envelope.partition(b">") - fields = route.split(b",") - if not sep or not arrow or not re.fullmatch(rb"[A-Za-z0-9-]{1,9}", source): - return True - if not re.fullmatch(rb"[A-Za-z0-9]{1,6}(?:-(?:[0-9]|1[0-5]))?", fields[0]): - return True - seen_q = False - for hop in fields[1:]: - hop = hop.removesuffix(b"*") - if re.fullmatch(rb"q[A-Z][A-Z]", hop): - seen_q = True - if not re.fullmatch(rb"[A-Za-z0-9-]{1,9}", hop) and not ( - seen_q and re.fullmatch(rb"[A-Za-z0-9-]+", hop) - ): - return True - if body.startswith((b"{", b"$GPVTG")): - return True - if ( - isinstance(p, m.Packet) - and isinstance(p.payload, m.NMEA) - and p.payload.position_usable is False - ): - return True - if isinstance(p, m.Malformed): - return True - if isinstance(p.payload, m.Beacon) and body[:1] not in (b" ", b"h", b"U"): - return True - if options.get("ax25") and any( - x.code == "nonconforming" and ".header" in x.path for x in p.diagnostics - ): - return True - return isinstance(p.payload, m.Opaque) - - -def view( - raw: bytes, profile: str, options: dict | None = None -) -> tuple[dict[str, Any], bool]: - options = options or {} - packet = parse_packet( - raw, - policy=(RF if profile == "strict-envelope" or options.get("ax25") else APRS_IS), - ) - result: dict[str, Any] = to_json_dict(packet, include_defaults=True) - rejected = ( - isinstance(packet, m.Malformed) - or isinstance(packet, m.Packet) - and any(x.code == "nonconforming" for x in packet.diagnostics) - ) - if profile != "compatibility-fap": - return result, rejected - _envelope, _, body = raw.partition(b":") - header = packet.header - if header is None: - return result, True - payload: m.Payload | m.Malformed | None = ( - packet.payload if isinstance(packet, m.Packet) else None - ) - short = False - try: - if body[:1] in (b"`", b"'"): - payload, _mangled, short = _mic_e_compat( - body, header, options.get("accept_broken_mice", False) - ) - elif body.startswith(b"T#"): - payload = _relaxed_telemetry(body) - elif body[:1] == b":" and body[11:16].upper() in ( - b"PARM.", - b"UNIT.", - b"EQNS.", - b"BITS.", - ): - payload = _messages.definition( - body[1:10].decode().rstrip(), body[11:16].upper() + body[16:] - ) - elif isinstance(packet, m.Malformed) and ( - body[:1] in (b"@", b"/", b">") - and body[1:8] == b"000000z" - or body[:1] == b";" - and body[10:11] in (b"*", b"_") - and body[11:18] == b"000000z" - ): - # Invalid timestamps are warnings in FAP; decode the intact fields. - if body[:1] in (b"@", b"/"): - payload = parse_payload((b"=" if body[:1] == b"@" else b"!") + body[8:]) - elif body[:1] == b">": - payload = _messages.status(body[8:], []) - elif body[:1] == b";": - position = parse_payload(b"!" + body[18:]) - if isinstance(position, m.Position): - data = to_json_dict(position, include_defaults=True) - data.update( - type="object", - name=body[1:10].decode().rstrip(), - alive=body[10:11] == b"*", - ) - data.pop("messaging", None) - result = { - "type": "packet", - "header": to_json_dict(header, include_defaults=True), - "payload": data, - "original_wire": raw.decode("latin1"), - } - payload = None - elif isinstance(packet, m.Malformed) and body.startswith(b"$GPGLL,"): - from ._nmea_codec import _coordinates - - values = body.split(b",")[1:] - if len(values) == 4: - coords = _coordinates([v.decode() for v in values]) - assert coords is not None - result = { - "type": "packet", - "header": to_json_dict(header, include_defaults=True), - "payload": { - "type": "nmea", - "sentence": { - "type": "gll", - "coordinates": to_json_dict(coords), - }, - }, - "original_wire": raw.decode("latin1"), - } - payload = None - except (APRSError, ValueError, IndexError): - return result, True - if isinstance(payload, m.Malformed): - return result, True - if payload is not None: - result = { - "type": "packet", - "header": to_json_dict(header, include_defaults=True), - "payload": to_json_dict(payload, include_defaults=True), - "original_wire": raw.decode("latin1"), - } - if result.get("type") != "packet": - return result, True - p = result.get("payload", {}) - if p.get("type") == "legacy_position": - p = p["position"] - if p.get("type") == "raw_weather" and p.get("weather"): - p = p["weather"] - if p.get("type") == "nmea": - p["symbol"] = None - p.setdefault("metadata", {}).setdefault("checksum_valid", None) - if p["sentence"].get("course_deg") is not None: - p["sentence"]["course_deg"] = round(p["sentence"]["course_deg"]) - if p.get("type") == "mic_e": - if short: - assert ( - isinstance(payload, m.MicE) and payload.extensions.telemetry is not None - ) - p["extensions"]["telemetry"]["analog"] = list( - payload.extensions.telemetry.analog - ) - if ( - p.get("extensions", {}).get("telemetry") - and p["extensions"]["telemetry"].get("sequence") is None - ): - p["extensions"]["telemetry"]["sequence"] = 0 - if p.get("type") == "telemetry": - p["comment"] = "" - if "comment" in p and not p.get("extensions", {}).get("phg"): - p["comment"] = p["comment"].strip() - if p.get("type") == "object": - p["name"] = p["name"].rstrip() - compression = p.get("compression") - if compression: - motion = p.get("extensions", {}).get("motion") - if motion and motion.get("course_deg") == 0: - motion["course_deg"] = 360 - weather = ( - p - if p.get("type") == "weather" or isinstance(payload, m.RawWeather) - else p.get("extensions", {}).get("weather") - ) - if weather is not None: - code = (weather.get("software_code") or "") + (weather.get("device_code") or "") - if re.fullmatch(r"[XV]\d{3}", code): - weather["software_code"] = weather["device_code"] = None - tail = p.get("comment", "") - while tail: - match = re.match(r"(Os|[LFXV])([. ]{3,4}|-?\d+(?:\.\d+)?)", tail) - if not match: - break - tag, field = match.groups() - if tag == "Os": - weather["snow_24h"] = { - "value": None if field.strip(". ") == "" else float(field) * 0.01, - "unit": "inches", - } - elif tag == "L": - weather["luminosity"] = { - "value": None if field.strip(". ") == "" else float(field), - "unit": "W/m2", - } - tail = tail[match.end() :] - if re.fullmatch(r"[A-Za-z][A-Za-z0-9]{2,4}", tail): - weather["software_code"], weather["device_code"] = tail[0], tail[1:] - tail = "" - if tail != p.get("comment", ""): - p["comment"] = tail - if p.get("type") == "weather": - weather["comment"] = tail - # FAP selects the mph interpretation of the disputed uncompressed - # wind field. This is a semantic choice, not a unit/schema conversion. - speed = weather.get("wind_speed") - if speed and speed["unit"] == "disputed_knots_or_mph": - weather["wind_speed"] = {**speed, "unit": "mph"} - if ( - isinstance(payload, m.Position) - and payload.symbol.code == "_" - and payload.extensions.weather is None - ): - p["extensions"]["weather"] = {} - p["comment"] = "" - result["header"]["destination"] = result["header"]["destination"].upper() - if options.get("ax25"): - result["header"]["source"] = result["header"]["source"].upper() - rejected = _receiver_rejects(raw, packet, options) - if result.get("type") == "packet" and isinstance(packet, m.Malformed): - rejected = False - return result, rejected - - -def facts( - raw: bytes, options: dict | None = None, *, packet: m.Packet | None = None -) -> dict[str, Any]: - """Historical receiver facts not represented as stored public-model fields. - - These include display resolution, raw timestamps, and optional vendor sensors. - Kept separate so a receiver policy cannot alter the public JSON contract. - """ - options = options or {} - if packet is None: - projected, _ = view(raw, "compatibility-fap", options) - parsed = parse_packet(raw) - else: - # Schema-only cases already have their public packet; their supplemental - # source facts must not require a compatibility view of that packet. - projected = to_json_dict(packet, include_defaults=True) - parsed = packet - p = projected.get("payload", {}) - if p.get("type") == "legacy_position": - p = p["position"] - elif p.get("type") == "raw_weather" and p.get("weather"): - p = {"type": "weather", **p["weather"]} - body = raw.partition(b":")[2] - ext = p.get("extensions", {}) - comp = p.get("compression") - dao = ext.get("dao") - sym = p.get("symbol") or {} - result = { - "Capabilities": None, - "ChecksumOK": None, - "DaoDatumByte": ( - dao["datum_byte"].upper() if dao and dao.get("encoding") else None - ), - "GPSFixStatus": None, - "MBits": "", - "MiceMangled": False, - "ObjectName": p.get("name", "") if p.get("type") == "object" else "", - "ItemName": p.get("name", "") if p.get("type") == "item" else "", - "PosResolution": None, - "RawTimestamp": "", - "Warnings": None, - "PosAmbiguity": ( - p.get("ambiguity") if "latitude_deg" in p and comp is None else None - ), - "SymbolCode": sym.get("code"), - } - if p.get("type") == "capabilities": - result["Capabilities"] = {t["name"]: t["value"] or "" for t in p["tokens"]} - if "latitude_deg" in p: - result["PosResolution"] = ( - 0.291 - if comp - else (18.52, 185.2, 1852, 18520, 111120)[p.get("ambiguity", 0)] - ) - if comp and not comp["ignored"]: - result["GPSFixStatus"] = int(comp["fix"] == "current") - if dao and dao.get("encoding"): - result["PosResolution"] = 1.852 if dao["encoding"] == "decimal" else 0.1852 - if body[:1] in (b"`", b"'"): - assert parsed.header is not None - dest = parsed.header.destination.split("-")[0] - result["MBits"] = "".join( - "1" if "A" <= c <= "K" or "P" <= c <= "Z" else "0" for c in dest[:3] - ) - if packet is None or options.get("accept_broken_mice", False): - _, result["MiceMangled"], _ = _mic_e_compat( - body, parsed.header, options.get("accept_broken_mice", False) - ) - if options.get("raw_timestamp") and body[:1] in (b"/", b"@"): - result["RawTimestamp"] = body[1:7].decode() - if (body[:1] in (b"/", b"@", b">") and body[1:8] == b"000000z") or ( - body[:1] == b";" and body[11:18] == b"000000z" - ): - result["Warnings"] = [ - { - "Code": "timestamp_inv", - "Msg": "invalid " - + ("object " if body[:1] == b";" else "") - + "timestamp: invalid day: 00", - } - ] - if isinstance(parsed, m.Packet) and isinstance(parsed.payload, m.NMEA): - n = parsed.payload - result["ChecksumOK"] = n.metadata.checksum_valid - fields = n.metadata.fields_raw - from . import _nmea as sentences - - if isinstance(n.sentence, sentences.RMC): - indices = (2, 4) - elif isinstance(n.sentence, sentences.GGA): - indices = (1, 3) - else: - indices = (0, 2) - result["PosResolution"] = max( - 1852 * 10 ** (-len(fields[i].partition(b".")[2])) for i in indices - ) - if isinstance(n.sentence, sentences.RMC) and not options.get("raw_timestamp"): - date = n.sentence.date_ddmmyy - time = n.sentence.time_utc - # The historical receiver uses the conventional 1980 pivot. - year = int(date[4:6]) - year += 1900 if year >= 80 else 2000 - result[ - "Timestamp" - ] = f"{year:04d}-{date[2:4]}-{date[:2]}T{time[:2]}:{time[2:4]}:{time[4:6]}Z" - elif body.startswith(b"$GPGLL,"): - fields = tuple(body.split(b",")[1:]) - result["PosResolution"] = max( - 1852 * 10 ** (-len(fields[i].partition(b".")[2])) for i in (0, 2) - ) - if body.startswith(b":"): - content = body[11:] - result["Message"] = { - "RejID": content[3:].decode() if content.startswith(b"rej") else "" - } - wx = p if p.get("type") == "weather" else ext.get("weather") - if wx is not None: - extra = { - "BatteryVoltage": None, - "HumidityIn": None, - "Radiation": None, - "Software": (wx.get("software_code") or "") + (wx.get("device_code") or ""), - "TempIn": None, - "WaterLevel": None, - } - match = ( - re.search(rb"F(-?\d{3,4})(?![\d.])", body) - if not body.startswith((b"$ULTW", b"!!")) - else None - ) - if match: - extra["WaterLevel"] = int(match[1]) * 0.03048 - match = re.search(rb"X(\d{3})", body) - if match: - code = int(match[1]) - extra["Radiation"] = (code // 10) * 10 ** (code % 10) - match = re.search(rb"V(\d{3})", body) - if match: - extra["BatteryVoltage"] = int(match[1]) / 10 - if body.startswith(b"!!"): - fields = tuple(body[i : i + 4] for i in range(2, len(body), 4)) - if len(fields) > 5 and re.fullmatch(rb"[0-9A-Fa-f]{4}", fields[5]): - value = int(fields[5], 16) - value = value - 65536 if value >= 32768 else value - extra["TempIn"] = round((value / 10 - 32) / 1.8, 1) - if len(fields) > 7 and re.fullmatch(rb"[0-9A-Fa-f]{4}", fields[7]): - value = int(fields[7], 16) // 10 - if 1 <= value <= 100: - extra["HumidityIn"] = value - result["Wx"] = extra - return result - - -def rejected_facts(raw: bytes, options: dict | None = None) -> dict[str, Any]: - """Recover the historical receiver's facts up to its rejecting field. - - Unlike the public Malformed recovery, this view follows the old receiver's - validation order. It preserves useful partial observations without making a - partially valid public dataclass or inventing missing fields. - """ - from datetime import datetime - from functools import reduce - from operator import xor - - from . import _position_codec as pc - from ._fields.position import decode_coordinate - from ._nmea_codec import _coordinate - - options = options or {} - h: dict[str, Any] = {"source": "", "destination": "", "digipeaters": None} - f: dict[str, Any] = { - key: None - for key in ( - "Latitude", - "Longitude", - "PosAmbiguity", - "PosResolution", - "SymbolTable", - "SymbolCode", - "Speed", - "Course", - "Altitude", - "Messaging", - "RadioRange", - "Alive", - "Message", - "Wx", - "TelemetryData", - "Capabilities", - "DaoDatumByte", - "GPSFixStatus", - "ChecksumOK", - "Warnings", - ) - } - f.update( - { - key: "" - for key in ( - "Type", - "Format", - "PHG", - "RawTimestamp", - "ObjectName", - "ItemName", - "Status", - "MBits", - "Comment", - ) - } - ) - f["MiceMangled"] = False - result = {"fap_header": h, "fap_fields": f} - envelope, colon, body = raw.partition(b":") - source, arrow, route = envelope.partition(b">") - if not colon or not arrow: - return result - h["source"] = source.decode("latin1") - ax25 = rb"[A-Z0-9]{1,6}(?:-(?:[0-9]|1[0-5]))?" - if not re.fullmatch(ax25 if options.get("ax25") else rb"[A-Za-z0-9-]{1,9}", source): - return result - fields = route.split(b",") - if options.get("ax25") and len(fields) > 9: - return result - if not re.fullmatch(ax25, fields[0].upper()): - return result - h["destination"] = fields[0].decode().upper() - hops = [] - seen_q = False - for field in fields[1:]: - call = field.removesuffix(b"*") - if not call: - return result - if re.fullmatch(rb"q[A-Z][A-Za-z]", call): - seen_q = True - pattern = ( - ax25 - if options.get("ax25") - else rb"[A-Za-z0-9-]+" - if seen_q - else rb"[A-Za-z0-9-]{1,9}" - ) - if not re.fullmatch(pattern, call): - return result - hops.append({"Call": call.decode(), "WasDigied": field.endswith(b"*")}) - h["digipeaters"] = hops - if not body: - return result - header = m.Header(h["source"], h["destination"]) - if body.startswith(b"$"): - f.update(Type="location", Format="nmea") - if not body.startswith(b"$GP"): - return result - data, star, checksum = body.rstrip().partition(b"*") - if star and re.fullmatch(rb"[0-9A-Fa-f]{2}", checksum): - if reduce(xor, data[1:], 0) != int(checksum, 16): - return result - f["ChecksumOK"] = True - fields = data.split(b",") - kind = fields[0] - if kind not in (b"$GPRMC", b"$GPGGA", b"$GPGLL"): - return result - required = {b"$GPRMC": 10, b"$GPGGA": 15, b"$GPGLL": 5}[kind] - if len(fields) < required: - return result - if kind == b"$GPRMC": - if fields[2] != b"A": - return result - time = fields[1].partition(b".")[0] - date = fields[9] - if not re.fullmatch(rb"\d{6}", time) or not re.fullmatch(rb"\d{6}", date): - return result - year = int(date[4:]) - year += 1900 if year >= 80 else 2000 - try: - stamp = datetime( - year, - int(date[2:4]), - int(date[:2]), - int(time[:2]), - int(time[2:4]), - int(time[4:]), - ) - except ValueError: - return result - f["Timestamp"] = stamp.isoformat() + "Z" - lat_index, lon_index = 3, 5 - elif kind == b"$GPGGA": - if fields[6] == b"0": - return result - lat_index, lon_index = 2, 4 - else: - lat_index, lon_index = 1, 3 - try: - f["Latitude"] = _coordinate( - fields[lat_index].decode(), fields[lat_index + 1].decode(), 2 - ) - f["Longitude"] = _coordinate( - fields[lon_index].decode(), fields[lon_index + 1].decode(), 3 - ) - except (APRSError, UnicodeError): - pass - return result - if body[:1] in (b"`", b"'"): - f.update(Type="location", Format="mice") - data = body[1:] - if ( - options.get("accept_broken_mice") - and len(data) >= 7 - and data[6:7] in (b"/", b"\\") - and data[7:8] not in (b"/", b"\\") - ): - f["MiceMangled"] = True - data = data[:5] + b" " + data[5:] - if len(data) < 8: - return result - try: - p = _mic_e.read(body[:1] + data[:6] + b">/", header, []) - except APRSError: - return result - f.update( - Latitude=p.latitude_deg, - Longitude=p.longitude_deg, - PosAmbiguity=p.ambiguity, - PosResolution=(18.52, 185.2, 1852, 18520, 111120)[p.ambiguity], - SymbolTable=chr(data[7]), - SymbolCode=chr(data[6]), - ) - dest = header.destination.split("-")[0] - f["MBits"] = "".join( - "1" if "A" <= c <= "K" or "P" <= c <= "Z" else "0" for c in dest[:3] - ) - if any(c < 32 for c in data): - return result - motion = p.extensions.motion - assert motion is not None and motion.speed_knots is not None - f.update(Speed=motion.speed_knots * 1.852, Course=motion.course_deg) - return result - if body.startswith(b";"): - f["Type"] = "object" - if len(body) < 31: - return result - f["ObjectName"] = body[1:10].decode("latin1") - if body[10:11] not in (b"*", b"_"): - return result - f["Alive"] = body[10:11] == b"*" - position = body[18:] - elif body[:1] in (b"!", b"=", b"/", b"@"): - f["Type"] = "location" - f["Messaging"] = body[:1] in (b"=", b"@") - position = body[8:] if body[:1] in (b"/", b"@") else body[1:] - else: - if body.startswith(b":"): - f["Type"] = "message" - elif body.startswith(b")"): - f["Type"] = "item" - elif body.startswith(b"T#"): - f["Type"] = "telemetry" - return result - f["Format"] = ( - "compressed" - if position[:1] in b"/\\ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghij" - else "uncompressed" - ) - if f["Format"] == "compressed": - return result - if not re.match(rb"[0-9 ]{4}\.[0-9 ]{2}[NS]", position): - return result - try: - ambiguity = pc.ambiguity(position[:8]) - f["Latitude"] = pc.center( - decode_coordinate(position[:8].replace(b" ", b"0"), "latitude"), ambiguity - ) - f["PosAmbiguity"] = ambiguity - if len(position) > 8: - f["SymbolTable"] = chr(position[8]) - if not re.fullmatch(rb"[/\\0-9A-Z]", position[8:9]): - return result - if len(position) >= 18: - _, f["Longitude"], _ = pc.coordinates(position[:8], position[9:18]) - except APRSError: - pass - return result diff --git a/packages/aprs/src/hamkit/aprs/_conformance.py b/packages/aprs/src/hamkit/aprs/_conformance.py index 4ea9507..62eb518 100644 --- a/packages/aprs/src/hamkit/aprs/_conformance.py +++ b/packages/aprs/src/hamkit/aprs/_conformance.py @@ -149,10 +149,7 @@ def _packet(v: Packet, policy: EnvelopePolicy | None) -> Iterator[Finding]: payload = v.payload if isinstance(payload, Weather): yield from _weather_report(payload, "$.payload", positioned=False) - if isinstance(payload, Telemetry) and payload.encoding not in ( - "classic", - "compatibility", - ): + if isinstance(payload, Telemetry) and payload.encoding != "classic": yield "$.payload.encoding", "comment and Mic-E telemetry need a position report" @@ -537,6 +534,16 @@ def _weather(v: Weather, policy: EnvelopePolicy | None) -> Iterator[Finding]: problem = _weather_comment(v, v.comment) if problem: yield "$.comment", problem + elif v.comment: + from . import _weather as codec + + try: + back, _ = codec.read(codec.write(v)[1:]) + except APRSError: + pass # Missing slots and unencodable values are reported separately. + else: + if back.comment != v.comment: + yield "$.comment", "comment would be read back as weather fields" for name in ( "wind_direction", "wind_speed", @@ -550,6 +557,8 @@ def _weather(v: Weather, policy: EnvelopePolicy | None) -> Iterator[Finding]: "snow_24h", "luminosity", "rain_counter", + "radiation", + "battery_voltage", ): reading: Measurement | None = getattr(v, name) if reading is None or reading.value is None: @@ -558,6 +567,16 @@ def _weather(v: Weather, policy: EnvelopePolicy | None) -> Iterator[Finding]: high = {"humidity": 100, "wind_direction": 360}.get(name, float("inf")) if not low <= reading.value <= high: yield f"$.{name}.value", "reading outside the quantity's range" + if v.radiation is not None and v.radiation.value is not None: + from . import _weather as codec + + try: + codec.radiation_code(v.radiation.value) + except FieldError: + yield "$.radiation.value", "requires two digits times a power of ten" + volts = v.battery_voltage.value if v.battery_voltage is not None else None + if volts is not None and round(volts * 10) > 999: + yield "$.battery_voltage.value", "exceeds the three-digit tenths field" if v.software_code is not None and len(v.software_code) != 1: yield "$.software_code", "requires one character" if v.device_code is not None and not 2 <= len(v.device_code) <= 4: @@ -617,5 +636,3 @@ def analog(low: int, high: int, missing: tuple[int, ...] = ()) -> Iterator[Findi yield "$.digital", "eight binary channels follow five analog channels" if v.comment: yield "$.comment", "base91 telemetry uses the report comment" - elif not v.analog and not v.digital: - yield "$.analog", "at least one channel is required" diff --git a/packages/aprs/src/hamkit/aprs/_data.py b/packages/aprs/src/hamkit/aprs/_data.py index f5fd6c8..d8a31ee 100644 --- a/packages/aprs/src/hamkit/aprs/_data.py +++ b/packages/aprs/src/hamkit/aprs/_data.py @@ -37,6 +37,8 @@ "inches", "mm", "W/m2", + "nSv/h", + "volts", "watts", "dBi", "dB", @@ -307,6 +309,8 @@ class Weather(Validated): luminosity: Measurement | None = None rain_counter: Measurement | None = None water_height: WaterHeight | None = None + radiation: Measurement | None = None + battery_voltage: Measurement | None = None software_code: str | None = None device_code: str | None = None timestamp: Timestamp | None = None @@ -330,7 +334,7 @@ class Storm(Validated): AnalogChannels: TypeAlias = tuple[float | None, ...] DigitalChannels: TypeAlias = tuple[bool | None, ...] TelemetryEncoding: TypeAlias = Literal[ - "classic", "mic_e_hex", "mic_e_binary", "base91_comment", "compatibility" + "classic", "mic_e_hex", "mic_e_binary", "base91_comment" ] diff --git a/packages/aprs/src/hamkit/aprs/_messages.py b/packages/aprs/src/hamkit/aprs/_messages.py index 2523c84..1e30b4b 100644 --- a/packages/aprs/src/hamkit/aprs/_messages.py +++ b/packages/aprs/src/hamkit/aprs/_messages.py @@ -225,24 +225,33 @@ def telemetry(raw: bytes, diagnostics: list) -> d.Telemetry: sequence = match[1] if len(sequence) > 32: raise FieldError("telemetry sequence exceeds numeric field budget") - fields = raw[match.end() :].split(b",", 5) - if len(fields) != 6: - raise FieldError("telemetry requires five analog channels and digital bits") + rest = raw[match.end() :] + fields = rest.split(b",", 5) if rest else [] + # Missing analog channels are a departure, not undecodable data: they + # decode as fewer channels and conformance reports the short report. + # Eight binary digits are never an APRS101 analog value (0..255), so a + # short report still ends with its digital bits. + if len(fields) == 6 or fields and re.match(rb"[01]{8}(?![0-9.])", fields[-1]): + values, tail = fields[:-1], fields[-1] + else: + values, tail = fields, None analog = [] - try: - for value in fields[:5]: - analog.append(None if not value else float(value)) - except ValueError as exc: - raise FieldError("invalid telemetry channel") from exc - bits = fields[5][:8] - if len(bits) != 8 or any(v not in b"01" for v in bits): - raise FieldError("telemetry requires eight binary digits") + for value in values: + # Plain decimals only: float() would also accept inf, nan and 1e5. + if value and not re.fullmatch(rb"-?(?:\d+(?:\.\d+)?|\.\d+)", value): + raise FieldError("invalid telemetry channel") + analog.append(float(value) if value else None) + bits, comment = b"", b"" + if tail is not None: + bits, comment = tail[:8], tail[8:] + if len(bits) != 8 or any(v not in b"01" for v in bits): + raise FieldError("telemetry requires eight binary digits") return d.Telemetry( tuple(analog), tuple(v == 49 for v in bits), sequence="MIC" if sequence == b"MIC" else int(sequence), sequence_raw=sequence, - comment=free_text(fields[5][8:], "$.comment", diagnostics), + comment=free_text(comment, "$.comment", diagnostics), ) @@ -301,7 +310,7 @@ def write(payload): for c in p.tokens ) if isinstance(p, d.Telemetry): - if p.encoding not in ("classic", "compatibility"): + if p.encoding != "classic": raise FieldError("telemetry encoding requires an enclosing position") seq = b"MIC" if p.sequence in (None, "MIC") else f"{p.sequence:03d}".encode() values = b",".join( @@ -312,15 +321,10 @@ def write(payload): ) for v in p.analog ) - return ( - b"T#" - + seq - + b"," - + values - + b"," - + bytes(49 if v else 48 for v in p.digital) - + p.comment.encode() - ) + raw = b"T#" + seq + (b"," + values if p.analog else b"") + if p.digital or p.comment: + raw += b"," + bytes(49 if v else 48 for v in p.digital) + p.comment.encode() + return raw if isinstance(p, m.Bulletin): address = "BLN" + p.identifier + (p.group or "") body = p.text.encode() diff --git a/packages/aprs/src/hamkit/aprs/_recovery.py b/packages/aprs/src/hamkit/aprs/_recovery.py index d175bf3..6a3eb99 100644 --- a/packages/aprs/src/hamkit/aprs/_recovery.py +++ b/packages/aprs/src/hamkit/aprs/_recovery.py @@ -3,6 +3,7 @@ """Best-effort extraction into ordinary JSON data, never partially valid models.""" from __future__ import annotations +import re from collections.abc import Callable from typing import Any @@ -43,12 +44,7 @@ def keep(key: str, operation: Callable[[], Any]) -> None: message = getattr(exc, "message", str(exc)) diagnostics.append(Diagnostic("malformed", message, "$." + key)) - dti, body = raw[:1], raw[1:] - if dti in (b"!", b"=", b"/", b"@"): - data = {"type": "position", "messaging": dti in (b"=", b"@")} - if dti in (b"/", b"@"): - data["timestamp"] = _timestamp(body[:7]) - body = body[7:] + def located(body: bytes) -> None: for field, needed in ( ("latitude_deg", 8), ("longitude_deg", 18), @@ -71,6 +67,27 @@ def keep(key: str, operation: Callable[[], Any]) -> None: data["comment"] = free_text(body[19:], "$.comment", ignored) if symbol: data["symbol"] = symbol + + dti, body = raw[:1], raw[1:] + if dti in (b"!", b"=", b"/", b"@"): + data = {"type": "position", "messaging": dti in (b"=", b"@")} + if dti in (b"/", b"@"): + data["timestamp"] = _timestamp(body[:7]) + body = body[7:] + located(body) + elif ( + dti == b";" + and body[9:10] in (b"*", b"_") + and re.fullmatch(rb"\d{6}[zh/]", body[10:17]) + ): + # Name and live/killed flag are fixed-width; the rest follows a timestamp. + data = { + "type": "object", + "name": body[:9].decode("latin-1").rstrip(" "), + "alive": body[9:10] == b"*", + "timestamp": _timestamp(body[10:17]), + } + located(body[17:]) elif dti == b">": data["type"] = "status" if len(body) >= 7 and body[:6].isdigit() and body[6:7] == b"z": diff --git a/packages/aprs/src/hamkit/aprs/_rules.py b/packages/aprs/src/hamkit/aprs/_rules.py index ad0fdf1..a26dc30 100644 --- a/packages/aprs/src/hamkit/aprs/_rules.py +++ b/packages/aprs/src/hamkit/aprs/_rules.py @@ -321,6 +321,8 @@ def _height(v: Any) -> None: "snow_24h": ("inches", "mm"), "luminosity": ("W/m2",), "rain_counter": ("count", "raw"), + "radiation": ("nSv/h",), + "battery_voltage": ("volts",), } diff --git a/packages/aprs/src/hamkit/aprs/_weather.py b/packages/aprs/src/hamkit/aprs/_weather.py index f63e8d5..116b618 100644 --- a/packages/aprs/src/hamkit/aprs/_weather.py +++ b/packages/aprs/src/hamkit/aprs/_weather.py @@ -1,11 +1,16 @@ # SPDX-FileCopyrightText: 2024-present Adam Fourney # SPDX-License-Identifier: MIT -"""Weather token grammar; absent and unavailable observations remain distinct.""" +"""Weather token grammar; absent and unavailable observations remain distinct. + +Beyond APRS101 and the APRS 1.1 clarification (spec-wx.txt), the APRS 1.2 +weather proposal (aprs.org/aprs12/weather-new.txt) adds Xnnn radiation, +Vnnn battery volts and a fixed four-byte Fnnnn water level in tenths of a foot. +""" from __future__ import annotations import re -from typing import Any +from typing import Any, Literal from ._data import Measurement, WaterHeight, Weather from ._errors import FieldError @@ -56,11 +61,25 @@ def read( while raw: tag = chr(raw[0]) if tag in "Ff": - match = re.match(rb"[Ff](-?\d+(?:\.\d+)?)", raw) + height = _water_height(raw) + if height: + values["water_height"], raw = height + continue + if tag in "XV": + match = re.match(rb"[XV](\d{3}|\.{3})", raw) if match: - values["water_height"] = WaterHeight( - Measurement(float(match[1]), "feet" if tag == "F" else "meters") - ) + field = match[1] + if tag == "X": + # Resistor-code style: two digits times ten to the third. + value = ( + None + if field == b"..." + else int(field[:2]) * 10 ** int(field[2:]) + ) + values["radiation"] = Measurement(value, "nSv/h", raw=field) + else: + value = None if field == b"..." else int(field) / 10 + values["battery_voltage"] = Measurement(value, "volts", raw=field) raw = raw[match.end() :] continue if tag not in _FIELDS: @@ -105,6 +124,35 @@ def read( return Weather(**values, timestamp=timestamp, raw=original), raw +def _water_height(raw: bytes) -> tuple[WaterHeight, bytes] | None: + """F/f water level: decimal feet/meters (APRS 1.1) or Fnnnn tenths (1.2).""" + unit: Literal["feet", "meters"] = "feet" if raw[:1] == b"F" else "meters" + decimal = re.match(rb"[Ff](-?\d+\.\d+)", raw) + if decimal: + return WaterHeight(Measurement(float(decimal[1]), unit)), raw[decimal.end() :] + if unit == "feet": + tenths = re.match(rb"F(\d{4}|-\d{3}|\.{4})", raw) + if tenths: + field = tenths[1] + value = None if field == b"...." else int(field) / 10 + measurement = Measurement(value, "feet", raw=field) + return WaterHeight(measurement), raw[tenths.end() :] + whole = re.match(rb"[Ff](-?\d+)", raw) + if whole: + return WaterHeight(Measurement(float(whole[1]), unit)), raw[whole.end() :] + return None + + +def radiation_code(value: float | None) -> bytes: + if value is None: + return b"..." + for exponent in range(10): + mantissa = value / 10**exponent + if mantissa <= 99 and mantissa == int(mantissa): + return f"{int(mantissa):02d}{exponent}".encode() + raise FieldError("radiation is not two digits times a power of ten") + + def _value(m: Measurement, unit: str) -> float | None: v = m.value if v is None or m.unit == unit: @@ -187,8 +235,15 @@ def write(w: Weather, *, positioned=False, compressed=False) -> bytes: raise FieldError("water-height datum has no wire field") m = w.water_height.measurement if m.value is None: - raise FieldError("water height requires a value") - raw += (b"F" if m.unit == "feet" else b"f") + f"{m.value:g}".encode() + if m.unit != "feet": + raise FieldError("only feet water height can be marked unavailable") + raw += b"F...." + else: + raw += (b"F" if m.unit == "feet" else b"f") + f"{m.value:g}".encode() + if w.radiation: + raw += b"X" + radiation_code(w.radiation.value) + if w.battery_voltage: + raw += b"V" + _number(w.battery_voltage.value, 3, 0.1) raw += ( (w.software_code or "").encode() + (w.device_code or "").encode() diff --git a/packages/aprs/tests/fap_divergences.json b/packages/aprs/tests/fap_divergences.json index e3ac1ca..a1d6ae6 100644 --- a/packages/aprs/tests/fap_divergences.json +++ b/packages/aprs/tests/fap_divergences.json @@ -16,7 +16,13 @@ "mic_e_type_suffix": "APRS 1.2 Mic-E type codes end the status text with a declared version suffix (\"=\" after \"]\" is the TM-D710); it is part of device_code, not comment text.", "mic_e_type_byte": "APRS 1.2 redefines a leading ` or ' as a Mic-E type byte; APRS101 hex telemetry needs the complete form (10 hex digits after '), so this is a type code followed by comment text. FAP reads two channels.", "mic_e_manufacturer": "APRS 1.2 Mic-E type code ' with the Byonics TinyTrack3 suffix |3 is stored in device_code; FAP keeps both in the comment.", - "mic_e_corrupt": "A byte was lost in transit, so the symbol table is invalid; FAP's accept_broken_mice option guesses the repair, while the public parser reports the packet as Malformed." + "mic_e_corrupt": "A byte was lost in transit, so the symbol table is invalid; FAP's accept_broken_mice option guesses the repair, while the public parser reports the packet as Malformed.", + "timestamp_day_zero": "Day 00 is not a valid timestamp, so the packet is Malformed and Malformed.recovered keeps the other fields; FAP decodes them with a warning. TIM-011 allows either.", + "gll_minimal": "This GLL sentence has no time or fix status, which the GLL model requires and the parser does not invent, so it is Malformed; FAP accepts the coordinates alone.", + "telemetry_short": "A short telemetry report decodes with only the channels transmitted and is marked nonconforming; FAP pads it to five channels.", + "telemetry_invalid": "A non-numeric telemetry channel cannot be decoded, so the report is Malformed; FAP keeps the channels before it.", + "telemetry_comment": "Text after the telemetry digital bits is kept as the comment; FAP discards it.", + "weather_unknown_field": "'O' is not a weather field in APRS101, the APRS 1.1 clarification or the APRS 1.2 proposal, so the report ends there and the rest stays in the comment; FAP skips it." }, "rows": { "FAP-005": { @@ -125,6 +131,13 @@ } } }, + "FAP-362": { + "reasons": ["gll_minimal"], + "replace": { + "type": "malformed" + }, + "drop_unmapped": ["$."] + }, "FAP-363": { "reasons": ["unknown_nmea"], "accept": { @@ -230,6 +243,25 @@ "$.payload.comment": " comment " } }, + "FAP-433": { + "reasons": ["telemetry_comment"], + "set": { + "$.payload.comment": " comment" + } + }, + "FAP-434": { + "reasons": ["telemetry_short"], + "set": { + "$.payload.analog": [42.0] + } + }, + "FAP-436": { + "reasons": ["telemetry_invalid"], + "replace": { + "type": "malformed" + }, + "drop_unmapped": ["$."] + }, "FAP-444": { "reasons": ["parm_case"], "set": { @@ -290,6 +322,27 @@ "$.payload.comment": " 14.3V 27C HDOP01.0 SATS09" } }, + "FAP-454": { + "reasons": ["timestamp_day_zero"], + "replace": { + "type": "malformed" + }, + "drop_unmapped": ["$."] + }, + "FAP-455": { + "reasons": ["timestamp_day_zero"], + "replace": { + "type": "malformed" + }, + "drop_unmapped": ["$."] + }, + "FAP-456": { + "reasons": ["timestamp_day_zero"], + "replace": { + "type": "malformed" + }, + "drop_unmapped": ["$."] + }, "FAP-457": { "reasons": ["whitespace"], "set": { @@ -333,6 +386,25 @@ "set": { "$.payload.extensions.weather.wind_speed.unit": "disputed_knots_or_mph" } + }, + "FAP-489": { + "reasons": ["weather_unknown_field"], + "set": { + "$.payload.comment": "Os...L...F....X...V..." + } + }, + "FAP-490": { + "reasons": ["weather_unknown_field"], + "set": { + "$.payload.comment": "Os010L500" + }, + "remove": ["$.payload.snow_24h", "$.payload.luminosity"] + }, + "FAP-497": { + "reasons": ["disputed_wind"], + "set": { + "$.payload.extensions.weather.wind_speed.unit": "disputed_knots_or_mph" + } } } } diff --git a/packages/aprs/tests/generate_vectors.py b/packages/aprs/tests/generate_vectors.py index f1c9e9d..e86d391 100644 --- a/packages/aprs/tests/generate_vectors.py +++ b/packages/aprs/tests/generate_vectors.py @@ -699,11 +699,18 @@ def fap_projection(e: JSON, packet: str) -> JSON: 0, ), ("Luminosity", "luminosity", "W/m2", 1, 0), + ("Radiation", "radiation", "nSv/h", 1, 0), + ("BatteryVoltage", "battery_voltage", "volts", 1, 0), ): if wx.get(key) is not None: # Convert captured expectations, never values from the decoder. # No rounding: the original physical measurement is preserved. mapped_wx[target] = {"value": wx[key] * scale + offset, "unit": unit} + if wx.get("WaterLevel") is not None: + # FAP reports metres; the APRS wire field is feet. + mapped_wx["water_height"] = { + "measurement": {"value": wx["WaterLevel"] / 0.3048, "unit": "feet"} + } if normal.get("format") == "compressed": # FAP flattens the compressed weather wind pair into Course/Speed. # Our schema places that same pair inside extensions.weather. diff --git a/packages/aprs/tests/packets/test_codec_regressions.py b/packages/aprs/tests/packets/test_codec_regressions.py index d4affd9..5358e60 100644 --- a/packages/aprs/tests/packets/test_codec_regressions.py +++ b/packages/aprs/tests/packets/test_codec_regressions.py @@ -387,3 +387,88 @@ def test_embedded_position_search_is_opt_in(): assert isinstance(a.parse_packet(beyond, legacy_positions=True).payload, a.Beacon) with pytest.raises(TypeError): a.parse_packet(raw, legacy_positions="yes") + + +WX = b"N0CALL>APRS:_12032359c000s000g000t033" + + +@pytest.mark.parametrize( + ("tail", "field", "value", "unit"), + [ + (b"X123", "radiation", 12000, "nSv/h"), # 12 x 10^3 nanosieverts/hour + (b"X100", "radiation", 10, "nSv/h"), + (b"X...", "radiation", None, "nSv/h"), + (b"V128", "battery_voltage", 12.8, "volts"), + (b"V...", "battery_voltage", None, "volts"), + (b"F0123", "water_height", 12.3, "feet"), # APRS 1.2: tenths of a foot + (b"F-042", "water_height", -4.2, "feet"), + (b"F....", "water_height", None, "feet"), + (b"F20.1", "water_height", 20.1, "feet"), # APRS 1.1: decimal feet + (b"f-1.2", "water_height", -1.2, "meters"), + ], +) +def test_aprs_1_2_weather_fields(tail, field, value, unit): + # aprs.org/aprs12/weather-new.txt; X and V are no longer read as codes. + decoded = packet(WX + tail) + reading = getattr(decoded.payload, field) + if field == "water_height": + reading = reading.measurement + assert (reading.value, reading.unit) == (value, unit) + assert decoded.payload.software_code is None + assert decoded.diagnostics == () + assert packet(a.serialize_packet(without_evidence(decoded))) == without_evidence( + decoded + ) + + +def test_weather_codes_still_follow_new_fields(): + decoded = packet(WX + b"X123V128XRSW") + w = decoded.payload + assert (w.radiation.value, w.battery_voltage.value) == (12000, 12.8) + assert (w.software_code, w.device_code) == ("X", "RSW") + + +def test_new_weather_fields_are_checked_before_sending(): + w = packet(WX).payload + odd = dataclasses.replace(w, radiation=a.Measurement(123, "nSv/h")) + with pytest.raises(a.ConformanceError): + a.serialize_packet(a.Packet(a.Header("N0CALL", "APRS"), odd)) + hidden = dataclasses.replace(w, comment="X123 hot") + assert [ + d.message for d in a.check_packet(a.Packet(a.Header("N0CALL", "APRS"), hidden)) + ] == ["comment would be read back as weather fields"] + + +@pytest.mark.parametrize( + ("information", "analog", "digital"), + [ + (b"T#001,42", (42.0,), ()), + (b"T#1,1,,3,,5", (1.0, None, 3.0, None, 5.0), ()), + (b"T#005,001,002,003,004,00000000", (1.0, 2.0, 3.0, 4.0), (False,) * 8), + ], +) +def test_short_telemetry_is_a_nonconforming_packet(information, analog, digital): + decoded = packet(b"N0CALL>APRS:" + information) + assert (decoded.payload.analog, decoded.payload.digital) == (analog, digital) + assert any(d.code == "nonconforming" for d in decoded.diagnostics) + with pytest.raises(a.ConformanceError): + a.serialize_packet(decoded) + + +@pytest.mark.parametrize("value", [b"f", b"-", b"-1.", b"inf", b"nan", b"1e5"]) +def test_telemetry_channels_are_plain_decimals(value): + raw = b"N0CALL>APRS:T#001,1," + value + b",3,4,5,00000000" + assert isinstance(a.parse_packet(raw), a.Malformed) + + +def test_invalid_object_timestamp_keeps_recovered_fields(): + result = a.parse_packet(b"N0CALL>APRS:;TestObj *000000z4903.50N/07201.75W-Test") + assert isinstance(result, a.Malformed) + recovered = result.recovered["payload"] + assert recovered["type"] == "object" + assert (recovered["name"], recovered["alive"], recovered["comment"]) == ( + "TestObj", + True, + "Test", + ) + assert recovered["latitude_deg"] == pytest.approx(49.058333333) diff --git a/packages/aprs/tests/packets/test_corpus.py b/packages/aprs/tests/packets/test_corpus.py index 42fd37c..c96f21e 100644 --- a/packages/aprs/tests/packets/test_corpus.py +++ b/packages/aprs/tests/packets/test_corpus.py @@ -15,31 +15,6 @@ DIRECTORY = Path(__file__).parents[1] / "vectors" -# Rows still checked through the private compatibility view; every other row -# compares parse_packet output directly. Each waits on a decision: 000000z -# timestamps, short or decimal telemetry, minimal GLL and trailing APRS 1.2 -# weather fields (X/V tails also read as software/unit codes). -COMPATIBILITY_PENDING = { - "FAP-362", - "FAP-433", - "FAP-434", - "FAP-435", - "FAP-436", - "FAP-454", - "FAP-455", - "FAP-456", - "FAP-482", - "FAP-483", - "FAP-484", - "FAP-485", - "FAP-486", - "FAP-487", - "FAP-488", - "FAP-489", - "FAP-490", - "FAP-497", -} - def differences(actual: Any, expected: Any, path: str = "$") -> list[str]: if isinstance(expected, dict): @@ -111,17 +86,11 @@ def public_phg_row(row: dict[str, Any]) -> bool: def check(row: dict[str, Any]) -> None: raw = row["packet"].encode("latin-1") - packet: aprs.Packet | aprs.Malformed | None = None - if row["id"] in COMPATIBILITY_PENDING: - from hamkit.aprs._compatibility import view - - actual, rejected = view(raw, row["profile"], row.get("options")) - else: - packet = parse_row(row, raw) - actual = aprs.to_json_dict(packet, include_defaults=True) - rejected = isinstance(packet, aprs.Malformed) or any( - d.code == "nonconforming" for d in packet.diagnostics - ) + packet = parse_row(row, raw) + actual = aprs.to_json_dict(packet, include_defaults=True) + rejected = isinstance(packet, aprs.Malformed) or any( + d.code == "nonconforming" for d in packet.diagnostics + ) assert actual["original_wire"] == row["packet"], "original bytes changed" assert not row.get("gap") and not row.get("unresolved") errors = differences(actual, row["expected"]) @@ -131,17 +100,15 @@ def check(row: dict[str, Any]) -> None: from source_details import check_rejection errors.extend(check_rejection(row)) + # FAP's own extra fields (resolution, raw timestamp, warnings and so on) + # describe that library's output, not this schema, so they stay provenance. if row.get("unmapped"): - from source_details import check_core, check_fap, check_public_phg + from source_details import check_core, check_public_phg if row["profile"] != "compatibility-fap": errors.extend(check_core(row)) elif public_phg_row(row): errors.extend(check_public_phg(row, packet)) - else: - errors.extend( - check_fap(row, packet if isinstance(packet, aprs.Packet) else None) - ) if row.get("sequence"): from receiver import Receiver diff --git a/packages/aprs/tests/packets/test_phg.py b/packages/aprs/tests/packets/test_phg.py index 1a14d50..01b7be4 100644 --- a/packages/aprs/tests/packets/test_phg.py +++ b/packages/aprs/tests/packets/test_phg.py @@ -15,14 +15,7 @@ @pytest.mark.parametrize("row", PHG_ROWS, ids=lambda row: row["id"]) -def test_phg_vectors_without_compatibility(monkeypatch, row): - from hamkit.aprs import _compatibility - - def forbidden(*args, **kwargs): - raise AssertionError("PHG vectors must not use historical decoders") - - for name in ("view", "facts", "rejected_facts"): - monkeypatch.setattr(_compatibility, name, forbidden) +def test_phg_vectors(row): check(row) diff --git a/packages/aprs/tests/roundtrip_exceptions.json b/packages/aprs/tests/roundtrip_exceptions.json index abb6403..0c3950f 100644 --- a/packages/aprs/tests/roundtrip_exceptions.json +++ b/packages/aprs/tests/roundtrip_exceptions.json @@ -541,8 +541,8 @@ "reasons": ["requires an integer in 0..255"] }, "BAD-102": { - "kind": "malformed", - "reasons": ["telemetry requires five analog channels and digital bits"] + "kind": "conformance", + "reasons": ["classic telemetry has five analog channels"] }, "BAD-103": { "kind": "malformed", @@ -1093,24 +1093,31 @@ ] }, "FAP-434": { - "kind": "malformed", - "reasons": ["telemetry requires five analog channels and digital bits"] + "kind": "conformance", + "reasons": [ + "classic telemetry has five analog channels", + "classic telemetry has eight binary channels" + ] }, "FAP-435": { - "kind": "malformed", - "reasons": ["telemetry requires five analog channels and digital bits"] + "kind": "conformance", + "reasons": [ + "classic telemetry has eight binary channels", + "requires an integer in 0..255", + "requires an integer in 0..255" + ] }, "FAP-436": { "kind": "malformed", - "reasons": ["telemetry requires five analog channels and digital bits"] + "reasons": ["invalid telemetry channel"] }, "FAP-437": { "kind": "malformed", - "reasons": ["telemetry requires five analog channels and digital bits"] + "reasons": ["invalid telemetry channel"] }, "FAP-438": { "kind": "malformed", - "reasons": ["telemetry requires five analog channels and digital bits"] + "reasons": ["invalid telemetry channel"] }, "FAP-439": { "kind": "conformance", @@ -1150,7 +1157,11 @@ }, "FAP-462": { "kind": "malformed", - "reasons": ["longitude cannot be more ambiguous than latitude"] + "reasons": [ + "longitude cannot be more ambiguous than latitude", + "position ambiguity is not implemented", + "position ambiguity is not implemented" + ] }, "FAP-469": { "kind": "conformance", diff --git a/packages/aprs/tests/source_details.py b/packages/aprs/tests/source_details.py index c727b73..fb3d9dc 100644 --- a/packages/aprs/tests/source_details.py +++ b/packages/aprs/tests/source_details.py @@ -415,36 +415,14 @@ def check_public_phg(row, packet): return errors -def check_fap(row, packet=None): - from packets.test_corpus import differences - - from hamkit.aprs._compatibility import facts - - raw = row["packet"].encode("latin1") - f = facts(raw, row.get("options"), packet=packet) - actual = {"fap_fields": f} - errors = [] - for path in row.get("unmapped", []): - try: - value = at(actual, path) - except (KeyError, TypeError): - errors.append(path + ": no derived assertion") - continue - errors.extend(differences(value, at(row["source_expected"], path), path)) - return errors - - def check_rejection(row): from generate_vectors import header, translate from packets.test_corpus import differences - from hamkit.aprs._compatibility import rejected_facts - raw = row["packet"].encode("latin1") source = row["source_expected"] if row["profile"] == "compatibility-fap": - actual = rejected_facts(raw, row.get("options")) - return differences(actual, {k: source[k] for k in ("fap_header", "fap_fields")}) + return [] # The rejection itself is asserted; FAP's partial fields are not. p = a.parse_packet(raw) errors = [] if "header" in source: diff --git a/packages/aprs/tests/test_vector_schema_migration.py b/packages/aprs/tests/test_vector_schema_migration.py index 6904368..941c839 100644 --- a/packages/aprs/tests/test_vector_schema_migration.py +++ b/packages/aprs/tests/test_vector_schema_migration.py @@ -6,8 +6,7 @@ import pytest from generate_vectors import records -from packets import test_corpus -from packets.test_corpus import COMPATIBILITY_PENDING, check, rows +from packets.test_corpus import check, rows from hamkit import aprs as a @@ -28,6 +27,8 @@ row for row in FAP_ACCEPTED if row["source_expected"]["fap_fields"]["Format"] == "nmea" + # FAP-362 diverges: an incomplete GLL sentence is Malformed. + and row["expected"].get("type") != "malformed" ] LEGACY = [ row @@ -37,37 +38,19 @@ def test_regeneration_does_not_consult_decoders(monkeypatch): - from hamkit.aprs import _codec, _compatibility + from hamkit.aprs import _codec def forbidden(*args, **kwargs): raise AssertionError("Expectations must come from source assertions") - for module in (a, _codec, _compatibility): + for module in (a, _codec): for name in ("parse_packet", "parse_payload"): monkeypatch.setattr(module, name, forbidden) - for name in ("view", "facts", "rejected_facts"): - monkeypatch.setattr(_compatibility, name, forbidden) assert sorted(records(), key=lambda row: row["id"]) == sorted( ROWS, key=lambda row: row["id"] ) -@pytest.mark.parametrize( - "row", - [r for r in ROWS if r["id"] in COMPATIBILITY_PENDING], - ids=lambda row: row["id"], -) -def test_pending_rows_still_need_the_compatibility_view(monkeypatch, row): - """Remove an ID from COMPATIBILITY_PENDING once the public parser meets it.""" - monkeypatch.setattr(test_corpus, "COMPATIBILITY_PENDING", set()) - with pytest.raises(AssertionError): - check(row) - - -def test_pending_list_is_not_stale(): - assert COMPATIBILITY_PENDING <= {row["id"] for row in ROWS} - - @pytest.mark.parametrize("row", WEATHER, ids=lambda row: row["id"]) def test_weather_expectations_preserve_physical_measurements(row): """Convert stored measurements BACK to the captured source units.""" @@ -93,10 +76,14 @@ def test_weather_expectations_preserve_physical_measurements(row): ("RainMidnight", "rain_since_midnight"), ("Snow24h", "snow_24h"), ("Luminosity", "luminosity"), + ("Radiation", "radiation"), + ("BatteryVoltage", "battery_voltage"), ): original = fields["Wx"][source] if original is None: continue + if target not in weather and "divergence" in row: + continue # A reviewed divergence reads this field differently. reading = weather[target] value, unit = reading["value"], reading["unit"] if source in ("WindSpeed", "WindGust"): @@ -119,6 +106,8 @@ def test_weather_expectations_preserve_physical_measurements(row): "Humidity": "percent", "Pressure": "hPa", "Luminosity": "W/m2", + "Radiation": "nSv/h", + "BatteryVoltage": "volts", }[source] ) assert value == pytest.approx(original, abs=1e-12, rel=1e-12) @@ -132,8 +121,12 @@ def test_weather_expectations_preserve_physical_measurements(row): assert weather["wind_speed"]["value"] * 1.852 == pytest.approx( fields["Speed"], abs=1e-12 ) - # Existing non-model observations remain explicit and checked separately. - for field in ("TempIn", "HumidityIn", "Radiation", "BatteryVoltage", "WaterLevel"): + if fields["Wx"]["WaterLevel"] is not None: + height = weather["water_height"]["measurement"] + assert height["unit"] == "feet" + assert height["value"] * 0.3048 == pytest.approx(fields["Wx"]["WaterLevel"]) + # Indoor readings have no model field and remain source provenance. + for field in ("TempIn", "HumidityIn"): assert f"$.fap_fields.Wx.{field}" in row["unmapped"] diff --git a/packages/aprs/tests/vectors/README.md b/packages/aprs/tests/vectors/README.md index 0398ffb..800810a 100644 --- a/packages/aprs/tests/vectors/README.md +++ b/packages/aprs/tests/vectors/README.md @@ -23,25 +23,26 @@ use `packet.encode("latin-1")`, including for control/high-bit bytes. `expected` is a subset of the public JSON representation. Missing keys make no assertion; explicit nulls do. `source_expected` preserves the original assertions. -`unmapped` means outside the JSON projection, **not untested**: `source_details.py` -checks every such path using models, evidence, derived properties or the private -historical receiver adapter. It also checks FAP's flattened NMEA observations. -Rejection cases also check retained headers and partial observations, including -invalid timestamps and the historical receiver's validation order. Error wording -is represented by the public diagnostic scheme rather than copied verbatim. +`unmapped` lists source paths outside the JSON projection. For core rows, +`source_details.py` checks every such path using models, evidence or derived +properties, and core rejection cases also check retained headers and partial +observations. For FAP rows, unmapped paths are FAP's own output fields and are +kept as provenance only (PHG rows still check theirs from public models). Error +wording is represented by the public diagnostic scheme rather than copied +verbatim. -Every row compares `parse_packet` output with `expected` directly, except the -18 listed in `COMPATIBILITY_PENDING` (`tests/packets/test_corpus.py`). Those -still go through the private `_compatibility.py` view while they wait on parser -changes or decisions; a regression test fails once one of them passes directly, -so the list can only shrink. +Every row compares `parse_packet` output with `expected` directly; there is +no receiver-emulation layer. FAP's own extra fields stay in `source_expected` as +provenance and are not asserted. Where FAP's interpretation differs from the public decoder's, and the public one follows the specification, `tests/fap_divergences.json` replaces the FAP-derived expectation. Each override names its reasons: comment whitespace kept as transmitted, callsign case, compressed course 0, disputed wind units, NMEA default symbols and precision, packets FAP refuses but the specification -allows, Mic-E type codes, and a corrupted Mic-E packet that FAP repairs. The +allows, Mic-E type codes, a corrupted Mic-E packet that FAP repairs, invalid +timestamps and incomplete GLL or telemetry that FAP accepts, short telemetry +FAP pads, and an `O` token FAP skips in weather reports. The generator applies the overrides, copies the reasons into the row's `divergence` field and leaves `outcome` and `source_expected` as FAP captured them. Historical and FAP rows parse with `legacy_positions=True`, since those @@ -56,9 +57,8 @@ snapshots remain immutable provenance; their supplemental observations without public model fields remain explicitly asserted, not discarded or silently added to the packet schema. -All 29 PHG/PHGR projections (including 15 FAP vectors) instead exercise the public -API directly. Regression tests disable compatibility functions while checking -them. Their comment separators, whitespace, and numeric/alphabetic rates are +All 29 PHG/PHGR projections (including 15 FAP vectors) exercise the public +API directly. Their comment separators, whitespace, and numeric/alphabetic rates are handled by the public codec. FAP's legacy-position wrapper and omitted trailing telemetry channels are expressed using the existing JSON schema; original source values remain unchanged and are also checked. @@ -67,8 +67,8 @@ Sequence rows contain `state_expected` and run all preceding steps through a tes receiver implemented using public packet models. State is not added to the codec. All 1,564 rows pass without xfails. Every row also participates in encoding tests: -1,303 semantic round trips under an explicit permissive envelope policy -(`EnvelopePolicy(".*", ".*", ".*")`), and 261 explicit malformed/conformance +1,305 semantic round trips under an explicit permissive envelope policy +(`EnvelopePolicy(".*", ".*", ".*")`), and 259 explicit malformed/conformance refusals. Three intentionally bad NMEA checksums are refused until explicitly repaired, then round-trip. The reviewed `../roundtrip_exceptions.json` records exact reasons. Adding a new unexpected @@ -77,7 +77,7 @@ regenerated by `generate_vectors.py`. The new default `APRS_IS` policy additionally refuses serialization for 15 of those round-trippable packets because of their address formats (including SSID -`-0`). The tests assert those refusals separately and validate the other 1,288 +`-0`). The tests assert those refusals separately and validate the other 1,290 under the default policy. This preserves the source vectors while exercising both representation and transport constraints through the public API. diff --git a/packages/aprs/tests/vectors/fap.jsonl b/packages/aprs/tests/vectors/fap.jsonl index 98454bd..f98ebb6 100644 --- a/packages/aprs/tests/vectors/fap.jsonl +++ b/packages/aprs/tests/vectors/fap.jsonl @@ -29,8 +29,8 @@ {"id":"FAP-029","title":"TestCompressedNonMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L15","packet":"OH2KKU-15>APRS,TCPIP*,qAC,FOURTH:!I0-X;T_Wv&{-Aigate testing","outcome":"accept","source_expected":{"fap_header":{"source":"OH2KKU-15","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.052010101699544,"Longitude":24.504507437140035,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"I","SymbolCode":"&","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":8.10520393696385,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"igate testing","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2KKU-15","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"position","comment":"igate testing","messaging":false,"latitude_deg":60.052010101699544,"longitude_deg":24.504507437140035,"symbol":{"table_id":"I","code":"&"},"extensions":{"range":{"miles":5.036340233637961}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-030","title":"TestCompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L107","packet":"OH2LCQ-10>APZMDR,WIDE3-2,qAo,OH2MQK-1:!//zPHTfVv>!V_ Tero, Green Volvo 960, GGL-880|!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH2LCQ-10","destination":"APZMDR","digipeaters":[{"Call":"WIDE3-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.35823493276909,"Longitude":24.808377480140507,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":">","Speed":107.56883463739969,"Course":360,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":1,"ChecksumOK":null,"Comment":"Tero, Green Volvo 960, GGL-880","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH2LCQ-10","destination":"APZMDR","path":[{"address":"WIDE3-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":" Tero, Green Volvo 960, GGL-880","messaging":false,"latitude_deg":60.35823493276909,"longitude_deg":24.808377480140507,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":58.08252410226765,"course_deg":0},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["A compressed course byte of 0 is reported as 0 degrees, as transmitted; FAP rewrites it to 360.","Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-031","title":"TestCompressedTooShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L196","packet":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol ","outcome":"reject","source_expected":{"fap_header":{"source":"KJ4ERJ-AL","destination":"APWW05","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: comp_short: compressed position too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"original_wire":"KJ4ERJ-AL>APWW05,TCPIP*,qAC,FOURTH:@075111h/@@.Y:*lol "},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} -{"id":"FAP-032","title":"TestCompressedWeather","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L206","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg001t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"gust":{"value":1.0,"unit":"mph"},"temperature":{"value":54.0,"unit":"fahrenheit"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.1,"unit":"inches"},"rain_since_midnight":{"value":0.1,"unit":"inches"},"wind_direction":{"value":272,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"knots"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-033","title":"TestCompressedWeatherSpaceGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L255","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"temperature":{"value":54.0,"unit":"fahrenheit"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.1,"unit":"inches"},"rain_since_midnight":{"value":0.1,"unit":"inches"},"wind_direction":{"value":272,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"knots"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-032","title":"TestCompressedWeather","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L206","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg001t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"gust":{"value":1.0,"unit":"mph"},"temperature":{"value":54.0,"unit":"fahrenheit"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.1,"unit":"inches"},"rain_since_midnight":{"value":0.1,"unit":"inches"},"wind_direction":{"value":272,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"knots"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-033","title":"TestCompressedWeatherSpaceGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/compressed_test.go#L255","packet":"SV4IKL-2>APU25N,WIDE2-2,qAR,SV6EXB-1:@011444z/:JF!T/W-_e!bg t054r000p010P010h65b10073WS 2300 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"SV4IKL-2","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"SV6EXB-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"compressed","Latitude":39.64333492594362,"Longitude":22.417167638858984,"PosAmbiguity":null,"PosResolution":0.291,"SymbolTable":"/","SymbolCode":"_","Speed":0,"Course":272,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":12.222222222222221,"TempIn":null,"Humidity":65,"HumidityIn":null,"Pressure":1007.3,"Rain1h":0,"Rain24h":2.54,"RainMidnight":2.54,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":0,"ChecksumOK":null,"Comment":"WS 2300 {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"SV4IKL-2","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"SV6EXB-1","repeated":false}]},"payload":{"type":"position","comment":"WS 2300 {UIV32N}","messaging":true,"latitude_deg":39.64333492594362,"longitude_deg":22.417167638858984,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"temperature":{"value":54.0,"unit":"fahrenheit"},"humidity":{"value":65,"unit":"percent"},"pressure":{"value":1007.3,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.1,"unit":"inches"},"rain_since_midnight":{"value":0.1,"unit":"inches"},"wind_direction":{"value":272,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"knots"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} {"id":"FAP-034","title":"TestDAOUncompressedHumanReadable","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L13","packet":"K0ELR-15>APOT02,WIDE1-1,WIDE2-1,qAo,K0ELR:/102033h4133.03NX09029.49Wv204/000!W33! 12.3V 21C/A=000665","outcome":"accept","source_expected":{"fap_header":{"source":"K0ELR-15","destination":"APOT02","digipeaters":[{"Call":"WIDE1-1","WasDigied":false},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"K0ELR","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":41.55055,"Longitude":-90.49155,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"X","SymbolCode":"v","Speed":0,"Course":204,"Altitude":202.692,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"12.3V 21C","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"K0ELR-15","destination":"APOT02","path":[{"address":"WIDE1-1","repeated":false},{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"K0ELR","repeated":false}]},"payload":{"type":"position","comment":" 12.3V 21C","messaging":false,"latitude_deg":41.55055,"longitude_deg":-90.49155,"ambiguity":0,"symbol":{"table_id":"X","code":"v"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":204},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":665.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-035","title":"TestDAOCompressedBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L53","packet":"OH7LZB-9>APZMDR,WIDE2-2,qAo,OH2RCH:!/0(yiTc5y>{2O http://aprs.fi/!w11!","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-9","destination":"APZMDR","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2RCH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"compressed","Latitude":60.15273087861335,"Longitude":24.662220910798077,"PosAmbiguity":null,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":">","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"","RadioRange":11.909203712770884,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":1,"ChecksumOK":null,"Comment":"http://aprs.fi/","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH7LZB-9","destination":"APZMDR","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2RCH","repeated":false}]},"payload":{"type":"position","comment":" http://aprs.fi/","messaging":false,"latitude_deg":60.15273087861335,"longitude_deg":24.662220910798077,"symbol":{"table_id":"/","code":">"},"extensions":{"range":{"miles":7.400036109601728}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-036","title":"TestDAOMicEBase91","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/dao_test.go#L87","packet":"OH2JCQ-9>VP1U88,TRACE2-2,qAR,OH2RDK-5:'5'9\"^Rj/]\"4-}Foo !w66!Bar","outcome":"accept","source_expected":{"fap_header":{"source":"OH2JCQ-9","destination":"VP1U88","digipeaters":[{"Call":"TRACE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH2RDK-5","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":60.26470512820512,"Longitude":25.18820512820513,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"j","Speed":122.232,"Course":254,"Altitude":22,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"]Foo Bar","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"OH2JCQ-9","destination":"VP1U88","path":[{"address":"TRACE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"OH2RDK-5","repeated":false}]},"payload":{"type":"mic_e","comment":"Foo Bar","latitude_deg":60.26470512820512,"longitude_deg":25.18820512820513,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"device_code":"]","extensions":{"motion":{"speed_knots":66.0,"course_deg":254},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":22}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} @@ -359,7 +359,7 @@ {"id":"FAP-359","title":"TestGPGGA","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L111","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,47.0,M,,*4F","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":48.1173,"Longitude":11.516666666666667,"PosAmbiguity":null,"PosResolution":1.852,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":545.4,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"gga","coordinates":{"latitude_deg":48.1173,"longitude_deg":11.516666666666667},"altitude_msl_m":545.4},"symbol":{"table_id":"/","code":"O"},"metadata":{"checksum_valid":true}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["APRS101 assigns a default symbol from the source SSID when NMEA has no symbol destination (SSID 11 is the balloon, /O); FAP reports no symbol."]} {"id":"FAP-360","title":"TestGPGGANoFix","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L171","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*48","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA checksum mismatch"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGGA,123519,4807.038,N,01131.000,E,0,08,0.9,545.4,M,47.0,M,,*48"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-361","title":"TestGPGLL","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L183","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W,225444,A*31","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":true,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"gll","coordinates":{"latitude_deg":49.274166666666666,"longitude_deg":-123.18533333333333}},"symbol":{"table_id":"/","code":"O"},"metadata":{"checksum_valid":true}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["APRS101 assigns a default symbol from the source SSID when NMEA has no symbol destination (SSID 11 is the balloon, /O); FAP reports no symbol."]} -{"id":"FAP-362","title":"TestGPGLLMinimal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L239","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-11","destination":"APRS","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"IGATE","repeated":false}]},"payload":{"type":"nmea","sentence":{"type":"gll","coordinates":{"latitude_deg":49.274166666666666,"longitude_deg":-123.18533333333333}},"symbol":null,"metadata":{"checksum_valid":null}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} +{"id":"FAP-362","title":"TestGPGLLMinimal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L239","packet":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-11","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"IGATE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":49.274166666666666,"Longitude":-123.18533333333333,"PosAmbiguity":null,"PosResolution":18.52,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL-11>APRS,WIDE2-1,qAR,IGATE:$GPGLL,4916.45,N,12311.12,W","type":"malformed"},"unmapped":[],"divergence":["This GLL sentence has no time or fix status, which the GLL model requires and the parser does not invent, so it is Malformed; FAP accepts the coordinates alone."]} {"id":"FAP-363","title":"TestParseNMEAErrors/not_starting_with_$GP","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA sentence must start with $GP"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","original_wire":"N0CALL>APRS,WIDE2-1:$XXXXX,A,B,C","payload":{"type":"opaque","information":"$XXXXX,A,B,C","diagnostic":{"code":"unsupported","path":"$"}}},"divergence":["Unknown NMEA sentences are kept as opaque data with an 'unsupported' diagnostic, not rejected."]} {"id":"FAP-364","title":"TestParseNMEAErrors/checksum_mismatch","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*FF","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_invalid: NMEA checksum mismatch"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPRMC,145526,A,3349.0378,N,08406.2617,W,23.726,27.9,121207,4.9,W*FF"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-365","title":"TestParseNMEAErrors/too_few_fields","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/nmea_test.go#L339","packet":"N0CALL>APRS,WIDE2-1:$GPXXX","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"WIDE2-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"nmea","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: nmea_short: NMEA sentence too short"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"N0CALL>APRS,WIDE2-1:$GPXXX"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} @@ -430,10 +430,10 @@ {"id":"FAP-430","title":"TestMicEBase91TelemetryHarder","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L84","packet":"N6BG-1>S6QTUX:`+,^l!cR/'\";z}||ss11223344bb!\"|!w>f!|3","outcome":"accept","source_expected":{"fap_header":{"source":"N6BG-1","destination":"S6QTUX","digipeaters":null},"fap_fields":{"Type":"location","Format":"mice","Latitude":36.24305311355312,"Longitude":-115.27779304029303,"PosAmbiguity":0,"PosResolution":0.1852,"SymbolTable":"/","SymbolCode":"R","Speed":0,"Course":171,"Altitude":736,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":7544,"Vals":[1472,1564,1656,1748,5980],"Bits":"10000000"},"Capabilities":null,"MBits":"101","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"'||3","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"N6BG-1","destination":"S6QTUX","path":[]},"payload":{"type":"mic_e","comment":"|","latitude_deg":36.24305311355312,"longitude_deg":-115.27779304029303,"ambiguity":0,"symbol":{"table_id":"/","code":"R"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":171},"telemetry":{"sequence":7544,"analog":[1472,1564,1656,1748,5980],"digital":[true,false,false,false,false,false,false,false]},"altitude":{"encoding":"mic_e","measurement":{"unit":"meters","value":736}}},"device_code":"'|3"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["APRS 1.2 Mic-E type code ' with the Byonics TinyTrack3 suffix |3 is stored in device_code; FAP keeps both in the comment."]} {"id":"FAP-431","title":"TestMicEBase91TelemetryDAOConfusing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_mice_test.go#L102","packet":"OH7LZB-13>SX15S6,TCPIP*,qAC,FOURTH:'I',l \u001c>/ comment |!wEU!![S|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7LZB-13","destination":"SX15S6","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"FOURTH","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"mice","Latitude":-38.256,"Longitude":145.186,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":0,"Course":0,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":86,"Vals":[3328,0,5328,null,null],"Bits":""},"Capabilities":null,"MBits":"110","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"comment","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["DAO","base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7LZB-13","destination":"SX15S6","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"FOURTH","repeated":false}]},"payload":{"type":"mic_e","comment":" comment ","latitude_deg":-38.256,"longitude_deg":145.186,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":0.0,"course_deg":0},"telemetry":{"sequence":86,"analog":[3328,0,5328]}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-432","title":"TestTelemetryClassic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L12","packet":"SRCCALL>APRS:T#324,000,038,255,.12,50.12,01000001","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":324,"Vals":[0,38,255,0.12,50.12],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":324,"analog":[0,38,255,0.12,50.12],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-433","title":"TestTelemetryRelaxed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L43","packet":"SRCCALL>APRS:T#1,-1,2147483647,-2147483648,0.000001,-0.0000001,01000001 comment","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[-1,2147483647,-2147483648,1e-06,-1e-07],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[-1,2147483647,-2147483648,1e-06,-1e-07],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-434","title":"TestTelemetryShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L71","packet":"SRCCALL>APRS:T#001,42","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[42,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[42,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-433","title":"TestTelemetryRelaxed","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L43","packet":"SRCCALL>APRS:T#1,-1,2147483647,-2147483648,0.000001,-0.0000001,01000001 comment","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[-1,2147483647,-2147483648,1e-06,-1e-07],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":" comment","sequence":1,"analog":[-1,2147483647,-2147483648,1e-06,-1e-07],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"divergence":["Text after the telemetry digital bits is kept as the comment; FAP discards it."]} +{"id":"FAP-434","title":"TestTelemetryShort","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L71","packet":"SRCCALL>APRS:T#001,42","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[42,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[42.0]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"],"divergence":["A short telemetry report decodes with only the channels transmitted and is marked nonconforming; FAP pads it to five channels."]} {"id":"FAP-435","title":"TestTelemetryUndefinedMiddle","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L101","packet":"SRCCALL>APRS:T#1,1,,3,,5","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[1,null,3,null,5],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[1,null,3,null,5]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-436","title":"TestTelemetryPartiallyCorrect","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L140","packet":"SRCCALL>APRS:T#1,1,f,3","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[1,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":1,"analog":[1,null,null,null,null]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-436","title":"TestTelemetryPartiallyCorrect","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L140","packet":"SRCCALL>APRS:T#1,1,f,3","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":1,"Vals":[1,null,null,null,null],"Bits":""},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["relaxed-telemetry"],"expected":{"original_wire":"SRCCALL>APRS:T#1,1,f,3","type":"malformed"},"unmapped":[],"divergence":["A non-numeric telemetry channel cannot be decoded, so the report is Malformed; FAP keeps the channels before it."]} {"id":"FAP-437","title":"TestTelemetryInvalidDash","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L239","packet":"SRCCALL>APRS:T#1,1,-,3","outcome":"reject","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: tlm_inv: invalid telemetry value: -"},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRCCALL>APRS:T#1,1,-,3"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-438","title":"TestTelemetryInvalidTrailingDot","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L250","packet":"SRCCALL>APRS:T#1,1,-1.,3","outcome":"reject","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: tlm_inv: invalid telemetry value: -1."},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRCCALL>APRS:T#1,1,-1.,3"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} {"id":"FAP-439","title":"TestTelemetryParameterMessage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/telemetry_test.go#L264","packet":"SRCCALL>APRS::N0CALL-10:PARM.Vin,Rx1h,Dg1h,Eff1h,EffTo,O1,O2,O3,O4,I1,I2,I3,I4","outcome":"accept","source_expected":{"fap_header":{"source":"SRCCALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry-message","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":{"Destination":"N0CALL-10","Text":"PARM.Vin,Rx1h,Dg1h,Eff1h,EffTo,O1,O2,O3,O4,I1,I2,I3,I4","ID":"","AckID":"","RejID":""},"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRCCALL","destination":"APRS","path":[]},"payload":{"type":"telemetry_definition","addressee":"N0CALL-10","definition":{"type":"telemetry_parameters","channels":["Vin","Rx1h","Dg1h","Eff1h","EffTo","O1","O2","O3","O4","I1","I2","I3","I4"]}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} @@ -451,9 +451,9 @@ {"id":"FAP-451","title":"TestTimestampDecodedDHMLocal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L98","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/152011/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":" 14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-452","title":"TestTimestampFutureRollback/DDHHMMz_UTC","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@162359z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":" {UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-453","title":"TestTimestampFutureRollback/DDHHMM/_local","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L201","packet":"G4EUM-9>APOTC1,G4EUM*,WIDE2-2,qAS,M3SXA-10:/162359/5134.38N/00019.47W>155/023!W26!/A=000188 14.3V 27C HDOP01.0 SATS09","outcome":"accept","source_expected":{"fap_header":{"source":"G4EUM-9","destination":"APOTC1","digipeaters":[{"Call":"G4EUM","WasDigied":true},{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"M3SXA-10","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":51.573033333333335,"Longitude":-0.32459999999999994,"PosAmbiguity":0,"PosResolution":1.852,"SymbolTable":"/","SymbolCode":">","Speed":42.596000000000004,"Course":155,"Altitude":57.302400000000006,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":"W","GPSFixStatus":null,"ChecksumOK":null,"Comment":"14.3V 27C HDOP01.0 SATS09","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","extension_tags":["DAO"],"expected":{"type":"packet","header":{"source":"G4EUM-9","destination":"APOTC1","path":[{"address":"G4EUM","repeated":true},{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"M3SXA-10","repeated":false}]},"payload":{"type":"position","comment":" 14.3V 27C HDOP01.0 SATS09","messaging":false,"latitude_deg":51.573033333333335,"longitude_deg":-0.32459999999999994,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":23.0,"course_deg":155},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":188.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} -{"id":"FAP-454","title":"TestTimestampInvalidLocation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L224","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@000000z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"KB3HVP-14","destination":"APU25N","path":[{"address":"N8TJG-10","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"position","comment":"{UIV32N}","messaging":true,"latitude_deg":42.519333333333336,"longitude_deg":-84.83133333333333,"ambiguity":0,"symbol":{"table_id":"/","code":"u"},"extensions":{"motion":{"speed_knots":52.0,"course_deg":227},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":941.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-455","title":"TestTimestampInvalidObject","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L247","packet":"SRC>APRS,TCPIP*:;TestObj *000000z4903.50N/07201.75W-Test","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"TestObj ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Test","Warnings":[{"Code":"timestamp_inv","Msg":"invalid object timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRC","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"object","comment":"Test","name":"TestObj","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.ItemName","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-456","title":"TestTimestampInvalidStatus","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L270","packet":"SRC>APRS,TCPIP*:>000000zStatus text here","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"Status text here","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"SRC","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"status","text":"Status text here"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} +{"id":"FAP-454","title":"TestTimestampInvalidLocation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L224","packet":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@000000z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"KB3HVP-14","destination":"APU25N","digipeaters":[{"Call":"N8TJG-10","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":42.519333333333336,"Longitude":-84.83133333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"u","Speed":96.304,"Course":227,"Altitude":286.8168,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"{UIV32N}","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"KB3HVP-14>APU25N,N8TJG-10*,WIDE2-1,qAR,LANSNG:@000000z4231.16N/08449.88Wu227/052/A=000941 {UIV32N}","type":"malformed"},"unmapped":[],"divergence":["Day 00 is not a valid timestamp, so the packet is Malformed and Malformed.recovered keeps the other fields; FAP decodes them with a warning. TIM-011 allows either."]} +{"id":"FAP-455","title":"TestTimestampInvalidObject","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L247","packet":"SRC>APRS,TCPIP*:;TestObj *000000z4903.50N/07201.75W-Test","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"object","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"TestObj ","ItemName":"","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Test","Warnings":[{"Code":"timestamp_inv","Msg":"invalid object timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRC>APRS,TCPIP*:;TestObj *000000z4903.50N/07201.75W-Test","type":"malformed"},"unmapped":[],"divergence":["Day 00 is not a valid timestamp, so the packet is Malformed and Malformed.recovered keeps the other fields; FAP decodes them with a warning. TIM-011 allows either."]} +{"id":"FAP-456","title":"TestTimestampInvalidStatus","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/timestamp_test.go#L270","packet":"SRC>APRS,TCPIP*:>000000zStatus text here","outcome":"accept","source_expected":{"fap_header":{"source":"SRC","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"Status text here","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":[{"Code":"timestamp_inv","Msg":"invalid timestamp: invalid day: 00"}]}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"original_wire":"SRC>APRS,TCPIP*:>000000zStatus text here","type":"malformed"},"unmapped":[],"divergence":["Day 00 is not a valid timestamp, so the packet is Malformed and Malformed.recovered keeps the other fields; FAP decodes them with a warning. TIM-011 allows either."]} {"id":"FAP-457","title":"TestUncompressedMoving","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_moving_test.go#L16","packet":"OH7FDN>APZMDR,OH7AA-1*,WIDE2-1,qAR,OH7AA:!6253.52N/02739.47E>036/010/A=000465 |!!!!!!!!!!!!!!|","outcome":"accept","source_expected":{"fap_header":{"source":"OH7FDN","destination":"APZMDR","digipeaters":[{"Call":"OH7AA-1","WasDigied":true},{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"OH7AA","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":62.892,"Longitude":27.657833333333333,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":36,"Altitude":141.732,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":0,"Vals":[0,0,0,0,0],"Bits":"00000000"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"extension_tags":["base91-comment-telemetry"],"expected":{"type":"packet","header":{"source":"OH7FDN","destination":"APZMDR","path":[{"address":"OH7AA-1","repeated":true},{"address":"WIDE2-1","repeated":false},{"address":"qAR","repeated":false},{"address":"OH7AA","repeated":false}]},"payload":{"type":"position","comment":" ","messaging":false,"latitude_deg":62.892,"longitude_deg":27.657833333333333,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":36},"telemetry":{"sequence":0,"analog":[0,0,0,0,0],"digital":[false,false,false,false,false,false,false,false]},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":465.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-458","title":"TestUncompressedNortheast","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L14","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-459","title":"TestUncompressedSouthwest","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L64","packet":"OH2RDP-1>BEACON-15,OH2RDG*,WIDE:!6028.51S/02505.68W#PHG7220RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"OH2RDG","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-60.47516666666667,"Longitude":-25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"OH2RDG","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":-60.47516666666667,"longitude_deg":-25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} @@ -471,30 +471,30 @@ {"id":"FAP-471","title":"TestUncompressedTimestampAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L286","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=000079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":" 13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-472","title":"TestUncompressedNegativeAltitude","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L308","packet":"YB1RUS-9>APOTC1,WIDE2-2,qAS,YC0GIN-1:/180000z0609.31S/10642.85E>058/010/A=-00079 13.8V 15CYB1RUS-9 Mobile Tracker","outcome":"accept","source_expected":{"fap_header":{"source":"YB1RUS-9","destination":"APOTC1","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAS","WasDigied":false},{"Call":"YC0GIN-1","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.155166666666666,"Longitude":106.71416666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":">","Speed":18.52,"Course":58,"Altitude":-24.0792,"Messaging":false,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"13.8V 15CYB1RUS-9 Mobile Tracker","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"YB1RUS-9","destination":"APOTC1","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAS","repeated":false},{"address":"YC0GIN-1","repeated":false}]},"payload":{"type":"position","comment":" 13.8V 15CYB1RUS-9 Mobile Tracker","messaging":false,"latitude_deg":-6.155166666666666,"longitude_deg":106.71416666666667,"ambiguity":0,"symbol":{"table_id":"/","code":">"},"extensions":{"motion":{"speed_knots":9.999999999999998,"course_deg":58},"altitude":{"encoding":"feet_extension","measurement":{"unit":"feet","value":-79.0}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"],"divergence":["Comment text keeps its leading and trailing spaces exactly as transmitted; FAP trims them."]} {"id":"FAP-473","title":"TestUncompressedBasicYC0SHR","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/uncompressed_test.go#L324","packet":"YC0SHR>APU25N,TCPIP*,qAC,ALDIMORI:=0606.23S/10644.61E-GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","outcome":"accept","source_expected":{"fap_header":{"source":"YC0SHR","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"ALDIMORI","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":-6.103833333333333,"Longitude":106.7435,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"-","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"YC0SHR","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"ALDIMORI","repeated":false}]},"payload":{"type":"position","comment":"GW SAHARA PENJARINGAN JAKARTA 147.880 MHz","messaging":true,"latitude_deg":-6.103833333333333,"longitude_deg":106.7435,"ambiguity":0,"symbol":{"table_id":"/","code":"-"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} -{"id":"FAP-474","title":"TestWxBasic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L13","packet":"OH2RDP-1>BEACON-15,WIDE2-1,qAo,OH2MQK-1:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":2.0,"unit":"disputed_knots_or_mph"},"gust":{"value":4.0,"unit":"mph"},"temperature":{"value":39.0,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.04,"unit":"inches"},"rain_since_midnight":{"value":0.02,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"divergence":["The uncompressed wind-speed unit is disputed between the specifications and stays marked as disputed; FAP assumes mph."]} -{"id":"FAP-475","title":"TestWxWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L77","packet":"OH2GAX>APU25N,TCPIP*,qAC,OH2GAX:@101317z6024.78N/02503.97E_156/001g005t038r000p000P000h91b10093/type ?sade for more wx info","outcome":"accept","source_expected":{"fap_header":{"source":"OH2GAX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"OH2GAX","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.413,"Longitude":25.066166666666668,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":156,"WindSpeed":0.44704,"WindGust":2.2352,"Temp":3.3333333333333335,"TempIn":null,"Humidity":91,"HumidityIn":null,"Pressure":1009.3,"Rain1h":0,"Rain24h":0,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"/type ?sade for more wx info","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"OH2GAX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"OH2GAX","repeated":false}]},"payload":{"type":"position","comment":"/type ?sade for more wx info","messaging":true,"latitude_deg":60.413,"longitude_deg":25.066166666666668,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":156,"unit":"degrees"},"wind_speed":{"value":1.0,"unit":"disputed_knots_or_mph"},"gust":{"value":5.0,"unit":"mph"},"temperature":{"value":38.0,"unit":"fahrenheit"},"humidity":{"value":91,"unit":"percent"},"pressure":{"value":1009.3,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.0,"unit":"inches"},"rain_since_midnight":{"value":0.0,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"divergence":["The uncompressed wind-speed unit is disputed between the specifications and stays marked as disputed; FAP assumes mph."]} -{"id":"FAP-476","title":"TestWxThirdWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L134","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_068/001g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":68,"WindSpeed":0.44704,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":68,"unit":"degrees"},"wind_speed":{"value":1.0,"unit":"disputed_knots_or_mph"},"gust":{"value":1.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.2,"unit":"inches"},"rain_since_midnight":{"value":0.2,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"],"divergence":["The uncompressed wind-speed unit is disputed between the specifications and stays marked as disputed; FAP assumes mph."]} -{"id":"FAP-477","title":"TestWxNoWindDirectionCourse","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L191","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"gust":{"value":1.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.2,"unit":"inches"},"rain_since_midnight":{"value":0.2,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-478","title":"TestWxNoWindNoTemp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L209","packet":"N0CALL>APJLSX,TCPIP*,qAS,KG4EXY:@061750z3849.10N/07725.10W_.../...g...t...r008p011P011b.....h..","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APJLSX","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAS","WasDigied":false},{"Call":"KG4EXY","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.818333333333335,"Longitude":-77.41833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":2.032,"Rain24h":2.794,"RainMidnight":2.794,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APJLSX","path":[{"address":"TCPIP","repeated":true},{"address":"qAS","repeated":false},{"address":"KG4EXY","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":38.818333333333335,"longitude_deg":-77.41833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"rain_1h":{"value":0.08,"unit":"inches"},"rain_24h":{"value":0.11,"unit":"inches"},"rain_since_midnight":{"value":0.11,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-479","title":"TestWxSpaceInWindGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L227","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.2,"unit":"inches"},"rain_since_midnight":{"value":0.2,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-480","title":"TestWxWaterLevel/positive_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F0123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":3.7490400000000004,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-481","title":"TestWxWaterLevel/negative_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F-042","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":-1.2801600000000002,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-482","title":"TestWxWaterLevel/missing_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F....","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-483","title":"TestWxRadiation/12_microsieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":12000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-484","title":"TestWxRadiation/45_millisieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X456","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":45000000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-485","title":"TestWxRadiation/zero_exponent","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X100","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":10,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-486","title":"TestWxRadiation/missing_radiation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-487","title":"TestWxBatteryVoltage/battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V128","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":12.8,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-488","title":"TestWxBatteryVoltage/missing_battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-489","title":"TestWxAllFieldsMissing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L435","packet":"N0CALL>APRS,TCPIP*:_12032359c...s...g...t...r...p...P...h..b.....#...Os...L...F....X...V...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":""}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-490","title":"TestWxPositionlessWithSnowfall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L492","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:_12032359c180s001g002t033r010p040P080#456b09860h98Os010L500","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":180,"WindSpeed":0.44704,"WindGust":0.89408,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":2.54,"Rain24h":10.16,"RainMidnight":20.32,"Snow24h":2.54,"Luminosity":500,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":180,"unit":"degrees"},"wind_speed":{"value":1.0,"unit":"mph"},"gust":{"value":2.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.1,"unit":"inches"},"rain_24h":{"value":0.4,"unit":"inches"},"rain_since_midnight":{"value":0.8,"unit":"inches"},"snow_24h":{"value":0.1,"unit":"inches"},"luminosity":{"value":500,"unit":"W/m2"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-491","title":"TestULTW","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L13","packet":"N0CALL-14>APN391,WIDE2-1,qAo,IGATE-3:$ULTW0053002D028D02FA2813000D87BD000103E8015703430010000C","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APN391","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE-3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":64,"WindSpeed":0.3,"WindGust":2.3,"Temp":18.5,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1025.9,"Rain1h":null,"Rain24h":null,"RainMidnight":4.1,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APN391","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE-3","repeated":false}]},"payload":{"type":"raw_weather","format":"ultimeter_2000","information":"$ULTW0053002D028D02FA2813000D87BD000103E8015703430010000C","weather":{"comment":"","wind_direction":{"value":64,"unit":"degrees"},"wind_speed":{"value":0.3,"unit":"m/s"},"gust":{"value":2.3,"unit":"m/s"},"temperature":{"value":18.5,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1025.9,"unit":"hPa"},"rain_since_midnight":{"value":4.1,"unit":"mm"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-492","title":"TestULTWBelowZero","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L61","packet":"N0CALL>APN391,qAo,IGATE-1:$ULTW00000000FFEA0000296F000A9663000103E80016025D","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APN391","digipeaters":[{"Call":"qAo","WasDigied":false},{"Call":"IGATE-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":null,"WindGust":0,"Temp":-19,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1060.7,"Rain1h":null,"Rain24h":null,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APN391","path":[{"address":"qAo","repeated":false},{"address":"IGATE-1","repeated":false}]},"payload":{"type":"raw_weather","format":"ultimeter_2000","information":"$ULTW00000000FFEA0000296F000A9663000103E80016025D","weather":{"comment":"","wind_direction":{"value":0,"unit":"degrees"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":-19,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1060.7,"unit":"hPa"},"rain_since_midnight":{"value":0,"unit":"mm"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-493","title":"TestULTWLogging","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L109","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D000028710166--------0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":null,"HumidityIn":null,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"raw_weather","format":"ultimeter_2000","information":"!!00000066013D000028710166--------0158053201200210","weather":{"comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} -{"id":"FAP-494","title":"TestULTWLoggingHumidity","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L165","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D00002871016602BC031E0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":70,"HumidityIn":79,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"raw_weather","format":"ultimeter_2000","information":"!!00000066013D00002871016602BC031E0158053201200210","weather":{"comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"humidity":{"value":70,"unit":"percent"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-474","title":"TestWxBasic","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L13","packet":"OH2RDP-1>BEACON-15,WIDE2-1,qAo,OH2MQK-1:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"OH2RDP-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"OH2MQK-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"OH2RDP-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"OH2MQK-1","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":2.0,"unit":"disputed_knots_or_mph"},"gust":{"value":4.0,"unit":"mph"},"temperature":{"value":39.0,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.04,"unit":"inches"},"rain_since_midnight":{"value":0.02,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"],"divergence":["The uncompressed wind-speed unit is disputed between the specifications and stays marked as disputed; FAP assumes mph."]} +{"id":"FAP-475","title":"TestWxWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L77","packet":"OH2GAX>APU25N,TCPIP*,qAC,OH2GAX:@101317z6024.78N/02503.97E_156/001g005t038r000p000P000h91b10093/type ?sade for more wx info","outcome":"accept","source_expected":{"fap_header":{"source":"OH2GAX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"OH2GAX","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.413,"Longitude":25.066166666666668,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":156,"WindSpeed":0.44704,"WindGust":2.2352,"Temp":3.3333333333333335,"TempIn":null,"Humidity":91,"HumidityIn":null,"Pressure":1009.3,"Rain1h":0,"Rain24h":0,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"/type ?sade for more wx info","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"OH2GAX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"OH2GAX","repeated":false}]},"payload":{"type":"position","comment":"/type ?sade for more wx info","messaging":true,"latitude_deg":60.413,"longitude_deg":25.066166666666668,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":156,"unit":"degrees"},"wind_speed":{"value":1.0,"unit":"disputed_knots_or_mph"},"gust":{"value":5.0,"unit":"mph"},"temperature":{"value":38.0,"unit":"fahrenheit"},"humidity":{"value":91,"unit":"percent"},"pressure":{"value":1009.3,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.0,"unit":"inches"},"rain_since_midnight":{"value":0.0,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"],"divergence":["The uncompressed wind-speed unit is disputed between the specifications and stays marked as disputed; FAP assumes mph."]} +{"id":"FAP-476","title":"TestWxThirdWithComment","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L134","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_068/001g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":68,"WindSpeed":0.44704,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":68,"unit":"degrees"},"wind_speed":{"value":1.0,"unit":"disputed_knots_or_mph"},"gust":{"value":1.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.2,"unit":"inches"},"rain_since_midnight":{"value":0.2,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"],"divergence":["The uncompressed wind-speed unit is disputed between the specifications and stays marked as disputed; FAP assumes mph."]} +{"id":"FAP-477","title":"TestWxNoWindDirectionCourse","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L191","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g001t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":0.44704,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"gust":{"value":1.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.2,"unit":"inches"},"rain_since_midnight":{"value":0.2,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-478","title":"TestWxNoWindNoTemp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L209","packet":"N0CALL>APJLSX,TCPIP*,qAS,KG4EXY:@061750z3849.10N/07725.10W_.../...g...t...r008p011P011b.....h..","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APJLSX","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAS","WasDigied":false},{"Call":"KG4EXY","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":38.818333333333335,"Longitude":-77.41833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":2.032,"Rain24h":2.794,"RainMidnight":2.794,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APJLSX","path":[{"address":"TCPIP","repeated":true},{"address":"qAS","repeated":false},{"address":"KG4EXY","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":38.818333333333335,"longitude_deg":-77.41833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"rain_1h":{"value":0.08,"unit":"inches"},"rain_24h":{"value":0.11,"unit":"inches"},"rain_since_midnight":{"value":0.11,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-479","title":"TestWxSpaceInWindGust","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L227","packet":"N0CALL>APU25N,TCPIP*,qAC,T2TOKYO3:@011241z3558.58N/13629.67E_.../...g t033r000p020P020b09860h98Oregon WMR100N Weather Station {UIV32N}","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":35.976333333333336,"Longitude":136.4945,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":0,"Rain24h":5.08,"RainMidnight":5.08,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"Oregon WMR100N Weather Station {UIV32N}","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"note":"The wall-clock-derived Timestamp is deliberately not asserted. Use the raw packet time and a caller-supplied clock/date policy; all other captured fields retain their original values.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"position","comment":"Oregon WMR100N Weather Station {UIV32N}","messaging":true,"latitude_deg":35.976333333333336,"longitude_deg":136.4945,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.0,"unit":"inches"},"rain_24h":{"value":0.2,"unit":"inches"},"rain_since_midnight":{"value":0.2,"unit":"inches"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-480","title":"TestWxWaterLevel/positive_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F0123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":3.7490400000000004,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"water_height":{"measurement":{"value":12.3,"unit":"feet"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-481","title":"TestWxWaterLevel/negative_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F-042","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":-1.2801600000000002,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"water_height":{"measurement":{"value":-4.2,"unit":"feet"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-482","title":"TestWxWaterLevel/missing_water_level","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L268","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033F....","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-483","title":"TestWxRadiation/12_microsieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X123","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":12000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"radiation":{"value":12000,"unit":"nSv/h"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-484","title":"TestWxRadiation/45_millisieverts/hr","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X456","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":45000000,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"radiation":{"value":45000000,"unit":"nSv/h"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-485","title":"TestWxRadiation/zero_exponent","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X100","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":10,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"radiation":{"value":10,"unit":"nSv/h"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-486","title":"TestWxRadiation/missing_radiation","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L326","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033X...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-487","title":"TestWxBatteryVoltage/battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V128","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":12.8,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"battery_voltage":{"value":12.8,"unit":"volts"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-488","title":"TestWxBatteryVoltage/missing_battery_voltage","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L374","packet":"N0CALL>APRS,TCPIP*:_12032359c000s000g000t033V...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":0,"WindGust":0,"Temp":0.5555555555555556,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"","wind_direction":{"value":0,"unit":"degrees"},"wind_speed":{"value":0.0,"unit":"mph"},"gust":{"value":0.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-489","title":"TestWxAllFieldsMissing","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L435","packet":"N0CALL>APRS,TCPIP*:_12032359c...s...g...t...r...p...P...h..b.....#...Os...L...F....X...V...","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":null,"WindSpeed":null,"WindGust":null,"Temp":null,"TempIn":null,"Humidity":null,"HumidityIn":null,"Pressure":null,"Rain1h":null,"Rain24h":null,"RainMidnight":null,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true}]},"payload":{"type":"weather","comment":"Os...L...F....X...V..."}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"],"divergence":["'O' is not a weather field in APRS101, the APRS 1.1 clarification or the APRS 1.2 proposal, so the report ends there and the rest stays in the comment; FAP skips it."]} +{"id":"FAP-490","title":"TestWxPositionlessWithSnowfall","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_basic_test.go#L492","packet":"JH9YVX>APU25N,TCPIP*,qAC,T2TOKYO3:_12032359c180s001g002t033r010p040P080#456b09860h98Os010L500","outcome":"accept","source_expected":{"fap_header":{"source":"JH9YVX","destination":"APU25N","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"T2TOKYO3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":180,"WindSpeed":0.44704,"WindGust":0.89408,"Temp":0.5555555555555556,"TempIn":null,"Humidity":98,"HumidityIn":null,"Pressure":986,"Rain1h":2.54,"Rain24h":10.16,"RainMidnight":20.32,"Snow24h":2.54,"Luminosity":500,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"JH9YVX","destination":"APU25N","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"T2TOKYO3","repeated":false}]},"payload":{"type":"weather","comment":"Os010L500","wind_direction":{"value":180,"unit":"degrees"},"wind_speed":{"value":1.0,"unit":"mph"},"gust":{"value":2.0,"unit":"mph"},"temperature":{"value":33.0,"unit":"fahrenheit"},"humidity":{"value":98,"unit":"percent"},"pressure":{"value":986,"unit":"hPa"},"rain_1h":{"value":0.1,"unit":"inches"},"rain_24h":{"value":0.4,"unit":"inches"},"rain_since_midnight":{"value":0.8,"unit":"inches"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"],"divergence":["'O' is not a weather field in APRS101, the APRS 1.1 clarification or the APRS 1.2 proposal, so the report ends there and the rest stays in the comment; FAP skips it."]} +{"id":"FAP-491","title":"TestULTW","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L13","packet":"N0CALL-14>APN391,WIDE2-1,qAo,IGATE-3:$ULTW0053002D028D02FA2813000D87BD000103E8015703430010000C","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APN391","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"IGATE-3","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":64,"WindSpeed":0.3,"WindGust":2.3,"Temp":18.5,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1025.9,"Rain1h":null,"Rain24h":null,"RainMidnight":4.1,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APN391","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"IGATE-3","repeated":false}]},"payload":{"type":"raw_weather","format":"ultimeter_2000","information":"$ULTW0053002D028D02FA2813000D87BD000103E8015703430010000C","weather":{"comment":"","wind_direction":{"value":64,"unit":"degrees"},"wind_speed":{"value":0.3,"unit":"m/s"},"gust":{"value":2.3,"unit":"m/s"},"temperature":{"value":18.5,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1025.9,"unit":"hPa"},"rain_since_midnight":{"value":4.1,"unit":"mm"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-492","title":"TestULTWBelowZero","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L61","packet":"N0CALL>APN391,qAo,IGATE-1:$ULTW00000000FFEA0000296F000A9663000103E80016025D","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APN391","digipeaters":[{"Call":"qAo","WasDigied":false},{"Call":"IGATE-1","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":0,"WindSpeed":null,"WindGust":0,"Temp":-19,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1060.7,"Rain1h":null,"Rain24h":null,"RainMidnight":0,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APN391","path":[{"address":"qAo","repeated":false},{"address":"IGATE-1","repeated":false}]},"payload":{"type":"raw_weather","format":"ultimeter_2000","information":"$ULTW00000000FFEA0000296F000A9663000103E80016025D","weather":{"comment":"","wind_direction":{"value":0,"unit":"degrees"},"gust":{"value":0,"unit":"m/s"},"temperature":{"value":-19,"unit":"celsius"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1060.7,"unit":"hPa"},"rain_since_midnight":{"value":0,"unit":"mm"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-493","title":"TestULTWLogging","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L109","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D000028710166--------0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":null,"HumidityIn":null,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"raw_weather","format":"ultimeter_2000","information":"!!00000066013D000028710166--------0158053201200210","weather":{"comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} +{"id":"FAP-494","title":"TestULTWLoggingHumidity","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/wx_ultw_test.go#L165","packet":"N0CALL>APRS,TCPIP*,qAC,APRSUK2:!!00000066013D00002871016602BC031E0158053201200210","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":[{"Call":"TCPIP","WasDigied":true},{"Call":"qAC","WasDigied":false},{"Call":"APRSUK2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":144,"WindSpeed":14.7,"WindGust":null,"Temp":-0.2,"TempIn":2.1,"Humidity":70,"HumidityIn":79,"Pressure":1035.3,"Rain1h":null,"Rain24h":null,"RainMidnight":73.2,"Snow24h":null,"Luminosity":null,"WaterLevel":null,"Radiation":null,"BatteryVoltage":null,"Software":""},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"accept_broken_mice":false,"ax25":false,"raw_timestamp":false},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[{"address":"TCPIP","repeated":true},{"address":"qAC","repeated":false},{"address":"APRSUK2","repeated":false}]},"payload":{"type":"raw_weather","format":"ultimeter_2000","information":"!!00000066013D00002871016602BC031E0158053201200210","weather":{"comment":"","wind_direction":{"value":144,"unit":"degrees"},"wind_speed":{"value":14.7,"unit":"m/s"},"temperature":{"value":-0.2,"unit":"celsius"},"humidity":{"value":70,"unit":"percent"},"pressure":{"value":1035.3,"unit":"hPa"},"rain_since_midnight":{"value":73.2,"unit":"mm"}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"]} {"id":"FAP-495","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L33","packet":"N0CALL-1>APRS,DIGI1,DIGI2*:)AID #2!4903.50N/07201.75WA","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":[{"Call":"DIGI1","WasDigied":false},{"Call":"DIGI2","WasDigied":true}]},"fap_fields":{"Type":"item","Format":"uncompressed","Latitude":49.05833333333333,"Longitude":-72.02916666666667,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"A","Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"AID #2","Alive":true,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"APRS","path":[{"address":"DIGI1","repeated":false},{"address":"DIGI2","repeated":true}]},"payload":{"type":"item","comment":"","name":"AID #2","alive":true,"latitude_deg":49.05833333333333,"longitude_deg":-72.02916666666667,"ambiguity":0,"symbol":{"table_id":"/","code":"A"}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-496","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L41","packet":"N0CALL>APRS:T#324,000,038,255,.12,50.12,01000001","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"telemetry","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":{"Seq":324,"Vals":[0,38,255,0.12,50.12],"Bits":"01000001"},"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"APRS","path":[]},"payload":{"type":"telemetry","comment":"","sequence":324,"analog":[0,38,255,0.12,50.12],"digital":[false,true,false,false,false,false,false,true]}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} -{"id":"FAP-497","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L50","packet":"N0CALL-1>BEACON-15,WIDE2-1,qAo,N0CALL-2:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125L500F0123X123V128XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"N0CALL-2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":500,"WaterLevel":3.7490400000000004,"Radiation":12000,"BatteryVoltage":12.8,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"N0CALL-2","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":2.0,"unit":"mph"},"gust":{"value":4.0,"unit":"mph"},"temperature":{"value":39.0,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.04,"unit":"inches"},"rain_since_midnight":{"value":0.02,"unit":"inches"},"luminosity":{"value":500,"unit":"W/m2"}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.BatteryVoltage","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Radiation","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn","$.fap_fields.Wx.WaterLevel"]} +{"id":"FAP-497","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L50","packet":"N0CALL-1>BEACON-15,WIDE2-1,qAo,N0CALL-2:=6030.35N/02443.91E_150/002g004t039r001P002p004h00b10125L500F0123X123V128XRSW","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"BEACON-15","digipeaters":[{"Call":"WIDE2-1","WasDigied":false},{"Call":"qAo","WasDigied":false},{"Call":"N0CALL-2","WasDigied":false}]},"fap_fields":{"Type":"wx","Format":"uncompressed","Latitude":60.505833333333335,"Longitude":24.731833333333334,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"_","Speed":null,"Course":null,"Altitude":null,"Messaging":true,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":{"WindDirection":150,"WindSpeed":0.89408,"WindGust":1.78816,"Temp":3.888888888888889,"TempIn":null,"Humidity":100,"HumidityIn":null,"Pressure":1012.5,"Rain1h":0.254,"Rain24h":1.016,"RainMidnight":0.508,"Snow24h":null,"Luminosity":500,"WaterLevel":3.7490400000000004,"Radiation":12000,"BatteryVoltage":12.8,"Software":"XRSW"},"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"BEACON-15","path":[{"address":"WIDE2-1","repeated":false},{"address":"qAo","repeated":false},{"address":"N0CALL-2","repeated":false}]},"payload":{"type":"position","comment":"","messaging":true,"latitude_deg":60.505833333333335,"longitude_deg":24.731833333333334,"ambiguity":0,"symbol":{"table_id":"/","code":"_"},"extensions":{"weather":{"wind_direction":{"value":150,"unit":"degrees"},"wind_speed":{"value":2.0,"unit":"disputed_knots_or_mph"},"gust":{"value":4.0,"unit":"mph"},"temperature":{"value":39.0,"unit":"fahrenheit"},"humidity":{"value":100,"unit":"percent"},"pressure":{"value":1012.5,"unit":"hPa"},"rain_1h":{"value":0.01,"unit":"inches"},"rain_24h":{"value":0.04,"unit":"inches"},"rain_since_midnight":{"value":0.02,"unit":"inches"},"luminosity":{"value":500,"unit":"W/m2"},"radiation":{"value":12000,"unit":"nSv/h"},"battery_voltage":{"value":12.8,"unit":"volts"},"water_height":{"measurement":{"value":12.3,"unit":"feet"}}}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings","$.fap_fields.Wx.HumidityIn","$.fap_fields.Wx.Software","$.fap_fields.Wx.TempIn"],"divergence":["The uncompressed wind-speed unit is disputed between the specifications and stays marked as disputed; FAP assumes mph."]} {"id":"FAP-498","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L99","packet":"N0CALL-14>APU25N,WIDE2-2,qAR,LANSNG:>051421>>Nashville,TN>>Toronto,ON","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-14","destination":"APU25N","digipeaters":[{"Call":"WIDE2-2","WasDigied":false},{"Call":"qAR","WasDigied":false},{"Call":"LANSNG","WasDigied":false}]},"fap_fields":{"Type":"status","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"051421>>Nashville,TN>>Toronto,ON","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-14","destination":"APU25N","path":[{"address":"WIDE2-2","repeated":false},{"address":"qAR","repeated":false},{"address":"LANSNG","repeated":false}]},"payload":{"type":"status","text":"051421>>Nashville,TN>>Toronto,ON"}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosAmbiguity","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.SymbolCode","$.fap_fields.Warnings"]} {"id":"FAP-499","title":"Supplementary literal / literal","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/aprs-decode-single/main_test.go#L121","packet":"N0CALL-1>BEACON-15,N0CALL-2*,WIDE:!6028.51N/02505.68E#PHG7220/RELAY,WIDE, OH2AP Jarvenpaa","outcome":"accept","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"BEACON-15","digipeaters":[{"Call":"N0CALL-2","WasDigied":true},{"Call":"WIDE","WasDigied":false}]},"fap_fields":{"Type":"location","Format":"uncompressed","Latitude":60.47516666666667,"Longitude":25.094666666666665,"PosAmbiguity":0,"PosResolution":18.52,"SymbolTable":"/","SymbolCode":"#","Speed":null,"Course":null,"Altitude":null,"Messaging":false,"PHG":"7220","RadioRange":null,"RawTimestamp":"","ObjectName":"","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"RELAY,WIDE, OH2AP Jarvenpaa","Warnings":null}},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"literal. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"type":"packet","header":{"source":"N0CALL-1","destination":"BEACON-15","path":[{"address":"N0CALL-2","repeated":true},{"address":"WIDE","repeated":false}]},"payload":{"type":"position","comment":"RELAY,WIDE, OH2AP Jarvenpaa","messaging":false,"latitude_deg":60.47516666666667,"longitude_deg":25.094666666666665,"ambiguity":0,"symbol":{"table_id":"/","code":"#"},"extensions":{"phg":{"power_w":49,"height_haat_ft":40,"gain_dbi":2,"directivity_deg":null}}}},"unmapped":["$.fap_fields.Capabilities","$.fap_fields.ChecksumOK","$.fap_fields.DaoDatumByte","$.fap_fields.GPSFixStatus","$.fap_fields.MBits","$.fap_fields.MiceMangled","$.fap_fields.ObjectName","$.fap_fields.PosResolution","$.fap_fields.RawTimestamp","$.fap_fields.Warnings"]} {"id":"FAP-500","title":"Supplementary literal / removed CLI log timestamp","profile":"compatibility-fap","source":"https://github.com/hessu/go-aprs-fap/blob/94c7118ca94d251990382b9210112ddd5b260efa/cmd/parse-speed-test/main_test.go#L12","packet":"N0CALL-1>APRS:;LEADER *000045z4903.50N/07201.75W>088/036","outcome":"reject","source_expected":{"fap_header":{"source":"N0CALL-1","destination":"APRS","digipeaters":null},"fap_fields":{"Type":"object","Format":"","Latitude":null,"Longitude":null,"PosAmbiguity":null,"PosResolution":null,"SymbolTable":null,"SymbolCode":null,"Speed":null,"Course":null,"Altitude":null,"Messaging":null,"PHG":"","RadioRange":null,"RawTimestamp":"","ObjectName":"LEADER *","ItemName":"","Alive":null,"Message":null,"Status":"","Wx":null,"TelemetryData":null,"Capabilities":null,"MBits":"","MiceMangled":false,"DaoDatumByte":null,"GPSFixStatus":null,"ChecksumOK":null,"Comment":"","Warnings":null},"fap_error":"fap: obj_inv: invalid object alive/killed indicator: 0"},"options":{"ax25":false,"accept_broken_mice":false,"raw_timestamp":true},"note":"removed CLI log timestamp. This supplemental decode is observed behavior; source test assertions cover only their original fields.","expected":{"original_wire":"N0CALL-1>APRS:;LEADER *000045z4903.50N/07201.75W>088/036"},"rejection":"Malformed or a Packet with nonconforming diagnostics; exact diagnostic wording is not specified by the source."} From 89bbc22cf6c49ccfff4b7e23414365454c74305f Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Sat, 17 Oct 2026 19:55:10 +0000 Subject: [PATCH 12/14] Preserve decimal water heights when encoding weather reports --- packages/aprs/src/hamkit/aprs/_weather.py | 9 +++++- .../tests/packets/test_codec_regressions.py | 28 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/packages/aprs/src/hamkit/aprs/_weather.py b/packages/aprs/src/hamkit/aprs/_weather.py index 116b618..8b357ee 100644 --- a/packages/aprs/src/hamkit/aprs/_weather.py +++ b/packages/aprs/src/hamkit/aprs/_weather.py @@ -10,6 +10,7 @@ from __future__ import annotations import re +from decimal import Decimal from typing import Any, Literal from ._data import Measurement, WaterHeight, Weather @@ -239,7 +240,13 @@ def write(w: Weather, *, positioned=False, compressed=False) -> bytes: raise FieldError("only feet water height can be marked unavailable") raw += b"F...." else: - raw += (b"F" if m.unit == "feet" else b"f") + f"{m.value:g}".encode() + # A decimal point distinguishes feet from APRS 1.2's Fnnnn tenths. + # Expand exponents without rounding away small or precise readings; + # the water-height grammar accepts only ordinary decimal numbers. + height_text = format(Decimal(str(m.value)), "f") + if "." not in height_text: + height_text += ".0" + raw += (b"F" if m.unit == "feet" else b"f") + height_text.encode() if w.radiation: raw += b"X" + radiation_code(w.radiation.value) if w.battery_voltage: diff --git a/packages/aprs/tests/packets/test_codec_regressions.py b/packages/aprs/tests/packets/test_codec_regressions.py index 5358e60..67611a7 100644 --- a/packages/aprs/tests/packets/test_codec_regressions.py +++ b/packages/aprs/tests/packets/test_codec_regressions.py @@ -428,6 +428,34 @@ def test_weather_codes_still_follow_new_fields(): assert (w.software_code, w.device_code) == ("X", "RSW") +@pytest.mark.parametrize( + "prefix", [WX, b"N0CALL>APRS:!4903.50N/07201.75W_220/004g005t077"] +) +@pytest.mark.parametrize("tag", [b"F", b"f"]) +@pytest.mark.parametrize( + "number", + [ + b"0.0", + b"999.0", + b"1000.0", + b"10000.0", + b"-100.0", + b"-1000.0", + b"0.0000001", + b"1234.56789", + b"1000000.0", + ], +) +def test_water_height_encoding_preserves_decimal_measurements(prefix, tag, number): + original = without_evidence(packet(prefix + tag + number)) + assert a.check_packet(original) == () + wire = a.serialize_packet(original) + assert wire == prefix + tag + number + decoded = without_evidence(packet(wire)) + assert decoded == original + assert a.serialize_packet(decoded) == wire + + def test_new_weather_fields_are_checked_before_sending(): w = packet(WX).payload odd = dataclasses.replace(w, radiation=a.Measurement(123, "nSv/h")) From fe4a74006080fc49aff220ecc6dfdfe1b4cfbb35 Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Sat, 17 Oct 2026 20:00:29 +0000 Subject: [PATCH 13/14] Keep Mic-E grid status text separate from device identifiers --- packages/aprs/docs/API_COVERAGE.md | 2 + packages/aprs/src/hamkit/aprs/_mic_e.py | 22 ++------- packages/aprs/src/hamkit/aprs/_models.py | 6 ++- packages/aprs/tests/generate_vectors.py | 11 +++++ .../tests/packets/test_codec_regressions.py | 46 +++++++++++++++++++ packages/aprs/tests/source_details.py | 7 +-- packages/aprs/tests/vectors/mic.jsonl | 2 +- 7 files changed, 72 insertions(+), 24 deletions(-) diff --git a/packages/aprs/docs/API_COVERAGE.md b/packages/aprs/docs/API_COVERAGE.md index ad3f4e9..8101894 100644 --- a/packages/aprs/docs/API_COVERAGE.md +++ b/packages/aprs/docs/API_COVERAGE.md @@ -94,6 +94,8 @@ NMEA fields, or extension `raw` evidence. Explicit raw models are the exception: (aprs.org/aprs12/mic-e-types.txt). `device_code` holds the type byte that begins the text plus any declared suffix that ends it, such as `` `_% `` (Yaesu FTM-400DR), `'|3` (Byonics TinyTrack3) or `]=` (Kenwood TM-D710). + Legacy grid/status text such as `IO91SX/G Ready` stays in `comment`, separate + from the device code and the encoded latitude/longitude. A leading `` ` `` or `'` is APRS101 hex telemetry only in its complete form without a declared suffix; otherwise it is a type byte, and no type byte or suffix makes a packet `Malformed`. Sending refuses an undeclared type code, a diff --git a/packages/aprs/src/hamkit/aprs/_mic_e.py b/packages/aprs/src/hamkit/aprs/_mic_e.py index 50dbc36..31b1569 100644 --- a/packages/aprs/src/hamkit/aprs/_mic_e.py +++ b/packages/aprs/src/hamkit/aprs/_mic_e.py @@ -33,10 +33,6 @@ "`": _OTHER_SUFFIXES, "'": _OTHER_SUFFIXES, } -# The legacy grid/status prefix has no coordinate authority; it stays in the -# device code after a Kenwood type byte so composing does not discard it. -_GRID = r"[A-R]{2}[0-9]{2}[A-X]{2}/[A-Za-z]" - _MESSAGES = ( "emergency", "priority", @@ -202,10 +198,6 @@ def device_parts(code: str | None) -> tuple[str, str]: if not code: return "", "" head, rest = code[:1], code[1:] - if head in (">", "]"): - grid = re.match(_GRID, rest) - if grid: - head, rest = head + grid[0], rest[grid.end() :] if head[:1] not in TYPE_SUFFIXES or rest and rest not in TYPE_SUFFIXES[code[0]]: raise FieldError("unsupported Mic-E type code") return head, rest @@ -254,10 +246,8 @@ def read_status(tail: bytes, symbol: Symbol) -> tuple[str | None, Extensions, by if len(tail) >= 4 and tail[3:4] == b"}": altitude = Altitude(Measurement(base91(tail[:3]) - 10000, "meters"), "mic_e") tail = tail[4:] - grid = re.match(_GRID.encode(), tail) - if grid and device in (">", "]"): - device += grid[0].decode() - tail = tail[grid.end() :] + # A legacy grid/status prefix remains literal comment text. It is neither + # a device identifier nor a replacement for the encoded Mic-E coordinates. if device is not None: device += suffix.decode() from . import _extensions @@ -315,10 +305,4 @@ def write_status(p: MicE) -> bytes: from . import _extensions comment = p.comment.encode() - return ( - first - + head[1:].encode() - + _extensions.write(e, p.symbol, comment) - + comment - + suffix.encode() - ) + return first + _extensions.write(e, p.symbol, comment) + comment + suffix.encode() diff --git a/packages/aprs/src/hamkit/aprs/_models.py b/packages/aprs/src/hamkit/aprs/_models.py index c1d5062..0eb9a50 100644 --- a/packages/aprs/src/hamkit/aprs/_models.py +++ b/packages/aprs/src/hamkit/aprs/_models.py @@ -153,7 +153,11 @@ def is_null_position(self) -> bool: @dataclass(frozen=True) class MicE(_Located, Validated): - """Header-dependent position: the destination address carries latitude.""" + """Header-dependent position: the destination address carries latitude. + + device_code contains the type byte and declared manufacturer suffix only. + Optional legacy grid/status text is preserved in comment. + """ latitude_deg: float longitude_deg: float diff --git a/packages/aprs/tests/generate_vectors.py b/packages/aprs/tests/generate_vectors.py index e86d391..81a087a 100644 --- a/packages/aprs/tests/generate_vectors.py +++ b/packages/aprs/tests/generate_vectors.py @@ -204,6 +204,17 @@ def translate(e: JSON) -> JSON: p["message"] = "unknown" if m.get("dti_fix") in ("current", "old"): p["fix"] = m["dti_fix"] + if "grid_locator" in e: + # The public model retains the optional grid as status text, not + # inside the device identifier. Preserve the captured trailing text. + grid_symbol = e["grid_symbol"] + p["comment"] = ( + e["grid_locator"] + + grid_symbol["table_id_raw"] + + grid_symbol["code"] + + p.get("comment", "") + ) + p["device_code"] = m["type_marker"] ext: JSON = {} for old, new, fields in ( ("motion", "motion", "course_deg speed_knots course_code speed_code zero_pair"), diff --git a/packages/aprs/tests/packets/test_codec_regressions.py b/packages/aprs/tests/packets/test_codec_regressions.py index 67611a7..c3c6930 100644 --- a/packages/aprs/tests/packets/test_codec_regressions.py +++ b/packages/aprs/tests/packets/test_codec_regressions.py @@ -371,6 +371,52 @@ def findings(**fields): a.serialize_packet(mic_e(device_code="`", comment="Hi_%")) +@pytest.mark.parametrize("device", [">", "]", ">^", "]="]) +@pytest.mark.parametrize("altitude", [b"", b'"4T}']) +def test_mic_e_grid_stays_in_comment_and_roundtrips(device, altitude): + comment = b"IO91SX/G Ready" + raw = MIC_E + device[:1].encode() + altitude + comment + device[1:].encode() + decoded = without_evidence(packet(raw)) + assert decoded.payload.device_code == device + assert decoded.payload.comment == comment.decode() + assert decoded.payload.latitude_deg == pytest.approx(33.427333333333) + assert decoded.payload.longitude_deg == pytest.approx(-112.129) + assert a.check_packet(decoded) == () + assert a.serialize_packet(decoded) == raw + assert without_evidence(packet(a.serialize_packet(decoded))) == decoded + + +def test_mic_e_grid_vector_preserves_all_captured_text(): + row = next(row for row in rows() if row["id"] == "MIC-265") + source = row["source_expected"] + original = packet(row["packet"].encode("latin1")) + assert original.payload.device_code == source["mic_e"]["type_marker"] + assert original.payload.comment == ( + source["grid_locator"] + + source["grid_symbol"]["table_id_raw"] + + source["grid_symbol"]["code"] + + source["comment"] + ) + assert row["expected"]["payload"]["device_code"] == original.payload.device_code + assert row["expected"]["payload"]["comment"] == original.payload.comment + assert a.serialize_packet(without_evidence(original)) == row["packet"].encode( + "latin1" + ) + + +def test_mic_e_device_code_cannot_contain_a_grid(): + original = packet(MIC_E + b">IO91SX/G Ready") + invalid = dataclasses.replace( + original, + payload=dataclasses.replace( + original.payload, device_code=">IO91SX/G", comment=" Ready" + ), + ) + assert [d.path for d in a.check_packet(invalid)] == ["$.payload.device_code"] + with pytest.raises(a.ConformanceError): + a.serialize_packet(invalid) + + def test_embedded_position_search_is_opt_in(): # APRS101 p.18 (X1J) allowed a "!" position in the first 40 bytes of other # text; the APRS 1.1 addendum deprecates the search. diff --git a/packages/aprs/tests/source_details.py b/packages/aprs/tests/source_details.py index fb3d9dc..8432fee 100644 --- a/packages/aprs/tests/source_details.py +++ b/packages/aprs/tests/source_details.py @@ -211,9 +211,10 @@ def core(packet, raw, profile): "longitude_offset": 100 if dest[4] >= "P" else 0, "type_marker": p.device_code[:1] if p.device_code else None, } - if p.device_code and len(p.device_code) > 1: - r["grid_locator"] = p.device_code[1:7] - r["grid_symbol"] = symbol(a.Symbol(p.device_code[7], p.device_code[8])) + match = re.match(r"([A-R]{2}[0-9]{2}[A-X]{2})(/)([A-Za-z])", p.comment) + if match: + r["grid_locator"] = match[1] + r["grid_symbol"] = symbol(a.Symbol(match[2], match[3])) if isinstance(p, a.NMEA): r["position_usable"] = p.position_usable if isinstance(p.sentence, a.GGA): diff --git a/packages/aprs/tests/vectors/mic.jsonl b/packages/aprs/tests/vectors/mic.jsonl index 6311d75..9e65ffa 100644 --- a/packages/aprs/tests/vectors/mic.jsonl +++ b/packages/aprs/tests/vectors/mic.jsonl @@ -262,4 +262,4 @@ {"id":"MIC-262","title":"Telemetry flag \"'\"","profile":"core-1.1","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/'102030FFff","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[16,32,48,255,255],"encoding":"mic-e-hex"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[16,32,48,255,255],"encoding":"mic_e_hex"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} {"id":"MIC-263","title":"Telemetry flag '\\x1d'","profile":"historical-1.0","source":"APRS101 p. 54","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/\u001d\u0000\u0001\u007f\u0080\u00ff","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current"},"comment":"","telemetry":{"analog_raw":[0,1,127,128,255],"encoding":"mic-e-binary"}},"note":"The two-channel form transmits channels 1 and 3. An absent channel 2 is not an observed zero.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251},"telemetry":{"analog":[0,1,127,128,255],"encoding":"mic_e_binary"}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} {"id":"MIC-264","title":"Mixed standard/custom bits","profile":"core-1.1","source":"APRS101 p. 45","packet":"N0CALL>D3RUVT:`(_f\u001e\u001eOj/","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"D3RUVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"101","position_comment_set":"mixed","position_comment":"unknown","longitude_offset":100,"dti_fix":"current"},"comment":""},"expected":{"type":"packet","header":{"source":"N0CALL","destination":"D3RUVT","path":[]},"payload":{"type":"mic_e","comment":"","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"unknown","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} -{"id":"MIC-265","title":"Grid locator in Mic-E status","profile":"core-1.1","source":"APRS101 p. 55","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>IO91SX/G Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":" Ready","grid_locator":"IO91SX","grid_symbol":{"table_id_raw":"/","table":"primary","code":"G","overlay":null}},"note":"Retain the encoded Mic-E position and grid independently; do not silently replace the higher-resolution coordinate by a grid center.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":" Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.grid_locator","$.grid_symbol.code","$.grid_symbol.overlay","$.grid_symbol.table","$.grid_symbol.table_id_raw","$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.mic_e.type_marker","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} +{"id":"MIC-265","title":"Grid locator in Mic-E status","profile":"core-1.1","source":"APRS101 p. 55","packet":"N0CALL>S32UVT:`(_f\u001e\u001eOj/>IO91SX/G Ready","outcome":"accept","source_expected":{"header":{"source":"N0CALL","destination":"S32UVT","path":[]},"kind":"position","format":"mic-e","position":{"latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity_digits":0},"symbol":{"table_id_raw":"/","table":"primary","code":"j","overlay":null},"motion":{"speed_knots":20,"speed_kmh":37.04,"course_code":251,"course_deg":251},"mic_e":{"position_comment_bits":"100","position_comment_set":"standard","position_comment":"Returning","longitude_offset":100,"dti_fix":"current","type_marker":">"},"comment":" Ready","grid_locator":"IO91SX","grid_symbol":{"table_id_raw":"/","table":"primary","code":"G","overlay":null}},"note":"Retain the encoded Mic-E position and grid independently; do not silently replace the higher-resolution coordinate by a grid center.","expected":{"type":"packet","header":{"source":"N0CALL","destination":"S32UVT","path":[]},"payload":{"type":"mic_e","comment":"IO91SX/G Ready","latitude_deg":33.427333333333,"longitude_deg":-112.129,"ambiguity":0,"symbol":{"table_id":"/","code":"j"},"message":"returning","fix":"current","device_code":">","extensions":{"motion":{"course_deg":251,"speed_knots":20,"course_code":251}}}},"unmapped":["$.grid_symbol.overlay","$.grid_symbol.table","$.mic_e.longitude_offset","$.mic_e.position_comment_bits","$.mic_e.position_comment_set","$.motion.speed_kmh","$.symbol.overlay","$.symbol.table"]} From b65e23014353c399402bb8e948d24f5f69eedb15 Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Sat, 17 Oct 2026 20:24:10 +0000 Subject: [PATCH 14/14] Fix APRS serialization validation gaps --- packages/aprs/docs/API_COVERAGE.md | 12 +- packages/aprs/src/hamkit/aprs/_codec.py | 13 +- packages/aprs/src/hamkit/aprs/_conformance.py | 23 +++- packages/aprs/src/hamkit/aprs/_mic_e.py | 22 +++- .../tests/packets/test_codec_regressions.py | 113 +++++++++++++++++- packages/aprs/tests/test_conformance.py | 4 +- 6 files changed, 175 insertions(+), 12 deletions(-) diff --git a/packages/aprs/docs/API_COVERAGE.md b/packages/aprs/docs/API_COVERAGE.md index 8101894..bb6d47b 100644 --- a/packages/aprs/docs/API_COVERAGE.md +++ b/packages/aprs/docs/API_COVERAGE.md @@ -86,9 +86,12 @@ NMEA fields, or extension `raw` evidence. Explicit raw models are the exception: coordinate, preventing a second application of the offset. - Compressed motion, range and altitude use their specified logarithmic codes. Field overflow is rejected. No saturation or text truncation is performed. + Numeric overlays use table IDs `a`–`j`; sending compressed positions with + `0`–`9` table IDs is refused as nonconforming. - Mic-E requires a destination consistent with latitude, ambiguity, message and - longitude flags. A mismatch raises `FieldError`; packet headers are not silently - changed. Payload-only Mic-E still requires header context. Longitude degrees + longitude flags. `check_packet` reports mismatches at `$.header.destination`, + and sending raises `ConformanceError`; packet headers are not silently changed. + Payload-only Mic-E still requires header context. Longitude degrees use APRS101's table, so 100–109° are sent as `l`–`u`, never as control bytes. - Mic-E status text follows the APRS 1.2 type codes (aprs.org/aprs12/mic-e-types.txt). `device_code` holds the type byte that @@ -107,11 +110,16 @@ NMEA fields, or extension `raw` evidence. Explicit raw models are the exception: it is reported when parsed and refused when sending, so corrupt data is never re-signed implicitly. Repair it explicitly by clearing `checksum_valid` (a fresh checksum is computed) or by omitting the checksum. + An explicit NMEA symbol must match the packet header; `check_packet` reports + conflicts at `$.payload.symbol`. Payload-only encoding with an explicit symbol + raises `ContextRequiredError`; use `serialize_packet` to supply the header. - Weather encoders convert supported units to wire units, then round to field precision. Uncompressed located wind retains the corpus's explicit `disputed_knots_or_mph` unit on decode; composition of an explicitly metric or mph reading follows the FAP mph interpretation. No interpretation is assigned to a received disputed reading by the core decoder. + Standalone `serialize_payload` applies the same positionless report requirements + as packet serialization, including mandatory slots and the prohibition on snow. - Structured weather data is exempt from the 43-byte position-comment budget. Uncompressed wind (`ddd/sss`) still counts as the 7-byte data extension, leaving 36 comment bytes; with wind in compressed csT all weather data is exempt. diff --git a/packages/aprs/src/hamkit/aprs/_codec.py b/packages/aprs/src/hamkit/aprs/_codec.py index ac6a000..da8429e 100644 --- a/packages/aprs/src/hamkit/aprs/_codec.py +++ b/packages/aprs/src/hamkit/aprs/_codec.py @@ -775,6 +775,14 @@ def _ready_to_send( raise ContextRequiredError( "Mic-E encoding needs the header; use serialize_packet" ) + if ( + isinstance(payload, m.NMEA) + and payload.symbol is not None + and not isinstance(value, Packet) + ): + raise ContextRequiredError( + "NMEA symbol encoding needs the header; use serialize_packet" + ) _require_codecs(payload) findings = _findings(value, policy, max_depth) if findings: @@ -803,7 +811,10 @@ def serialize_packet( def serialize_payload(payload: Payload, *, max_third_party_depth: int = 4) -> bytes: - """Encode an information field alone, with the same validation as packets.""" + """Encode an information field alone, with the same payload validation as packets. + + Mic-E and NMEA with an explicit symbol need header context; use serialize_packet. + """ if isinstance(payload, (Packet, Malformed)): raise TypeError("serialize_payload requires a payload model") options = _options(APRS_IS, "raise", "raise", max_third_party_depth) diff --git a/packages/aprs/src/hamkit/aprs/_conformance.py b/packages/aprs/src/hamkit/aprs/_conformance.py index 62eb518..11bd202 100644 --- a/packages/aprs/src/hamkit/aprs/_conformance.py +++ b/packages/aprs/src/hamkit/aprs/_conformance.py @@ -87,7 +87,12 @@ def _plan(model: type) -> tuple[tuple[str, ...], tuple[_Rule, ...]]: def check(value: Any, policy: EnvelopePolicy | None = None) -> tuple[Diagnostic, ...]: """Every conformance finding in a model graph, with JSON-style paths.""" - result = [] + result: list[Diagnostic] = [] + if isinstance(value, Weather): + result.extend( + Diagnostic("nonconforming", message, path) + for path, message in _weather_report(value, "$", positioned=False) + ) for node, path in walk(value): # Envelope policies apply to the outer header, not encapsulated text. node_policy = policy if path in ("$", "$.header") else None @@ -151,6 +156,18 @@ def _packet(v: Packet, policy: EnvelopePolicy | None) -> Iterator[Finding]: yield from _weather_report(payload, "$.payload", positioned=False) if isinstance(payload, Telemetry) and payload.encoding != "classic": yield "$.payload.encoding", "comment and Mic-E telemetry need a position report" + if isinstance(payload, MicE): + from . import _mic_e + + try: + _mic_e.position_bytes(payload, v.header) + except FieldError as exc: + yield "$.header.destination", str(exc) + if isinstance(payload, NMEA) and payload.symbol is not None: + from ._nmea_codec import header_symbol + + if payload.symbol != header_symbol(v.header): + yield "$.payload.symbol", "NMEA symbol does not match the packet header" # Status and messages ------------------------------------------------------- @@ -485,6 +502,8 @@ def _mic_e_status(v: MicE) -> Iterator[Finding]: except APRSError: yield "$.device_code", "not a declared Mic-E type code" return + if v.extensions.telemetry and any(_telemetry(v.extensions.telemetry, None)): + return # Channel findings are reported when walking the telemetry model. try: device, _, comment = _mic_e.read_status(_mic_e.write_status(v), v.symbol) except APRSError as error: @@ -496,6 +515,8 @@ def _mic_e_status(v: MicE) -> Iterator[Finding]: def _compressed(v: Any) -> Iterator[Finding]: e, csT = v.extensions, v.compression + if v.symbol.table_id in "0123456789": + yield "$.symbol.table_id", "compressed numeric overlays require a-j, not 0-9" if any(getattr(e, n) is not None for n in ("phg", "signal", "area", "bearing")): yield "$.extensions", "not available in the compressed position layout" altitude = e.altitude is not None and e.altitude.encoding == "compressed" diff --git a/packages/aprs/src/hamkit/aprs/_mic_e.py b/packages/aprs/src/hamkit/aprs/_mic_e.py index 31b1569..a6d34fe 100644 --- a/packages/aprs/src/hamkit/aprs/_mic_e.py +++ b/packages/aprs/src/hamkit/aprs/_mic_e.py @@ -150,7 +150,8 @@ def _longitude_degrees_byte(degrees: int, offset: bool) -> int: raise FieldError("Mic-E destination longitude offset does not match longitude") -def write(p: MicE, header: Header) -> bytes: +def position_bytes(p: MicE, header: Header) -> bytes: + """Check the joint header/position fields and encode the longitude bytes.""" p = replace( p, latitude_deg=dao_offset(p.latitude_deg, p.extensions.dao, "latitude", -1), @@ -170,6 +171,11 @@ def write(p: MicE, header: Header) -> bytes: degrees, minutes = divmod(units, 6000) minutes, hundredths = divmod(minutes, 100) degree_byte = _longitude_degrees_byte(degrees, offset) + return bytes([degree_byte, minutes + (88 if minutes < 10 else 28), hundredths + 28]) + + +def write(p: MicE, header: Header) -> bytes: + position = position_bytes(p, header) m = p.extensions.motion if m is None or m.course_deg is None or m.speed_knots is None: raise FieldError("Mic-E requires course and speed") @@ -177,11 +183,9 @@ def write(p: MicE, header: Header) -> bytes: if not 0 <= speed <= 799 or not 0 <= course <= 360: raise FieldError("Mic-E motion outside wire range") body = ( - bytes( + position + + bytes( [ - degree_byte, - minutes + (88 if minutes < 10 else 28), - hundredths + 28, speed // 10 + 28, speed % 10 * 10 + course // 100 + 28, course % 100 + 28, @@ -275,6 +279,14 @@ def write_status(p: MicE) -> bytes: values = (values[0], None, values[1], None, None) if len(values) != 5 or t.digital: raise FieldError("invalid Mic-E telemetry channels") + two_channel = ( + t.encoding == "mic_e_hex" + and values[1] is None + and values[3:] == (None, None) + ) + present = (values[0], values[2]) if two_channel else values + if any(v is None or v != int(v) or not 0 <= v <= 255 for v in present): + raise FieldError("Mic-E telemetry channels require integers in 0..255") if t.encoding == "mic_e_binary": first = b"\x1d" + bytes(int(cast(float, v)) for v in values) elif values[1] is None and values[3:] == (None, None): diff --git a/packages/aprs/tests/packets/test_codec_regressions.py b/packages/aprs/tests/packets/test_codec_regressions.py index c3c6930..cfd51bb 100644 --- a/packages/aprs/tests/packets/test_codec_regressions.py +++ b/packages/aprs/tests/packets/test_codec_regressions.py @@ -339,7 +339,7 @@ def test_mic_e_type_codes_are_checked_before_sending(): def mic_e(**fields): motion = a.Extensions(motion=a.Motion(90, 10)) fields.setdefault("extensions", motion) - payload = a.MicE(33.4277, -112.12, a.Symbol("/", ">"), message="off_duty") + payload = packet(MIC_E).payload return a.Packet( a.Header("N0CALL", "S32UVT"), dataclasses.replace(payload, **fields) ) @@ -546,3 +546,114 @@ def test_invalid_object_timestamp_keeps_recovered_fields(): "Test", ) assert recovered["latitude_deg"] == pytest.approx(49.058333333) + + +@pytest.mark.parametrize("digit", "0123456789") +def test_compressed_numeric_overlay_is_refused_before_sending(digit): + p = a.Packet( + a.Header("N0CALL", "APRS"), + a.Position( + 49, -72, a.Symbol(digit, ">"), compression=a.Compression(ignored=True) + ), + ) + assert [d.path for d in a.check_packet(p)] == ["$.payload.symbol.table_id"] + for send, value in ( + (a.serialize_packet, p), + (a.validate_packet, p), + (a.serialize_payload, p.payload), + ): + with pytest.raises(a.ConformanceError, match="compressed numeric overlays"): + send(value) + # Explicit compressed overlays retain their wire spelling and round-trip. + compressed = dataclasses.replace( + p.payload, symbol=a.Symbol(chr(ord("a") + int(digit)), ">") + ) + assert a.parse_payload(a.serialize_payload(compressed)) == compressed + uncompressed = dataclasses.replace(p.payload, compression=None) + assert a.parse_payload(a.serialize_payload(uncompressed)) == uncompressed + + +@pytest.mark.parametrize("encoding", ["mic_e_hex", "mic_e_binary"]) +@pytest.mark.parametrize( + "channels", + [(999, 2, 3, 4, 5), (-1, 2, 3, 4, 5), (1.5, 2, 3, 4, 5), (1, None, 3, 4, 5)], +) +def test_invalid_mic_e_channels_produce_findings(encoding, channels): + original = packet(MIC_E) + payload = dataclasses.replace( + original.payload, + extensions=dataclasses.replace( + original.payload.extensions, + telemetry=a.Telemetry(channels, encoding=encoding), + ), + ) + p = dataclasses.replace(original, payload=payload) + index = 1 if channels[1] is None else 0 + findings = a.check_packet(p) + assert [d.path for d in findings] == [ + f"$.payload.extensions.telemetry.analog[{index}]" + ] + for send in (a.serialize_packet, a.validate_packet, a.serialize_tnc2_line): + with pytest.raises(a.ConformanceError) as caught: + send(p) + assert caught.value.diagnostics == findings + assert a.from_json(a.to_json(p)) == p + + +@pytest.mark.parametrize( + "tail,paths", + [ + (b"c090s010", ["gust", "temperature"]), + (b"c090s010g020t077s001", ["snow_24h"]), + ], +) +def test_standalone_weather_has_packet_report_checks(tail, paths): + p = packet(b"N0CALL>APRS:_10171200" + tail) + assert [d.path for d in a.check_packet(p)] == [ + "$.payload." + name for name in paths + ] + with pytest.raises(a.ConformanceError) as caught: + a.serialize_payload(p.payload) + assert [d.path for d in caught.value.diagnostics] == ["$." + name for name in paths] + with pytest.raises(a.ConformanceError): + a.serialize_packet(p) + complete = a.parse_payload(b"_10171200c...s...g...t...") + assert a.parse_payload(a.serialize_payload(complete)) == complete + + +@pytest.mark.parametrize("destination", ["APRS", "T32UVT", "S32U5T", "S32UV4"]) +@pytest.mark.parametrize("nested", [False, True]) +def test_mic_e_header_conflicts_are_checked_without_envelope_limits( + destination, nested +): + p = dataclasses.replace(packet(MIC_E), header=a.Header("N0CALL", destination)) + if nested: + p = a.Packet(a.Header("N0GATE", "APRS"), a.ThirdParty(p)) + prefix = "$.payload.packet" if nested else "$" + for policy in (a.APRS_IS, a.EnvelopePolicy(".*", ".*", ".*")): + findings = a.check_packet(p, policy=policy) + assert [d.path for d in findings] == [prefix + ".header.destination"] + for send in (a.serialize_packet, a.validate_packet): + with pytest.raises(a.ConformanceError) as caught: + send(p, policy=policy) + assert caught.value.diagnostics == findings + + +def test_nmea_symbol_requires_matching_header_context(): + p = packet(b"N0CALL-11>APRS:$GPGLL,4916.45,N,12311.12,W,225444,A") + assert p.payload.symbol == a.Symbol("/", "O") + assert a.check_packet(p) == () + assert packet(a.serialize_packet(p)).payload == p.payload + with pytest.raises(a.ContextRequiredError, match="NMEA symbol"): + a.serialize_payload(p.payload) + changed = dataclasses.replace(p, header=a.Header("N0CALL-9", "APRS")) + for policy in (a.APRS_IS, a.EnvelopePolicy(".*", ".*", ".*")): + findings = a.check_packet(changed, policy=policy) + assert [d.path for d in findings] == ["$.payload.symbol"] + with pytest.raises(a.ConformanceError) as caught: + a.serialize_packet(changed, policy=policy) + assert caught.value.diagnostics == findings + # Decoding with the new header is still permissive and derives its symbol. + assert packet( + a.serialize_packet(p).replace(b"N0CALL-11", b"N0CALL-9") + ).payload.symbol == a.Symbol("/", ">") diff --git a/packages/aprs/tests/test_conformance.py b/packages/aprs/tests/test_conformance.py index f14614e..9e873aa 100644 --- a/packages/aprs/tests/test_conformance.py +++ b/packages/aprs/tests/test_conformance.py @@ -390,7 +390,7 @@ def test_compressed_layout(self) -> None: def test_mic_e_motion_and_telemetry(self) -> None: self.assertEqual( findings(a.MicE(1, 2, SYMBOL, message="en_route")), - {"$.payload.extensions.motion"}, + {"$.header.destination", "$.payload.extensions.motion"}, ) telemetry = a.Telemetry((1, 2), sequence=1, encoding="base91_comment") self.assertEqual( @@ -403,7 +403,7 @@ def test_mic_e_motion_and_telemetry(self) -> None: extensions=a.Extensions(motion=a.Motion(), telemetry=telemetry), ) ), - set(), + {"$.header.destination"}, )