GPS: status to quality and refactoring

pull/62/head
Konstantin Gründger 2018-04-20 23:57:51 +02:00
rodzic 80b5cc4a48
commit 8cff2a2c4d
6 zmienionych plików z 18 dodań i 16 usunięć

Wyświetl plik

@ -20,10 +20,11 @@ class FlarmParser(BaseParser):
'climb_rate': int(ac_match.group('climb_rate')) * fpm2ms,
'turn_rate': float(ac_match.group('turn_rate')),
'signal_quality': float(ac_match.group('signal_quality')),
'error_count': int(ac_match.group('errors')),
'error_count': int(ac_match.group('error_count')),
'frequency_offset': float(ac_match.group('frequency_offset')),
'gps_status': ac_match.group('gps_accuracy') if ac_match.group('gps_accuracy') else None,
'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,
'gps_quality': {'horizontal': int(ac_match.group('gps_quality_horizontal')),
'vertical': int(ac_match.group('gps_quality_vertical'))} if ac_match.group('gps_quality') else None,
'software_version': float(ac_match.group('software_version')) if ac_match.group('software_version') else None,
'hardware_version': int(ac_match.group('hardware_version'), 16) if ac_match.group('hardware_version') else None,
'real_address': ac_match.group('real_address') if ac_match.group('real_address') else None,
'signal_power': float(ac_match.group('signal_power')) if ac_match.group('signal_power') else None}

Wyświetl plik

@ -41,7 +41,8 @@ class OgnParser(BaseParser):
'signal_quality': float(ac_match.group('signal_quality')) if ac_match.group('signal_quality') else None,
'error_count': int(ac_match.group('errors')) if ac_match.group('errors') else None,
'frequency_offset': float(ac_match.group('frequency_offset')) if ac_match.group('frequency_offset') else None,
'gps_status': ac_match.group('gps_accuracy') if ac_match.group('gps_accuracy') else None,
'gps_quality': {'horizontal': int(ac_match.group('gps_quality_horizontal')),
'vertical': int(ac_match.group('gps_quality_vertical'))} if ac_match.group('gps_quality') else None,
'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,

Wyświetl plik

@ -21,7 +21,7 @@ class TrackerParser(BaseParser):
'turn_rate': float(match.group('turn_rate')) if match.group('turn_rate') else None,
'flightlevel': float(match.group('flight_level')) if match.group('flight_level') else None,
'signal_quality': float(match.group('signal_quality')) if match.group('signal_quality') else None,
'error_count': int(match.group('errors')) if match.group('errors') else None,
'error_count': int(match.group('error_count')) if match.group('error_count') else None,
'frequency_offset': float(match.group('frequency_offset')) if match.group('frequency_offset') else None,
'gps_status': match.group('gps_accuracy') if match.group('gps_accuracy') else None,
'software_version': float(match.group('flarm_software_version')) if match.group('flarm_software_version') else None,

Wyświetl plik

@ -16,12 +16,12 @@ PATTERN_FLARM_POSITION_COMMENT = re.compile(r"""
(?:(?P<climb_rate>[+-]\d+?)fpm\s)?
(?:(?P<turn_rate>[+-][\d.]+?)rot\s)?
(?:(?P<signal_quality>[\d.]+?)dB\s)?
(?:(?P<errors>\d+)e\s)?
(?:(?P<error_count>\d+)e\s)?
(?:(?P<frequency_offset>[+-][\d.]+?)kHz\s?)?
(?:gps(?P<gps_accuracy>\d+x\d+)\s?)?
(?:s(?P<flarm_software_version>[\d.]+)\s?)?
(?:h(?P<flarm_hardware_version>[\dA-F]{2})\s?)?
(?:r(?P<flarm_id>[\dA-F]+)\s?)?
(?:gps(?P<gps_quality>(?P<gps_quality_horizontal>(\d+))x(?P<gps_quality_vertical>(\d+)))\s?)?
(?:s(?P<software_version>[\d.]+)\s?)?
(?:h(?P<hardware_version>[\dA-F]{2})\s?)?
(?:r(?P<real_address>[\dA-F]+)\s?)?
(?:(?P<signal_power>[+-][\d.]+)dBm\s?)?
""", re.VERBOSE | re.MULTILINE)
@ -61,7 +61,7 @@ PATTERN_TRACKER_POSITION_COMMENT = re.compile("""
(?:(?P<turn_rate>[+-][\d.]+?)rot\s)?
(?:FL(?P<flight_level>[\d.]+)\s)?
(?:(?P<signal_quality>[\d.]+?)dB\s)?
(?:(?P<errors>\d+)e\s)?
(?:(?P<error_count>\d+)e\s)?
(?:(?P<frequency_offset>[+-][\d.]+?)kHz\s?)?
(?:gps(?P<gps_accuracy>\d+x\d+)\s?)?
(?:s(?P<flarm_software_version>[\d.]+)\s?)?
@ -166,7 +166,7 @@ PATTERN_AIRCRAFT_BEACON = re.compile(r"""
(?:(?P<signal_quality>[\d.]+?)dB\s)?
(?:(?P<errors>\d+)e\s)?
(?:(?P<frequency_offset>[+-][\d.]+?)kHz\s?)?
(?:gps(?P<gps_accuracy>\d+x\d+)\s?)?
(?:gps(?P<gps_quality>(?P<gps_quality_horizontal>(\d+))x(?P<gps_quality_vertical>(\d+)))\s?)?
(?:s(?P<flarm_software_version>[\d.]+)\s?)?
(?:h(?P<flarm_hardware_version>[\dA-F]{2})\s?)?
(?:r(?P<flarm_id>[\dA-F]+)\s?)?

Wyświetl plik

@ -17,7 +17,7 @@ class TestStringMethods(unittest.TestCase):
self.assertEqual(message['signal_quality'], 3.5)
self.assertEqual(message['error_count'], 2)
self.assertEqual(message['frequency_offset'], -8.7)
self.assertEqual(message['gps_status'], '1x2')
self.assertEqual(message['gps_quality'], {'horizontal': 1, 'vertical': 2})
self.assertEqual(message['software_version'], 6.09)
self.assertEqual(message['hardware_version'], 67)
self.assertEqual(message['real_address'], "DF0267")

Wyświetl plik

@ -20,7 +20,7 @@ class TestStringMethods(unittest.TestCase):
self.assertEqual(message['signal_quality'], 8.8)
self.assertEqual(message['error_count'], 0)
self.assertEqual(message['frequency_offset'], 51.2)
self.assertEqual(message['gps_status'], '4x5')
self.assertEqual(message['gps_quality'], {'horizontal': 4, 'vertical': 5})
self.assertEqual(len(message['proximity']), 3)
self.assertEqual(message['proximity'][0], '1084')
self.assertEqual(message['proximity'][1], 'B597')