kopia lustrzana https://github.com/glidernet/python-ogn-client
Allow valid lat/lon only
rodzic
88a73c00d6
commit
caffdabb4e
|
@ -1,5 +1,8 @@
|
||||||
# CHANGELOG
|
# CHANGELOG
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
- parser: Allow valid lat/lon only
|
||||||
|
|
||||||
## 0.8.1: - 2018-01-12
|
## 0.8.1: - 2018-01-12
|
||||||
- client: Ignore messages other than UTF-8
|
- client: Ignore messages other than UTF-8
|
||||||
- parser: Allow IDs only with hexadecimal values
|
- parser: Allow IDs only with hexadecimal values
|
||||||
|
@ -8,7 +11,7 @@
|
||||||
- parser: Merged function 'parse_aprs' and 'parse_ogn_beacon' to 'parse'
|
- parser: Merged function 'parse_aprs' and 'parse_ogn_beacon' to 'parse'
|
||||||
- parser: Added support for OGNSDR (receiver), OGNTRK (ogn tracker), OGNFLR (flarm) and OGNAV (Naviter) beacons
|
- parser: Added support for OGNSDR (receiver), OGNTRK (ogn tracker), OGNFLR (flarm) and OGNAV (Naviter) beacons
|
||||||
- parser: Added support for RELAYed messages
|
- parser: Added support for RELAYed messages
|
||||||
- parser: Added support for ddmmss time format (eg. '312359z')
|
- parser: Added support for ddhhmm time format (eg. '312359z')
|
||||||
- parser: Added support for heared aircrafts
|
- parser: Added support for heared aircrafts
|
||||||
- client: Allow client to do sequential connect-disconnect
|
- client: Allow client to do sequential connect-disconnect
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
||||||
PATTERN_APRS_POSITION = re.compile(r"^(?P<callsign>.+?)>(?P<dstcall>[A-Z0-9]+),((?P<relay>[A-Za-z0-9]+)\*)?.*,(?P<receiver>.+?):/(?P<time>\d{6}(h|z))(?P<latitude>\d{4}\.\d{2})(?P<latitude_sign>N|S)(?P<symbol_table>.)(?P<longitude>\d{5}\.\d{2})(?P<longitude_sign>E|W)(?P<symbol>.)(?P<course_extension>(?P<course>\d{3})/(?P<ground_speed>\d{3}))?/A=(?P<altitude>[-\d]{6})(?P<pos_extension>\s!W((?P<latitude_enhancement>\d)(?P<longitude_enhancement>\d))!)?(?:\s(?P<comment>.*))?$")
|
PATTERN_APRS_POSITION = re.compile(r"^(?P<callsign>.+?)>(?P<dstcall>[A-Z0-9]+),((?P<relay>[A-Za-z0-9]+)\*)?.*,(?P<receiver>.+?):/(?P<time>\d{6}(h|z))(?P<latitude>9000\.00|[0-8]\d{3}\.\d{2})(?P<latitude_sign>N|S)(?P<symbol_table>.)(?P<longitude>18000\.00|1[0-7]\d{3}\.\d{2}|0\d{4}\.\d{2})(?P<longitude_sign>E|W)(?P<symbol>.)(?P<course_extension>(?P<course>\d{3})/(?P<ground_speed>\d{3}))?/A=(?P<altitude>[-\d]{6})(?P<pos_extension>\s!W((?P<latitude_enhancement>\d)(?P<longitude_enhancement>\d))!)?(?:\s(?P<comment>.*))?$")
|
||||||
PATTERN_APRS_STATUS = re.compile(r"^(?P<callsign>.+?)>(?P<dstcall>[A-Z0-9]+),.+,(?P<receiver>.+?):>(?P<time>\d{6}(h|z))\s(?P<comment>.*)$")
|
PATTERN_APRS_STATUS = re.compile(r"^(?P<callsign>.+?)>(?P<dstcall>[A-Z0-9]+),.+,(?P<receiver>.+?):>(?P<time>\d{6}(h|z))\s(?P<comment>.*)$")
|
||||||
|
|
||||||
PATTERN_NAVITER_BEACON = re.compile("""
|
PATTERN_NAVITER_BEACON = re.compile("""
|
||||||
|
|
|
@ -78,6 +78,14 @@ class TestStringMethods(unittest.TestCase):
|
||||||
|
|
||||||
self.assertAlmostEqual(message['altitude'] * m2feet, -13, 5)
|
self.assertAlmostEqual(message['altitude'] * m2feet, -13, 5)
|
||||||
|
|
||||||
|
def test_invalid_coordinates(self):
|
||||||
|
# sometimes the coordinates leave their valid range: -90<=latitude<=90 or -180<=longitude<=180
|
||||||
|
with self.assertRaises(AprsParseError):
|
||||||
|
parse_aprs("RND000000>APRS,qAS,TROCALAN1:/210042h6505.31S/18136.75W^054/325/A=002591 !W31! idA4000000 +099fpm +1.8rot FL029.04 12.0dB 5e -6.3kHz gps11x17", reference_date=datetime(2015, 1, 1))
|
||||||
|
|
||||||
|
with self.assertRaises(AprsParseError):
|
||||||
|
parse_aprs("RND000000>APRS,qAS,TROCALAN1:/210042h9505.31S/17136.75W^054/325/A=002591 !W31! idA4000000 +099fpm +1.8rot FL029.04 12.0dB 5e -6.3kHz gps11x17", reference_date=datetime(2015, 1, 1))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Ładowanie…
Reference in New Issue