pull/62/head
Konstantin Gründger 2018-04-21 10:13:49 +02:00
rodzic 8cff2a2c4d
commit 572d8bbc54
10 zmienionych plików z 24 dodań i 24 usunięć

Wyświetl plik

@ -12,20 +12,20 @@ class OgnParser(BaseParser):
def parse(self, aprs_comment, aprs_type):
if not aprs_comment:
return {'beacon_type': 'receiver'}
return {'beacon_type': 'aprs_receiver'}
ac_data = self.parse_aircraft_beacon(aprs_comment)
if ac_data:
ac_data.update({'beacon_type': 'aircraft'})
ac_data.update({'beacon_type': 'aprs_aircraft'})
return ac_data
rc_data = self.parse_receiver_beacon(aprs_comment)
if rc_data:
rc_data.update({'beacon_type': 'receiver'})
rc_data.update({'beacon_type': 'aprs_receiver'})
return rc_data
else:
return {'user_comment': aprs_comment,
'beacon_type': 'receiver'}
'beacon_type': 'aprs_receiver'}
@staticmethod
def parse_aircraft_beacon(aprs_comment):

Wyświetl plik

@ -15,4 +15,4 @@ class SpiderParser(BaseParser):
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,
'gps_status': ac_match.group('gps_status') if ac_match.group('gps_status') else None}
'gps_quality': ac_match.group('gps_quality') if ac_match.group('gps_quality') else None}

Wyświetl plik

@ -23,9 +23,9 @@ class TrackerParser(BaseParser):
'signal_quality': float(match.group('signal_quality')) if match.group('signal_quality') 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,
'hardware_version': int(match.group('flarm_hardware_version'), 16) if match.group('flarm_hardware_version') else None}
'gps_quality': {'horizontal': int(match.group('gps_quality_horizontal')),
'vertical': int(match.group('gps_quality_vertical'))} if match.group('gps_quality') else None,
'signal_power': float(match.group('signal_power')) if match.group('signal_power') else None}
@staticmethod
def parse_status(aprs_comment):

Wyświetl plik

@ -46,7 +46,7 @@ PATTERN_SPIDER_POSITION_COMMENT = re.compile("""
id(?P<id>[\d-]+)\s
(?P<signal_strength>[+-]\d+)dB\s
(?P<spider_id>[A-Z]+)\s
(?P<gps_status>.+)
(?P<gps_quality>.+)
""", re.VERBOSE | re.MULTILINE)
PATTERN_SPOT_POSITION_COMMENT = re.compile("""
@ -63,9 +63,8 @@ PATTERN_TRACKER_POSITION_COMMENT = re.compile("""
(?:(?P<signal_quality>[\d.]+?)dB\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?)?
(?:gps(?P<gps_quality>(?P<gps_quality_horizontal>(\d+))x(?P<gps_quality_vertical>(\d+)))\s?)?
(?:(?P<signal_power>[+-][\d.]+)dBm\s?)?
""", re.VERBOSE | re.MULTILINE)
PATTERN_TRACKER_STATUS_COMMENT = re.compile("""

Wyświetl plik

@ -22,22 +22,22 @@ class TestStringMethods(unittest.TestCase):
print(e)
def test_aprs_aircraft_beacons(self):
self.parse_valid_beacon_data_file(filename='aprs_aircraft.txt', beacon_type='aircraft')
self.parse_valid_beacon_data_file(filename='aprs_aircraft.txt', beacon_type='aprs_aircraft')
def test_aprs_receiver_beacons(self):
self.parse_valid_beacon_data_file(filename='aprs_receiver.txt', beacon_type='receiver')
self.parse_valid_beacon_data_file(filename='aprs_receiver.txt', beacon_type='aprs_receiver')
def test_aprs_fanet_beacons(self):
self.parse_valid_beacon_data_file(filename='fanet.txt', beacon_type='fanet')
def test_ogn_flarm_beacons(self):
self.parse_valid_beacon_data_file(filename='ogn_flarm.txt', beacon_type='flarm')
def test_flarm_beacons(self):
self.parse_valid_beacon_data_file(filename='flarm.txt', beacon_type='flarm')
def test_ogn_receiver_beacons(self):
self.parse_valid_beacon_data_file(filename='ogn_receiver.txt', beacon_type='receiver')
def test_receiver_beacons(self):
self.parse_valid_beacon_data_file(filename='receiver.txt', beacon_type='receiver')
def test_ogn_tracker_beacons(self):
self.parse_valid_beacon_data_file(filename='ogn_tracker.txt', beacon_type='tracker')
def test_tracker_beacons(self):
self.parse_valid_beacon_data_file(filename='tracker.txt', beacon_type='tracker')
def test_lt24_beacons(self):
self.parse_valid_beacon_data_file(filename='lt24.txt', beacon_type='lt24')

Wyświetl plik

@ -10,7 +10,7 @@ class TestStringMethods(unittest.TestCase):
self.assertEqual(message['id'], "300234010617040")
self.assertEqual(message['signal_strength'], 19)
self.assertEqual(message['spider_id'], "LWE")
self.assertEqual(message['gps_status'], "3D")
self.assertEqual(message['gps_quality'], "3D")
if __name__ == '__main__':

Wyświetl plik

@ -6,7 +6,7 @@ from ogn.parser.aprs_comment.tracker_parser import TrackerParser
class TestStringMethods(unittest.TestCase):
def test_position_comment(self):
message = TrackerParser.parse_position("id072FD00F -058fpm +1.1rot FL003.12 32.8dB 0e -0.8kHz gps3x5")
message = TrackerParser.parse_position("id072FD00F -058fpm +1.1rot FL003.12 32.8dB 0e -0.8kHz gps3x5 +12.7dBm")
self.assertEqual(message['address_type'], 3)
self.assertEqual(message['aircraft_type'], 1)
@ -18,7 +18,8 @@ class TestStringMethods(unittest.TestCase):
self.assertEqual(message['signal_quality'], 32.8)
self.assertEqual(message['error_count'], 0)
self.assertEqual(message['frequency_offset'], -0.8)
self.assertEqual(message['gps_status'], '3x5')
self.assertEqual(message['gps_quality'], {'horizontal': 3, 'vertical': 5})
self.assertEqual(message['signal_power'], 12.7)
def test_status_comment(self):
message = TrackerParser.parse_status("h00 v00 9sat/1 164m 1002.6hPa +20.2degC 0% 3.34V 14/-110.5dBm 1/min")

Wyświetl plik

@ -6,4 +6,4 @@ FLRDD9C70>OGNTRK,OGN2FD00F*,qAS,LZHL:/093214h4848.77N/01708.33E'000/000/A=000515
FLRDD9C70>OGNTRK,OGN2FD00F*,qAS,LZHL:/093021h4848.77N/01708.33E'000/000/A=000518 !W66! id06DD9C70 -019fpm +0.0rot 29.0dB 0e -0.8kHz gps2x3 s6.09 h03
OGN03AF2A>OGNTRK,qAS,LZHL:/092912h4848.77N/01708.33E'000/000/A=000535 !W53! id0703AF2A +000fpm +0.0rot FL003.15 4.5dB 1e -0.1kHz gps4x5 -11.2dBm
OGN2FD00F>OGNTRK,qAS,LZHL:>092840h h00 v00 11sat/2 165m 1001.9hPa +27.1degC 0% 3.28V 14/-111.5dBm 127/min
FLRDD9C70>OGNTRK,RELAY*,qAS,LZHL:/094124h4848.78N/01708.33E'000/000/A=000397 !W15! id06DD9C70 +099fpm +0.0rot 24.5dB 0e -1.4kHz gps10x15
FLRDD9C70>OGNTRK,RELAY*,qAS,LZHL:/094124h4848.78N/01708.33E'000/000/A=000397 !W15! id06DD9C70 +099fpm +0.0rot 24.5dB 0e -1.4kHz gps10x15