def test_windows_native_backends_installed(self): if sys.platform == "darwin" or sys.platform == "linux": return from urh.util import util util.set_shared_library_path() # noinspection PyUnresolvedReferences from urh.dev.native.lib import airspy # noinspection PyUnresolvedReferences from urh.dev.native.lib import bladerf # noinspection PyUnresolvedReferences from urh.dev.native.lib import hackrf # noinspection PyUnresolvedReferences from urh.dev.native.lib import rtlsdr # noinspection PyUnresolvedReferences from urh.dev.native.lib import limesdr # noinspection PyUnresolvedReferences from urh.dev.native.lib import usrp # noinspection PyUnresolvedReferences from urh.dev.native.lib import sdrplay self.assertTrue(True)
def test_native_backends_installed(self): from urh.util import util if not util.get_shared_library_path(): logger.info("Shared library dir not found, skipping check of native device extensions") return util.set_shared_library_path() # noinspection PyUnresolvedReferences from urh.dev.native.lib import airspy # noinspection PyUnresolvedReferences from urh.dev.native.lib import bladerf # noinspection PyUnresolvedReferences from urh.dev.native.lib import hackrf # noinspection PyUnresolvedReferences from urh.dev.native.lib import rtlsdr # noinspection PyUnresolvedReferences from urh.dev.native.lib import limesdr # noinspection PyUnresolvedReferences from urh.dev.native.lib import plutosdr # noinspection PyUnresolvedReferences from urh.dev.native.lib import usrp if sys.platform != "darwin": # noinspection PyUnresolvedReferences from urh.dev.native.lib import sdrplay self.assertTrue(True)
from collections import OrderedDict from enum import Enum from multiprocessing import Value, Process, Pipe from multiprocessing.connection import Connection from pickle import UnpicklingError import numpy as np from urh.dev.native.SendConfig import SendConfig from urh.signalprocessing.IQArray import IQArray from urh.util.Logger import logger from urh.util.SettingsProxy import SettingsProxy from urh.util import util # set shared library path when processes spawn so they can also find the .so's in bundled case util.set_shared_library_path() class Device(object): JOIN_TIMEOUT = 1.0 SYNC_TX_CHUNK_SIZE = 0 CONTINUOUS_TX_CHUNK_SIZE = 0 DATA_TYPE = np.float32 class Command(Enum): STOP = 0 SET_FREQUENCY = 1 SET_SAMPLE_RATE = 2 SET_BANDWIDTH = 3
def test_set_shared_lib_path(self): before = os.environ["PATH"] util.set_shared_library_path()
def main(): fix_windows_stdout_stderr() if sys.version_info < (3, 4): print("You need at least Python 3.4 for this application!") sys.exit(1) urh_exe = sys.executable if hasattr(sys, 'frozen') else sys.argv[0] urh_exe = os.readlink(urh_exe) if os.path.islink(urh_exe) else urh_exe urh_dir = os.path.join(os.path.dirname(os.path.realpath(urh_exe)), "..", "..") prefix = os.path.abspath(os.path.normpath(urh_dir)) src_dir = os.path.join(prefix, "src") if os.path.exists(src_dir) and not prefix.startswith( "/usr") and not re.match(r"(?i)c:\\program", prefix): # Started locally, not installed -> add directory to path sys.path.insert(0, src_dir) if len(sys.argv) > 1 and sys.argv[1] == "--version": import urh.version print(urh.version.VERSION) sys.exit(0) if GENERATE_UI and not hasattr(sys, 'frozen'): try: sys.path.insert(0, os.path.join(prefix)) from data import generate_ui generate_ui.gen() except (ImportError, FileNotFoundError): # The generate UI script cannot be found so we are most likely in release mode, no problem here. pass from urh.util import util util.set_shared_library_path() try: import urh.cythonext.signal_functions import urh.cythonext.path_creator import urh.cythonext.util except ImportError: if hasattr(sys, "frozen"): print("C++ Extensions not found. Exiting...") sys.exit(1) print("Could not find C++ extensions, trying to build them.") old_dir = os.path.realpath(os.curdir) os.chdir(os.path.join(src_dir, "urh", "cythonext")) from urh.cythonext import build build.main() os.chdir(old_dir) from urh.controller.MainController import MainController from urh import settings if settings.read("theme_index", 0, int) > 0: os.environ['QT_QPA_PLATFORMTHEME'] = 'fusion' app = QApplication(["URH"] + sys.argv[1:]) app.setWindowIcon(QIcon(":/icons/icons/appicon.png")) try: app.styleHints().setShowShortcutsInContextMenus(True) except AttributeError: pass util.set_icon_theme() font_size = settings.read("font_size", 0, int) if font_size > 0: font = app.font() font.setPointSize(font_size) app.setFont(font) settings.write("default_theme", app.style().objectName()) if settings.read("theme_index", 0, int) > 0: app.setStyle(QStyleFactory.create("Fusion")) if settings.read("theme_index", 0, int) == 2: palette = QPalette() background_color = QColor(56, 60, 74) text_color = QColor(211, 218, 227).lighter() palette.setColor(QPalette.Window, background_color) palette.setColor(QPalette.WindowText, text_color) palette.setColor(QPalette.Base, background_color) palette.setColor(QPalette.AlternateBase, background_color) palette.setColor(QPalette.ToolTipBase, background_color) palette.setColor(QPalette.ToolTipText, text_color) palette.setColor(QPalette.Text, text_color) palette.setColor(QPalette.Button, background_color) palette.setColor(QPalette.ButtonText, text_color) palette.setColor(QPalette.BrightText, Qt.red) palette.setColor(QPalette.Disabled, QPalette.Text, Qt.darkGray) palette.setColor(QPalette.Disabled, QPalette.ButtonText, Qt.darkGray) palette.setColor(QPalette.Highlight, QColor(200, 50, 0)) palette.setColor(QPalette.HighlightedText, text_color) app.setPalette(palette) # use system colors for painting widget = QWidget() bg_color = widget.palette().color(QPalette.Background) fg_color = widget.palette().color(QPalette.Foreground) selection_color = widget.palette().color(QPalette.Highlight) settings.BGCOLOR = bg_color settings.LINECOLOR = fg_color settings.SELECTION_COLOR = selection_color settings.SEND_INDICATOR_COLOR = selection_color main_window = MainController() # allow usage of prange (OpenMP) in Processes multiprocessing.set_start_method("spawn") if sys.platform == "win32": # Ensure we get the app icon in windows taskbar import ctypes ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID( "jopohl.urh") main_window.showMaximized() # main_window.setFixedSize(1920, 1080 - 30) # Youtube if "autoclose" in sys.argv[1:]: # Autoclose after 1 second, this is useful for automated testing timer = QTimer() timer.timeout.connect(app.quit) timer.start(1000) return_code = app.exec_() app.closeAllWindows() os._exit( return_code ) # sys.exit() is not enough on Windows and will result in crash on exit
from multiprocessing import Pipe from urh.util import util import numpy as np util.set_shared_library_path() from urh.dev.native.lib import plutosdr def test_cython_wrapper(): descs, uris = plutosdr.scan_devices() plutosdr.set_tx(False) print("Devices", descs) print("Open", plutosdr.open(uris[0])) print("Set Freq to 433.92e6", plutosdr.set_center_freq(int(433.92e6))) print("Set Sample Rate to 2M", plutosdr.set_sample_rate(int(2.5e6))) print("Set bandwidth to 4M", plutosdr.set_bandwidth(int(4e6))) print("Set gain to 10", plutosdr.set_rf_gain(10)) print("prepare rx", plutosdr.setup_rx()) parent_conn, child_conn = Pipe() for i in range(10): plutosdr.receive_sync(child_conn) data = parent_conn.recv_bytes() print(np.frombuffer(data, dtype=np.int16)) print(plutosdr.get_tx()) print("Close", plutosdr.close())
def main(): fix_windows_stdout_stderr() if sys.version_info < (3, 4): print("You need at least Python 3.4 for this application!") sys.exit(1) urh_exe = sys.executable if hasattr(sys, 'frozen') else sys.argv[0] urh_exe = os.readlink(urh_exe) if os.path.islink(urh_exe) else urh_exe urh_dir = os.path.join(os.path.dirname(os.path.realpath(urh_exe)), "..", "..") prefix = os.path.abspath(os.path.normpath(urh_dir)) src_dir = os.path.join(prefix, "src") if os.path.exists(src_dir) and not prefix.startswith("/usr") and not re.match(r"(?i)c:\\program", prefix): # Started locally, not installed -> add directory to path sys.path.insert(0, src_dir) if len(sys.argv) > 1 and sys.argv[1] == "--version": import urh.version print(urh.version.VERSION) sys.exit(0) if GENERATE_UI and not hasattr(sys, 'frozen'): try: sys.path.insert(0, os.path.join(prefix)) from data import generate_ui generate_ui.gen() except (ImportError, FileNotFoundError): # The generate UI script cannot be found so we are most likely in release mode, no problem here. pass from urh.util import util util.set_shared_library_path() try: import urh.cythonext.signal_functions import urh.cythonext.path_creator import urh.cythonext.util except ImportError: if hasattr(sys, "frozen"): print("C++ Extensions not found. Exiting...") sys.exit(1) print("Could not find C++ extensions, trying to build them.") old_dir = os.path.realpath(os.curdir) os.chdir(os.path.join(src_dir, "urh", "cythonext")) from urh.cythonext import build build.main() os.chdir(old_dir) from urh.controller.MainController import MainController from urh import constants if constants.SETTINGS.value("theme_index", 0, int) > 0: os.environ['QT_QPA_PLATFORMTHEME'] = 'fusion' app = QApplication(["URH"] + sys.argv[1:]) app.setWindowIcon(QIcon(":/icons/icons/appicon.png")) util.set_icon_theme() font_size = constants.SETTINGS.value("font_size", 0, int) if font_size > 0: font = app.font() font.setPointSize(font_size) app.setFont(font) constants.SETTINGS.setValue("default_theme", app.style().objectName()) if constants.SETTINGS.value("theme_index", 0, int) > 0: app.setStyle(QStyleFactory.create("Fusion")) if constants.SETTINGS.value("theme_index", 0, int) == 2: palette = QPalette() background_color = QColor(56, 60, 74) text_color = QColor(211, 218, 227).lighter() palette.setColor(QPalette.Window, background_color) palette.setColor(QPalette.WindowText, text_color) palette.setColor(QPalette.Base, background_color) palette.setColor(QPalette.AlternateBase, background_color) palette.setColor(QPalette.ToolTipBase, background_color) palette.setColor(QPalette.ToolTipText, text_color) palette.setColor(QPalette.Text, text_color) palette.setColor(QPalette.Button, background_color) palette.setColor(QPalette.ButtonText, text_color) palette.setColor(QPalette.BrightText, Qt.red) palette.setColor(QPalette.Disabled, QPalette.Text, Qt.darkGray) palette.setColor(QPalette.Disabled, QPalette.ButtonText, Qt.darkGray) palette.setColor(QPalette.Highlight, QColor(200, 50, 0)) palette.setColor(QPalette.HighlightedText, text_color) app.setPalette(palette) # use system colors for painting widget = QWidget() bg_color = widget.palette().color(QPalette.Background) fg_color = widget.palette().color(QPalette.Foreground) selection_color = widget.palette().color(QPalette.Highlight) constants.BGCOLOR = bg_color constants.LINECOLOR = fg_color constants.SELECTION_COLOR = selection_color constants.SEND_INDICATOR_COLOR = selection_color main_window = MainController() # allow usage of prange (OpenMP) in Processes multiprocessing.set_start_method("spawn") if sys.platform == "darwin": menu_bar = main_window.menuBar() menu_bar.setNativeMenuBar(False) elif sys.platform == "win32": # Ensure we get the app icon in windows taskbar import ctypes ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID("jopohl.urh") main_window.showMaximized() # main_window.setFixedSize(1920, 1080 - 30) # Youtube if "autoclose" in sys.argv[1:]: # Autoclose after 1 second, this is useful for automated testing timer = QTimer() timer.timeout.connect(app.quit) timer.start(1000) return_code = app.exec_() app.closeAllWindows() os._exit(return_code) # sys.exit() is not enough on Windows and will result in crash on exit