diff --git a/CHANGELOG.md b/CHANGELOG.md index 24b896e..3939771 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,6 @@ # CHANGELOG +## Unreleased +- parser: Added support for OGNLT24 (LT24), OGSKYL (Skylines), OGSPID (Spider) and OGSPOT (Spot) ## 0.8.2: - 2018-01-20 - parser: Better validation of timestamp, lat/lon and altitude diff --git a/ogn/parser/aprs_comment/lt24_parser.py b/ogn/parser/aprs_comment/lt24_parser.py index 787391c..644f9bb 100644 --- a/ogn/parser/aprs_comment/lt24_parser.py +++ b/ogn/parser/aprs_comment/lt24_parser.py @@ -1,7 +1,7 @@ import re from ogn.parser.utils import fpm2ms -from ogn.parser.pattern import PATTERN_LT24_BEACON +from ogn.parser.pattern import PATTERN_LT24_POSITION_COMMENT from .base import BaseParser @@ -12,7 +12,7 @@ class LT24Parser(BaseParser): @staticmethod def parse_position(aprs_comment): - ac_match = re.search(PATTERN_LT24_BEACON, aprs_comment) + ac_match = re.search(PATTERN_LT24_POSITION_COMMENT, aprs_comment) return {'id': ac_match.group('id'), 'climb_rate': int(ac_match.group('climb_rate')) * fpm2ms if ac_match.group('climb_rate') else None, 'source': ac_match.group('source') if ac_match.group('source') else None} diff --git a/ogn/parser/aprs_comment/naviter_parser.py b/ogn/parser/aprs_comment/naviter_parser.py index e3a95c1..95edf58 100644 --- a/ogn/parser/aprs_comment/naviter_parser.py +++ b/ogn/parser/aprs_comment/naviter_parser.py @@ -1,6 +1,6 @@ import re -from ogn.parser.pattern import PATTERN_NAVITER_BEACON +from ogn.parser.pattern import PATTERN_NAVITER_POSITION_COMMENT from ogn.parser.utils import fpm2ms from .base import BaseParser @@ -12,7 +12,7 @@ class NaviterParser(BaseParser): @staticmethod def parse_position(aprs_comment): - match = re.search(PATTERN_NAVITER_BEACON, aprs_comment) + match = re.search(PATTERN_NAVITER_POSITION_COMMENT, aprs_comment) return {'stealth': (int(match.group('details'), 16) & 0b1000000000000000) >> 15 == 1, 'do_not_track': (int(match.group('details'), 16) & 0b0100000000000000) >> 14 == 1, 'aircraft_type': (int(match.group('details'), 16) & 0b0011110000000000) >> 10, diff --git a/ogn/parser/aprs_comment/receiver_parser.py b/ogn/parser/aprs_comment/receiver_parser.py index e8272ca..0e6d851 100644 --- a/ogn/parser/aprs_comment/receiver_parser.py +++ b/ogn/parser/aprs_comment/receiver_parser.py @@ -1,6 +1,6 @@ import re -from ogn.parser.pattern import PATTERN_RECEIVER_POSITION, PATTERN_RECEIVER_STATUS +from ogn.parser.pattern import PATTERN_RECEIVER_POSITION_COMMENT, PATTERN_RECEIVER_STATUS_COMMENT from .base import BaseParser @@ -14,12 +14,12 @@ class ReceiverParser(BaseParser): if aprs_comment is None: return {} else: - match = re.search(PATTERN_RECEIVER_POSITION, aprs_comment) + match = re.search(PATTERN_RECEIVER_POSITION_COMMENT, aprs_comment) return {'user_comment': match.group('user_comment') if match.group('user_comment') else None} @staticmethod def parse_status(aprs_comment): - match = re.search(PATTERN_RECEIVER_STATUS, aprs_comment) + match = re.search(PATTERN_RECEIVER_STATUS_COMMENT, aprs_comment) return {'version': match.group('version'), 'platform': match.group('platform'), 'cpu_load': float(match.group('cpu_load')), diff --git a/ogn/parser/aprs_comment/skylines_parser.py b/ogn/parser/aprs_comment/skylines_parser.py index 32f3658..c0920f6 100644 --- a/ogn/parser/aprs_comment/skylines_parser.py +++ b/ogn/parser/aprs_comment/skylines_parser.py @@ -1,7 +1,7 @@ import re from ogn.parser.utils import fpm2ms -from ogn.parser.pattern import PATTERN_SKYLINES_BEACON +from ogn.parser.pattern import PATTERN_SKYLINES_POSITION_COMMENT from .base import BaseParser @@ -12,6 +12,6 @@ class SkylinesParser(BaseParser): @staticmethod def parse_position(aprs_comment): - ac_match = re.search(PATTERN_SKYLINES_BEACON, aprs_comment) + ac_match = re.search(PATTERN_SKYLINES_POSITION_COMMENT, aprs_comment) return {'id': ac_match.group('id'), 'climb_rate': int(ac_match.group('climb_rate')) * fpm2ms if ac_match.group('climb_rate') else None} diff --git a/ogn/parser/aprs_comment/spider_parser.py b/ogn/parser/aprs_comment/spider_parser.py index bcc431a..c42e1e6 100644 --- a/ogn/parser/aprs_comment/spider_parser.py +++ b/ogn/parser/aprs_comment/spider_parser.py @@ -1,6 +1,6 @@ import re -from ogn.parser.pattern import PATTERN_SPIDER_BEACON +from ogn.parser.pattern import PATTERN_SPIDER_POSITION_COMMENT from .base import BaseParser @@ -11,7 +11,7 @@ class SpiderParser(BaseParser): @staticmethod def parse_position(aprs_comment): - ac_match = re.search(PATTERN_SPIDER_BEACON, aprs_comment) + ac_match = re.search(PATTERN_SPIDER_POSITION_COMMENT, aprs_comment) return {'id': ac_match.group('id'), 'signal_strength': int(ac_match.group('signal_strength')) if ac_match.group('signal_strength') else None, 'spider_id': ac_match.group('spider_id') if ac_match.group('spider_id') else None, diff --git a/ogn/parser/aprs_comment/spot_parser.py b/ogn/parser/aprs_comment/spot_parser.py index 684d6f2..2e64ead 100644 --- a/ogn/parser/aprs_comment/spot_parser.py +++ b/ogn/parser/aprs_comment/spot_parser.py @@ -1,6 +1,6 @@ import re -from ogn.parser.pattern import PATTERN_SPOT_BEACON +from ogn.parser.pattern import PATTERN_SPOT_POSITION_COMMENT from .base import BaseParser @@ -11,7 +11,7 @@ class SpotParser(BaseParser): @staticmethod def parse_position(aprs_comment): - ac_match = re.search(PATTERN_SPOT_BEACON, aprs_comment) + ac_match = re.search(PATTERN_SPOT_POSITION_COMMENT, aprs_comment) return {'id': ac_match.group('id'), 'model': int(ac_match.group('model')) if ac_match.group('model') else None, 'status': ac_match.group('status') if ac_match.group('status') else None} diff --git a/ogn/parser/aprs_comment/tracker_parser.py b/ogn/parser/aprs_comment/tracker_parser.py index 6b751d1..6dadf21 100644 --- a/ogn/parser/aprs_comment/tracker_parser.py +++ b/ogn/parser/aprs_comment/tracker_parser.py @@ -1,6 +1,6 @@ import re -from ogn.parser.pattern import PATTERN_TRACKER_BEACON_POSITION, PATTERN_TRACKER_BEACON_STATUS +from ogn.parser.pattern import PATTERN_TRACKER_POSITION_COMMENT, PATTERN_TRACKER_STATUS_COMMENT from ogn.parser.utils import fpm2ms from .base import BaseParser @@ -12,7 +12,7 @@ class TrackerParser(BaseParser): @staticmethod def parse_position(aprs_comment): - match = re.search(PATTERN_TRACKER_BEACON_POSITION, aprs_comment) + match = re.search(PATTERN_TRACKER_POSITION_COMMENT, aprs_comment) return {'address_type': int(match.group('details'), 16) & 0b00000011, 'aircraft_type': (int(match.group('details'), 16) & 0b01111100) >> 2, 'stealth': (int(match.group('details'), 16) & 0b10000000) >> 7 == 1, @@ -29,7 +29,7 @@ class TrackerParser(BaseParser): @staticmethod def parse_status(aprs_comment): - match = re.search(PATTERN_TRACKER_BEACON_STATUS, aprs_comment) + match = re.search(PATTERN_TRACKER_STATUS_COMMENT, aprs_comment) return {'hardware_version': int(match.group('hardware_version')) if match.group('hardware_version') else None, 'software_version': int(match.group('software_version')) if match.group('software_version') else None, 'gps_satellites': int(match.group('gps_satellites')) if match.group('gps_satellites') else None, diff --git a/ogn/parser/pattern.py b/ogn/parser/pattern.py index a2091cf..e183c7f 100644 --- a/ogn/parser/pattern.py +++ b/ogn/parser/pattern.py @@ -4,37 +4,37 @@ import re PATTERN_APRS_POSITION = re.compile(r"^(?P.+?)>(?P[A-Z0-9]+),((?P[A-Za-z0-9]+)\*)?.*,(?P.+?):/(?P