diff --git a/scripts/analyze_reticulum_file_transfer_20260516_1130.pl b/scripts/analyze_reticulum_file_transfer_20260516_1130.pl old mode 100644 new mode 100755 diff --git a/src/ble_reticulum/BLEFragmentationBackend.py b/src/ble_reticulum/BLEFragmentationBackend.py index d304afd..3b69c4e 100644 --- a/src/ble_reticulum/BLEFragmentationBackend.py +++ b/src/ble_reticulum/BLEFragmentationBackend.py @@ -25,7 +25,12 @@ def _requested_backend() -> str: def _load_python_backend(): - from .BLEFragmentation import BLEFragmenter, BLEReassembler, HDLCFramer + try: + from .BLEFragmentation import BLEFragmenter, BLEReassembler, HDLCFramer + except ImportError: + # Reticulum external interfaces can be loaded from a plain interfaces + # directory where modules are imported top-level instead of as a package. + from BLEFragmentation import BLEFragmenter, BLEReassembler, HDLCFramer return "python", BLEFragmenter, BLEReassembler, HDLCFramer diff --git a/src/ble_reticulum/BLEInterface.py b/src/ble_reticulum/BLEInterface.py index 49ed348..f113727 100644 --- a/src/ble_reticulum/BLEInterface.py +++ b/src/ble_reticulum/BLEInterface.py @@ -76,13 +76,19 @@ except ImportError: sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../../../')) from RNS.Interfaces.Interface import Interface -# Import fragmentation module -# Note: When loaded as external interface, use absolute imports +# Import fragmentation backend selector. +# Note: When loaded as external interface, use absolute imports. try: - from BLEFragmentation import BLEFragmenter, BLEReassembler + from BLEFragmentationBackend import BLEFragmenter, BLEReassembler except ImportError: - # Fallback for when loaded as part of RNS package - from ble_reticulum.BLEFragmentation import BLEFragmenter, BLEReassembler + try: + from ble_reticulum.BLEFragmentationBackend import BLEFragmenter, BLEReassembler + except ImportError: + # Compatibility fallback if the backend shim is not installed. + try: + from BLEFragmentation import BLEFragmenter, BLEReassembler + except ImportError: + from ble_reticulum.BLEFragmentation import BLEFragmenter, BLEReassembler # Import GATT server for peripheral mode try: