kopia lustrzana https://github.com/glidernet/python-ogn-client
Refactoring
rodzic
8cff2a2c4d
commit
572d8bbc54
|
@ -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):
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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("""
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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__':
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
Ładowanie…
Reference in New Issue