kopia lustrzana https://github.com/glidernet/python-ogn-client
43 wiersze
2.0 KiB
Python
43 wiersze
2.0 KiB
Python
from datetime import datetime
|
|
|
|
from ogn.parser.utils import createTimestamp
|
|
from ogn.parser.pattern import PATTERN_TELNET_50001
|
|
|
|
telnet_50001_pattern = PATTERN_TELNET_50001
|
|
|
|
|
|
def parse(telnet_data):
|
|
reference_timestamp = datetime.utcnow()
|
|
|
|
match = telnet_50001_pattern.match(telnet_data)
|
|
if match:
|
|
return {'pps_offset': float(match.group('pps_offset')),
|
|
'frequency': float(match.group('frequency')),
|
|
'aircraft_type': int(match.group('aircraft_type')),
|
|
'address_type': int(match.group('address_type')),
|
|
'address': match.group('address'),
|
|
'timestamp': createTimestamp(match.group('timestamp') + 'h', reference_timestamp),
|
|
'latitude': float(match.group('latitude')),
|
|
'longitude': float(match.group('longitude')),
|
|
'altitude': int(match.group('altitude')),
|
|
'climb_rate': float(match.group('climb_rate')),
|
|
'ground_speed': float(match.group('ground_speed')),
|
|
'track': float(match.group('track')),
|
|
'turn_rate': float(match.group('turn_rate')),
|
|
'magic_number': int(match.group('magic_number')),
|
|
'gps_status': match.group('gps_status'),
|
|
'channel': int(match.group('channel')),
|
|
'flarm_timeslot': match.group('flarm_timeslot') == 'f',
|
|
'ogn_timeslot': match.group('ogn_timeslot') == 'o',
|
|
'frequency_offset': float(match.group('frequency_offset')),
|
|
'decode_quality': float(match.group('decode_quality')),
|
|
'signal_quality': float(match.group('signal_quality')),
|
|
'demodulator_type': int(match.group('demodulator_type')),
|
|
'error_count': float(match.group('error_count')),
|
|
'distance': float(match.group('distance')),
|
|
'bearing': float(match.group('bearing')),
|
|
'phi': float(match.group('phi')),
|
|
'multichannel': match.group('multichannel') == '+'}
|
|
else:
|
|
return None
|