diff --git a/CHANGELOG.md b/CHANGELOG.md index 73730f2..339fe93 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # CHANGELOG ## Unreleased +- parser: Added support for heared aircrafts ## 0.7.1 - 2017-06-05 - parser: Bugfix, error_count in aircraft beacon is a int diff --git a/ogn/parser/parse.py b/ogn/parser/parse.py index f52c192..f04c5d1 100644 --- a/ogn/parser/parse.py +++ b/ogn/parser/parse.py @@ -57,7 +57,8 @@ def parse_ogn_aircraft_beacon(aprs_comment): 'software_version': float(ac_match.group('flarm_software_version')) if ac_match.group('flarm_software_version') else None, 'hardware_version': int(ac_match.group('flarm_hardware_version'), 16) if ac_match.group('flarm_hardware_version') else None, 'real_address': ac_match.group('flarm_id') if ac_match.group('flarm_id') else None, - 'signal_power': float(ac_match.group('signal_power')) if ac_match.group('signal_power') else None} + 'signal_power': float(ac_match.group('signal_power')) if ac_match.group('signal_power') else None, + 'proximity': [hear[4:] for hear in ac_match.group('proximity').split(" ")] if ac_match.group('proximity') else None} else: return None diff --git a/ogn/parser/pattern.py b/ogn/parser/pattern.py index 94f8010..c166e89 100644 --- a/ogn/parser/pattern.py +++ b/ogn/parser/pattern.py @@ -66,5 +66,5 @@ PATTERN_AIRCRAFT_BEACON = re.compile(r""" (?:h(?P[\dA-F]{2})\s?)? (?:r(?P[\dA-F]+)\s?)? (?:(?P[+-][\d.]+)dBm\s?)? - (?:hear(?P.+))? + (?:(?P(hear[\dA-F]{4}\s?)+))? """, re.VERBOSE | re.MULTILINE) diff --git a/tests/parser/test_aircraft_beacon.py b/tests/parser/test_aircraft_beacon.py index f3a6f1f..c473058 100644 --- a/tests/parser/test_aircraft_beacon.py +++ b/tests/parser/test_aircraft_beacon.py @@ -20,13 +20,12 @@ class TestStringMethods(unittest.TestCase): self.assertEqual(aircraft_beacon['frequency_offset'], 51.2) self.assertEqual(aircraft_beacon['gps_status'], '4x5') - @unittest.skip("heared aircrafts not supported yet") def test_hear(self): aircraft_beacon = parse_ogn_aircraft_beacon("id0ADDA5BA -454fpm -1.1rot 8.8dB 0e +51.2kHz gps4x5 hear1084 hearB597 hearB598") - self.assertEqual(len(aircraft_beacon['heared_aircraft_addresses']), 3) - self.assertEqual(aircraft_beacon['heared_aircraft_addresses'][0], '1084') - self.assertEqual(aircraft_beacon['heared_aircraft_addresses'][1], 'B597') - self.assertEqual(aircraft_beacon['heared_aircraft_addresses'][2], 'B598') + self.assertEqual(len(aircraft_beacon['proximity']), 3) + self.assertEqual(aircraft_beacon['proximity'][0], '1084') + self.assertEqual(aircraft_beacon['proximity'][1], 'B597') + self.assertEqual(aircraft_beacon['proximity'][2], 'B598') def test_stealth(self): aircraft_beacon = parse_ogn_aircraft_beacon("id0ADD1234 -454fpm -1.1rot 8.8dB 0e +51.2kHz gps4x5 hear1084 hearB597 hearB598")