kopia lustrzana https://github.com/projecthorus/radiosonde_auto_rx
rodzic
3e061465c8
commit
664352bd77
|
|
@ -17,6 +17,7 @@ import time
|
||||||
import traceback
|
import traceback
|
||||||
import os
|
import os
|
||||||
from dateutil.parser import parse
|
from dateutil.parser import parse
|
||||||
|
from queue import Queue
|
||||||
|
|
||||||
if sys.version_info < (3, 6):
|
if sys.version_info < (3, 6):
|
||||||
print("CRITICAL - radiosonde_auto_rx requires Python 3.6 or newer!")
|
print("CRITICAL - radiosonde_auto_rx requires Python 3.6 or newer!")
|
||||||
|
|
@ -49,13 +50,6 @@ from autorx.web import (
|
||||||
from autorx.gpsd import GPSDAdaptor
|
from autorx.gpsd import GPSDAdaptor
|
||||||
from autorx.sdr_wrappers import shutdown_sdr
|
from autorx.sdr_wrappers import shutdown_sdr
|
||||||
|
|
||||||
try:
|
|
||||||
# Python 2
|
|
||||||
from Queue import Queue
|
|
||||||
except ImportError:
|
|
||||||
# Python 3
|
|
||||||
from queue import Queue
|
|
||||||
|
|
||||||
|
|
||||||
# Logging level
|
# Logging level
|
||||||
# INFO = Basic status messages
|
# INFO = Basic status messages
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,7 @@
|
||||||
# Copyright (C) 2018 Mark Jessop <vk5qi@rfhead.net>
|
# Copyright (C) 2018 Mark Jessop <vk5qi@rfhead.net>
|
||||||
# Released under GNU GPL v3 or later
|
# Released under GNU GPL v3 or later
|
||||||
#
|
#
|
||||||
try:
|
from queue import Queue
|
||||||
# Python 2
|
|
||||||
from Queue import Queue
|
|
||||||
except ImportError:
|
|
||||||
# Python 3
|
|
||||||
from queue import Queue
|
|
||||||
|
|
||||||
# Now using Semantic Versioning (https://semver.org/) MAJOR.MINOR.PATCH
|
# Now using Semantic Versioning (https://semver.org/) MAJOR.MINOR.PATCH
|
||||||
# MAJOR - Only updated when something huge changes to the project (new decode chain, etc)
|
# MAJOR - Only updated when something huge changes to the project (new decode chain, etc)
|
||||||
|
|
|
||||||
|
|
@ -11,17 +11,11 @@ import random
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
import socket
|
import socket
|
||||||
|
from queue import Queue
|
||||||
from threading import Thread, Lock
|
from threading import Thread, Lock
|
||||||
from . import __version__ as auto_rx_version
|
from . import __version__ as auto_rx_version
|
||||||
from .utils import strip_sonde_serial
|
from .utils import strip_sonde_serial
|
||||||
|
|
||||||
try:
|
|
||||||
# Python 2
|
|
||||||
from Queue import Queue
|
|
||||||
except ImportError:
|
|
||||||
# Python 3
|
|
||||||
from queue import Queue
|
|
||||||
|
|
||||||
|
|
||||||
def telemetry_to_aprs_position(
|
def telemetry_to_aprs_position(
|
||||||
sonde_data, object_name="<id>", aprs_comment="BOM Balloon", position_report=False
|
sonde_data, object_name="<id>", aprs_comment="BOM Balloon", position_report=False
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import logging
|
||||||
import os
|
import os
|
||||||
import traceback
|
import traceback
|
||||||
import json
|
import json
|
||||||
|
from configparser import RawConfigParser
|
||||||
from .sdr_wrappers import test_sdr
|
from .sdr_wrappers import test_sdr
|
||||||
|
|
||||||
# Dummy initial config with some parameters we need to make the web interface happy.
|
# Dummy initial config with some parameters we need to make the web interface happy.
|
||||||
|
|
@ -26,13 +27,6 @@ global_config = {
|
||||||
# Web interface credentials
|
# Web interface credentials
|
||||||
web_password = "none"
|
web_password = "none"
|
||||||
|
|
||||||
try:
|
|
||||||
# Python 2
|
|
||||||
from ConfigParser import RawConfigParser
|
|
||||||
except ImportError:
|
|
||||||
# Python 3
|
|
||||||
from configparser import RawConfigParser
|
|
||||||
|
|
||||||
# Fixed minimum update rates for APRS & Habitat
|
# Fixed minimum update rates for APRS & Habitat
|
||||||
# These are set to avoid congestion on the APRS-IS network, and on the Habitat server
|
# These are set to avoid congestion on the APRS-IS network, and on the Habitat server
|
||||||
# Please respect other users of these networks and leave these settings as they are.
|
# Please respect other users of these networks and leave these settings as they are.
|
||||||
|
|
|
||||||
|
|
@ -11,19 +11,12 @@ import time
|
||||||
import smtplib
|
import smtplib
|
||||||
from email.mime.text import MIMEText
|
from email.mime.text import MIMEText
|
||||||
from email.utils import formatdate
|
from email.utils import formatdate
|
||||||
|
from queue import Queue
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from .config import read_auto_rx_config
|
from .config import read_auto_rx_config
|
||||||
from .utils import position_info, strip_sonde_serial
|
from .utils import position_info, strip_sonde_serial
|
||||||
from .geometry import GenericTrack
|
from .geometry import GenericTrack
|
||||||
|
|
||||||
try:
|
|
||||||
# Python 2
|
|
||||||
from Queue import Queue
|
|
||||||
|
|
||||||
except ImportError:
|
|
||||||
# Python 3
|
|
||||||
from queue import Queue
|
|
||||||
|
|
||||||
|
|
||||||
class EmailNotification(object):
|
class EmailNotification(object):
|
||||||
""" Radiosonde Email Notification Class.
|
""" Radiosonde Email Notification Class.
|
||||||
|
|
|
||||||
|
|
@ -15,16 +15,10 @@ import traceback
|
||||||
import json
|
import json
|
||||||
from base64 import b64encode
|
from base64 import b64encode
|
||||||
from hashlib import sha256
|
from hashlib import sha256
|
||||||
|
from queue import Queue
|
||||||
from threading import Thread, Lock
|
from threading import Thread, Lock
|
||||||
from . import __version__ as auto_rx_version
|
from . import __version__ as auto_rx_version
|
||||||
|
|
||||||
try:
|
|
||||||
# Python 2
|
|
||||||
from Queue import Queue
|
|
||||||
except ImportError:
|
|
||||||
# Python 3
|
|
||||||
from queue import Queue
|
|
||||||
|
|
||||||
# These get replaced out after init
|
# These get replaced out after init
|
||||||
url_habitat_uuids = ""
|
url_habitat_uuids = ""
|
||||||
url_habitat_db = ""
|
url_habitat_db = ""
|
||||||
|
|
|
||||||
|
|
@ -10,15 +10,9 @@ import glob
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
|
from queue import Queue
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
try:
|
|
||||||
# Python 2
|
|
||||||
from Queue import Queue
|
|
||||||
except ImportError:
|
|
||||||
# Python 3
|
|
||||||
from queue import Queue
|
|
||||||
|
|
||||||
|
|
||||||
class TelemetryLogger(object):
|
class TelemetryLogger(object):
|
||||||
""" Radiosonde Telemetry Logger Class.
|
""" Radiosonde Telemetry Logger Class.
|
||||||
|
|
|
||||||
|
|
@ -10,15 +10,9 @@ import json
|
||||||
import logging
|
import logging
|
||||||
import socket
|
import socket
|
||||||
import time
|
import time
|
||||||
|
from queue import Queue
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
try:
|
|
||||||
# Python 2
|
|
||||||
from Queue import Queue
|
|
||||||
except ImportError:
|
|
||||||
# Python 3
|
|
||||||
from queue import Queue
|
|
||||||
|
|
||||||
|
|
||||||
class OziUploader(object):
|
class OziUploader(object):
|
||||||
""" Push radiosonde telemetry out via UDP broadcast to the Horus Chase-Car Utilities
|
""" Push radiosonde telemetry out via UDP broadcast to the Horus Chase-Car Utilities
|
||||||
|
|
|
||||||
|
|
@ -10,16 +10,10 @@ import socket
|
||||||
import time
|
import time
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
|
from queue import Queue
|
||||||
from threading import Thread, Lock
|
from threading import Thread, Lock
|
||||||
from autorx.utils import position_info
|
from autorx.utils import position_info
|
||||||
|
|
||||||
try:
|
|
||||||
# Python 2
|
|
||||||
from Queue import Queue
|
|
||||||
except ImportError:
|
|
||||||
# Python 3
|
|
||||||
from queue import Queue
|
|
||||||
|
|
||||||
|
|
||||||
def read_rotator(rotctld_host="localhost", rotctld_port=4533, timeout=5):
|
def read_rotator(rotctld_host="localhost", rotctld_port=4533, timeout=5):
|
||||||
""" Attempt to read a position from a rotctld server.
|
""" Attempt to read a position from a rotctld server.
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import platform
|
||||||
import subprocess
|
import subprocess
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
|
from io import StringIO
|
||||||
from threading import Thread, Lock
|
from threading import Thread, Lock
|
||||||
from types import FunctionType, MethodType
|
from types import FunctionType, MethodType
|
||||||
from .utils import (
|
from .utils import (
|
||||||
|
|
@ -24,12 +25,6 @@ from .utils import (
|
||||||
)
|
)
|
||||||
from .sdr_wrappers import *
|
from .sdr_wrappers import *
|
||||||
|
|
||||||
try:
|
|
||||||
# Python 2
|
|
||||||
from StringIO import StringIO
|
|
||||||
except ImportError:
|
|
||||||
# Python 3
|
|
||||||
from io import StringIO
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from .web import flask_emit_event
|
from .web import flask_emit_event
|
||||||
|
|
|
||||||
|
|
@ -18,16 +18,10 @@ import logging
|
||||||
import os
|
import os
|
||||||
import requests
|
import requests
|
||||||
import time
|
import time
|
||||||
|
from queue import Queue
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from email.utils import formatdate
|
from email.utils import formatdate
|
||||||
|
|
||||||
try:
|
|
||||||
# Python 2
|
|
||||||
from Queue import Queue
|
|
||||||
except ImportError:
|
|
||||||
# Python 3
|
|
||||||
from queue import Queue
|
|
||||||
|
|
||||||
|
|
||||||
class SondehubUploader(object):
|
class SondehubUploader(object):
|
||||||
""" Sondehub Uploader Class.
|
""" Sondehub Uploader Class.
|
||||||
|
|
@ -83,20 +77,10 @@ class SondehubUploader(object):
|
||||||
# Record of when we last uploaded a user station position to Sondehub.
|
# Record of when we last uploaded a user station position to Sondehub.
|
||||||
self.last_user_position_upload = 0
|
self.last_user_position_upload = 0
|
||||||
|
|
||||||
try:
|
# Start queue processing thread.
|
||||||
# Python 2 check. Python 2 doesnt have gzip.compress so this will throw an exception.
|
self.input_processing_running = True
|
||||||
gzip.compress(b"\x00\x00")
|
self.input_process_thread = Thread(target=self.process_queue)
|
||||||
|
self.input_process_thread.start()
|
||||||
# Start queue processing thread.
|
|
||||||
self.input_processing_running = True
|
|
||||||
self.input_process_thread = Thread(target=self.process_queue)
|
|
||||||
self.input_process_thread.start()
|
|
||||||
|
|
||||||
except:
|
|
||||||
logging.error(
|
|
||||||
"Detected Python 2.7, which does not support gzip.compress. Sondehub DB uploading will be disabled."
|
|
||||||
)
|
|
||||||
self.input_processing_running = False
|
|
||||||
|
|
||||||
def update_station_position(self, lat, lon, alt):
|
def update_station_position(self, lat, lon, alt):
|
||||||
""" Update the internal station position record. Used when determining the station position by GPSD """
|
""" Update the internal station position record. Used when determining the station position by GPSD """
|
||||||
|
|
|
||||||
|
|
@ -22,15 +22,9 @@ import semver
|
||||||
from dateutil.parser import parse
|
from dateutil.parser import parse
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from math import radians, degrees, sin, cos, atan2, sqrt, pi
|
from math import radians, degrees, sin, cos, atan2, sqrt, pi
|
||||||
|
from queue import Queue
|
||||||
from . import __version__ as auto_rx_version
|
from . import __version__ as auto_rx_version
|
||||||
|
|
||||||
try:
|
|
||||||
# Python 2
|
|
||||||
from Queue import Queue
|
|
||||||
except ImportError:
|
|
||||||
# Python 3
|
|
||||||
from queue import Queue
|
|
||||||
|
|
||||||
|
|
||||||
# List of binaries we check for on startup
|
# List of binaries we check for on startup
|
||||||
REQUIRED_RS_UTILS = [
|
REQUIRED_RS_UTILS = [
|
||||||
|
|
@ -723,8 +717,7 @@ def is_not_linux():
|
||||||
|
|
||||||
# Second check for the existence of '-Microsoft' in the uname release field.
|
# Second check for the existence of '-Microsoft' in the uname release field.
|
||||||
# This is a good check that we are running in WSL.
|
# This is a good check that we are running in WSL.
|
||||||
# Note the use of indexing instead of the named field, for Python 2 & 3 compatability.
|
if "Microsoft" in platform.uname().release:
|
||||||
if "Microsoft" in platform.uname()[2]:
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# Else, we're probably in native Linux!
|
# Else, we're probably in native Linux!
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import autorx.scan
|
||||||
from autorx.geometry import GenericTrack
|
from autorx.geometry import GenericTrack
|
||||||
from autorx.utils import check_autorx_versions
|
from autorx.utils import check_autorx_versions
|
||||||
from autorx.log_files import list_log_files, read_log_by_serial, zip_log_files
|
from autorx.log_files import list_log_files, read_log_by_serial, zip_log_files
|
||||||
|
from queue import Queue
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
import flask
|
import flask
|
||||||
from flask import request, abort, make_response, send_file
|
from flask import request, abort, make_response, send_file
|
||||||
|
|
@ -35,13 +36,6 @@ except ImportError:
|
||||||
)
|
)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
try:
|
|
||||||
# Python 2
|
|
||||||
from Queue import Queue
|
|
||||||
except ImportError:
|
|
||||||
# Python 3
|
|
||||||
from queue import Queue
|
|
||||||
|
|
||||||
|
|
||||||
# Inhibit Flask warning message about running a development server... (we know!)
|
# Inhibit Flask warning message about running a development server... (we know!)
|
||||||
cli = sys.modules["flask.cli"]
|
cli = sys.modules["flask.cli"]
|
||||||
|
|
|
||||||
|
|
@ -4,27 +4,17 @@
|
||||||
#
|
#
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Check if we are running in Python 2 or 3
|
|
||||||
PY3 = sys.version_info[0] == 3
|
|
||||||
|
|
||||||
_sample_rate = int(sys.argv[1])
|
_sample_rate = int(sys.argv[1])
|
||||||
_symbol_rate = int(sys.argv[2])
|
_symbol_rate = int(sys.argv[2])
|
||||||
|
|
||||||
_bit_length = _sample_rate // _symbol_rate
|
_bit_length = _sample_rate // _symbol_rate
|
||||||
|
|
||||||
if PY3:
|
_zero = b'\x00'*_bit_length
|
||||||
_zero = b'\x00'*_bit_length
|
_one = b'\xFF'*_bit_length
|
||||||
_one = b'\xFF'*_bit_length
|
|
||||||
|
|
||||||
_in = sys.stdin.read
|
_in = sys.stdin.read
|
||||||
_out = sys.stdout.buffer.write
|
_out = sys.stdout.buffer.write
|
||||||
|
|
||||||
else:
|
|
||||||
_zero = '\x00'*_bit_length
|
|
||||||
_one = '\xFF'*_bit_length
|
|
||||||
|
|
||||||
_in = sys.stdin.read
|
|
||||||
_out = sys.stdout.write
|
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
_char = _in(1)
|
_char = _in(1)
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,9 @@ import socket, json, sys, traceback
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from dateutil.parser import parse
|
from dateutil.parser import parse
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
from io import StringIO
|
||||||
import time
|
import time
|
||||||
|
|
||||||
try:
|
|
||||||
from StringIO import StringIO ## for Python 2
|
|
||||||
except ImportError:
|
|
||||||
from io import StringIO ## for Python 3
|
|
||||||
|
|
||||||
MAX_JSON_LEN = 32768
|
MAX_JSON_LEN = 32768
|
||||||
|
|
||||||
|
|
|
||||||
Ładowanie…
Reference in New Issue