kopia lustrzana https://github.com/glidernet/python-ogn-client
Changed half turn per minute to degrees per second
rodzic
3c63cffb23
commit
79ab1cfc8a
|
@ -3,6 +3,7 @@
|
|||
- parser: Added support for OGNLT24 (LT24), OGSKYL (Skylines), OGSPID (Spider), OGSPOT (Spot) and OGNFNT (Fanet)
|
||||
- parser: Added support for (server) comments
|
||||
- parser: Added parser for local receiver output (port 50001)
|
||||
- parser: Changed unit for rotation from "half turn per minute" to "degrees/s"
|
||||
|
||||
## 0.8.2: - 2018-01-20
|
||||
- parser: Better validation of timestamp, lat/lon and altitude
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import re
|
||||
|
||||
from ogn.parser.pattern import PATTERN_FLARM_POSITION_COMMENT
|
||||
from ogn.parser.utils import FPM_TO_MS
|
||||
from ogn.parser.utils import FPM_TO_MS, HPM_TO_DEGS
|
||||
|
||||
from .base import BaseParser
|
||||
|
||||
|
@ -18,7 +18,7 @@ class FlarmParser(BaseParser):
|
|||
'stealth': (int(ac_match.group('details'), 16) & 0b10000000) >> 7 == 1,
|
||||
'address': ac_match.group('address'),
|
||||
'climb_rate': int(ac_match.group('climb_rate')) * FPM_TO_MS,
|
||||
'turn_rate': float(ac_match.group('turn_rate')),
|
||||
'turn_rate': float(ac_match.group('turn_rate')) * HPM_TO_DEGS,
|
||||
'signal_quality': float(ac_match.group('signal_quality')),
|
||||
'error_count': int(ac_match.group('error_count')),
|
||||
'frequency_offset': float(ac_match.group('frequency_offset')),
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import re
|
||||
|
||||
from ogn.parser.pattern import PATTERN_NAVITER_POSITION_COMMENT
|
||||
from ogn.parser.utils import FPM_TO_MS
|
||||
from ogn.parser.utils import FPM_TO_MS, HPM_TO_DEGS
|
||||
|
||||
from .base import BaseParser
|
||||
|
||||
|
@ -20,4 +20,4 @@ class NaviterParser(BaseParser):
|
|||
'reserved': (int(match.group('details'), 16) & 0b0000000000001111),
|
||||
'address': match.group('address'),
|
||||
'climb_rate': int(match.group('climb_rate')) * FPM_TO_MS if match.group('climb_rate') else None,
|
||||
'turn_rate': float(match.group('turn_rate')) if match.group('turn_rate') else None}
|
||||
'turn_rate': float(match.group('turn_rate')) * HPM_TO_DEGS if match.group('turn_rate') else None}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import re
|
||||
|
||||
from ogn.parser.utils import FPM_TO_MS
|
||||
from ogn.parser.utils import FPM_TO_MS, HPM_TO_DEGS
|
||||
from ogn.parser.pattern import PATTERN_RECEIVER_BEACON, PATTERN_AIRCRAFT_BEACON
|
||||
|
||||
from .base import BaseParser
|
||||
|
@ -36,7 +36,7 @@ class OgnParser(BaseParser):
|
|||
'stealth': (int(ac_match.group('details'), 16) & 0b10000000) >> 7 == 1,
|
||||
'address': ac_match.group('address'),
|
||||
'climb_rate': int(ac_match.group('climb_rate')) * FPM_TO_MS if ac_match.group('climb_rate') else None,
|
||||
'turn_rate': float(ac_match.group('turn_rate')) if ac_match.group('turn_rate') else None,
|
||||
'turn_rate': float(ac_match.group('turn_rate')) * HPM_TO_DEGS if ac_match.group('turn_rate') else None,
|
||||
'flightlevel': float(ac_match.group('flight_level')) if ac_match.group('flight_level') else None,
|
||||
'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,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import re
|
||||
|
||||
from ogn.parser.pattern import PATTERN_TRACKER_POSITION_COMMENT, PATTERN_TRACKER_STATUS_COMMENT
|
||||
from ogn.parser.utils import FPM_TO_MS
|
||||
from ogn.parser.utils import FPM_TO_MS, HPM_TO_DEGS
|
||||
|
||||
from .base import BaseParser
|
||||
|
||||
|
@ -18,7 +18,7 @@ class TrackerParser(BaseParser):
|
|||
'stealth': (int(match.group('details'), 16) & 0b10000000) >> 7 == 1,
|
||||
'address': match.group('address'),
|
||||
'climb_rate': int(match.group('climb_rate')) * FPM_TO_MS if match.group('climb_rate') else None,
|
||||
'turn_rate': float(match.group('turn_rate')) if match.group('turn_rate') else None,
|
||||
'turn_rate': float(match.group('turn_rate')) * HPM_TO_DEGS 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('error_count')) if match.group('error_count') else None,
|
||||
|
|
|
@ -7,6 +7,7 @@ FEETS_TO_METER = 0.3048 # ratio feets to meter
|
|||
FPM_TO_MS = FEETS_TO_METER / 60 # ratio fpm to m/s
|
||||
KNOTS_TO_MS = 0.5144 # ratio knots to m/s
|
||||
KPH_TO_MS = 2.7778 # ratio kph to m/s
|
||||
HPM_TO_DEGS = 180 / 60 # ratio between half turn per minute and degrees/s
|
||||
|
||||
|
||||
def parseAngle(dddmmhht):
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import unittest
|
||||
|
||||
from ogn.parser.utils import FPM_TO_MS
|
||||
from ogn.parser.utils import FPM_TO_MS, HPM_TO_DEGS
|
||||
from ogn.parser.aprs_comment.flarm_parser import FlarmParser
|
||||
|
||||
|
||||
|
@ -13,7 +13,7 @@ class TestStringMethods(unittest.TestCase):
|
|||
self.assertFalse(message['stealth'])
|
||||
self.assertEqual(message['address'], "A8CBA8")
|
||||
self.assertAlmostEqual(message['climb_rate'], -39 * FPM_TO_MS, 2)
|
||||
self.assertEqual(message['turn_rate'], 0.1)
|
||||
self.assertEqual(message['turn_rate'], 0.1 * HPM_TO_DEGS)
|
||||
self.assertEqual(message['signal_quality'], 3.5)
|
||||
self.assertEqual(message['error_count'], 2)
|
||||
self.assertEqual(message['frequency_offset'], -8.7)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import unittest
|
||||
|
||||
from ogn.parser.utils import FPM_TO_MS
|
||||
from ogn.parser.utils import FPM_TO_MS, HPM_TO_DEGS
|
||||
from ogn.parser.aprs_comment.naviter_parser import NaviterParser
|
||||
|
||||
|
||||
|
@ -23,7 +23,7 @@ class TestStringMethods(unittest.TestCase):
|
|||
self.assertEqual(message['address'], "042121")
|
||||
|
||||
self.assertAlmostEqual(message['climb_rate'], 123 * FPM_TO_MS, 2)
|
||||
self.assertEqual(message['turn_rate'], 0.5)
|
||||
self.assertEqual(message['turn_rate'], 0.5 * HPM_TO_DEGS)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import unittest
|
||||
|
||||
from ogn.parser.utils import FPM_TO_MS
|
||||
from ogn.parser.utils import FPM_TO_MS, HPM_TO_DEGS
|
||||
from ogn.parser.aprs_comment.ogn_parser import OgnParser
|
||||
|
||||
|
||||
|
@ -16,7 +16,7 @@ class TestStringMethods(unittest.TestCase):
|
|||
self.assertFalse(message['stealth'])
|
||||
self.assertEqual(message['address'], "DDA5BA")
|
||||
self.assertAlmostEqual(message['climb_rate'], -454 * FPM_TO_MS, 2)
|
||||
self.assertEqual(message['turn_rate'], -1.1)
|
||||
self.assertEqual(message['turn_rate'], -1.1 * HPM_TO_DEGS)
|
||||
self.assertEqual(message['signal_quality'], 8.8)
|
||||
self.assertEqual(message['error_count'], 0)
|
||||
self.assertEqual(message['frequency_offset'], 51.2)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import unittest
|
||||
|
||||
from ogn.parser.utils import FPM_TO_MS
|
||||
from ogn.parser.utils import FPM_TO_MS, HPM_TO_DEGS
|
||||
from ogn.parser.aprs_comment.tracker_parser import TrackerParser
|
||||
|
||||
|
||||
|
@ -13,7 +13,7 @@ class TestStringMethods(unittest.TestCase):
|
|||
self.assertFalse(message['stealth'])
|
||||
self.assertEqual(message['address'], "2FD00F")
|
||||
self.assertAlmostEqual(message['climb_rate'], -58 * FPM_TO_MS, 2)
|
||||
self.assertEqual(message['turn_rate'], 1.1)
|
||||
self.assertEqual(message['turn_rate'], 1.1 * HPM_TO_DEGS)
|
||||
self.assertEqual(message['flightlevel'], 3.12)
|
||||
self.assertEqual(message['signal_quality'], 32.8)
|
||||
self.assertEqual(message['error_count'], 0)
|
||||
|
|
Ładowanie…
Reference in New Issue