diff --git a/CHANGELOG.md b/CHANGELOG.md index aad2048..d3cfa9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # CHANGELOG ## 0.9.4: unreleased - parser: Added support for OGINREACH (Garmin inReach) beacons +- parser: Added support for OGFLYM (Flymaster) beacons +- parser: Added support for comments in tracker beacons (OGNTRK) ## 0.9.3: - 2019-06-03 - parser: Added Generic parser for unknown formats diff --git a/ogn/parser/aprs_comment/generic_parser.py b/ogn/parser/aprs_comment/generic_parser.py index 2676704..775ec08 100644 --- a/ogn/parser/aprs_comment/generic_parser.py +++ b/ogn/parser/aprs_comment/generic_parser.py @@ -2,8 +2,8 @@ from .base import BaseParser class GenericParser(BaseParser): - def __init__(self): - self.beacon_type = 'generic' + def __init__(self, beacon_type='unknown'): + self.beacon_type = beacon_type def parse_position(self, aprs_comment): return {'comment': aprs_comment} diff --git a/ogn/parser/parse.py b/ogn/parser/parse.py index abeb4be..046c258 100644 --- a/ogn/parser/parse.py +++ b/ogn/parser/parse.py @@ -56,7 +56,7 @@ def parse_aprs(message, reference_timestamp=None): else: match = re.search(PATTERN_APRS, message) if match: - aprs_type = 'position' if match.group('aprs_type') == '/' else 'status' + aprs_type = 'position' if match.group('aprs_type') == '/' else 'status' if match.group('aprs_type') == '>' else 'unknown' result.update({'aprs_type': aprs_type}) aprs_body = match.group('aprs_body') if aprs_type == 'position': @@ -90,7 +90,7 @@ def parse_aprs(message, reference_timestamp=None): 'timestamp': createTimestamp(match_status.group('time'), reference_timestamp), 'comment': match_status.group('comment') if match_status.group('comment') else ""}) else: - raise AprsParseError(message) + raise NotImplementedError(message) else: raise AprsParseError(message) @@ -102,13 +102,14 @@ dstcall_parser_mapping = {'APRS': OgnParser(), 'OGFLR': FlarmParser(), 'OGNTRK': TrackerParser(), 'OGNSDR': ReceiverParser(), + 'OGFLYM': GenericParser(beacon_type='flymaster'), 'OGINREACH': InreachParser(), 'OGLT24': LT24Parser(), 'OGNAVI': NaviterParser(), 'OGSKYL': SkylinesParser(), 'OGSPID': SpiderParser(), 'OGSPOT': SpotParser(), - 'GENERIC': GenericParser(), + 'GENERIC': GenericParser(beacon_type='unknown'), } diff --git a/ogn/parser/pattern.py b/ogn/parser/pattern.py index c66f0db..2c36b61 100644 --- a/ogn/parser/pattern.py +++ b/ogn/parser/pattern.py @@ -1,6 +1,6 @@ import re -PATTERN_APRS = re.compile(r"^(?P.+?)>(?P[A-Z0-9]+),((?P[A-Za-z0-9]+)\*)?.*,(?P.+?):(?P(/|>))(?P.*)$") +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