From 342af0a2532bf77277f5063439bf7f5433247dfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20Gru=CC=88ndger?= Date: Sat, 8 Jun 2019 14:48:42 +0200 Subject: [PATCH] Add support for capturs (fixes #42) --- CHANGELOG.md | 1 + ogn/parser/parse.py | 3 ++- ogn/parser/pattern.py | 2 +- tests/parser/test_parse.py | 3 +++ tests/parser/test_parse_aprs.py | 7 +++++++ tests/parser/valid_beacon_data/capturs.txt | 11 +++++++++++ 6 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 tests/parser/valid_beacon_data/capturs.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index d3cfa9d..28c0e00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ - parser: Added support for OGINREACH (Garmin inReach) beacons - parser: Added support for OGFLYM (Flymaster) beacons - parser: Added support for comments in tracker beacons (OGNTRK) +- parser: Added support for OGCAPT (Capturs) beacons ## 0.9.3: - 2019-06-03 - parser: Added Generic parser for unknown formats diff --git a/ogn/parser/parse.py b/ogn/parser/parse.py index 046c258..f356aff 100644 --- a/ogn/parser/parse.py +++ b/ogn/parser/parse.py @@ -76,7 +76,7 @@ def parse_aprs(message, reference_timestamp=None): 'symbolcode': match_position.group('symbol'), 'track': int(match_position.group('course')) if match_position.group('course_extension') else None, 'ground_speed': int(match_position.group('ground_speed')) * KNOTS_TO_MS / KPH_TO_MS if match_position.group('ground_speed') else None, - 'altitude': int(match_position.group('altitude')) * FEETS_TO_METER, + 'altitude': int(match_position.group('altitude')) * FEETS_TO_METER if match_position.group('altitude') else None, 'comment': match_position.group('comment') if match_position.group('comment') else ""}) else: raise AprsParseError(message) @@ -102,6 +102,7 @@ dstcall_parser_mapping = {'APRS': OgnParser(), 'OGFLR': FlarmParser(), 'OGNTRK': TrackerParser(), 'OGNSDR': ReceiverParser(), + 'OGCAPT': GenericParser(beacon_type='capturs'), 'OGFLYM': GenericParser(beacon_type='flymaster'), 'OGINREACH': InreachParser(), 'OGLT24': LT24Parser(), diff --git a/ogn/parser/pattern.py b/ogn/parser/pattern.py index 3727935..9896943 100644 --- a/ogn/parser/pattern.py +++ b/ogn/parser/pattern.py @@ -1,7 +1,7 @@ import re PATTERN_APRS = re.compile(r"^(?P.+?)>(?P[A-Z0-9]+),((?P[A-Za-z0-9]+)\*)?.*,(?P.+?):(?P(.))(?P.*)$") -PATTERN_APRS_POSITION = re.compile(r"^(?P