Changed half turn per minute to degrees per second

pull/62/head
Konstantin Gründger 2018-04-30 21:45:28 +02:00
rodzic 3c63cffb23
commit 79ab1cfc8a
10 zmienionych plików z 18 dodań i 16 usunięć

Wyświetl plik

@ -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

Wyświetl plik

@ -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')),

Wyświetl plik

@ -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}

Wyświetl plik

@ -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,

Wyświetl plik

@ -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,

Wyświetl plik

@ -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):

Wyświetl plik

@ -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)

Wyświetl plik

@ -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__':

Wyświetl plik

@ -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)

Wyświetl plik

@ -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)