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")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue