remoteRF-server 1.7.4__tar.gz → 1.7.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/PKG-INFO +1 -1
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/pyproject.toml +1 -1
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/device_manager.py +4 -1
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/grpc_server.py +15 -9
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server.egg-info/PKG-INFO +1 -1
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_contrib_drivers.py +20 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_deployment_capabilities.py +2 -2
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_gate_e_proto.py +1 -1
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_gate_i_direct_path.py +3 -3
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_usrp_client_server_hardware.py +1 -1
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_usrp_client_server_localhost.py +1 -1
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_usrp_n210_client_server_hardware.py +1 -1
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/LICENSE +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/README.md +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/setup.cfg +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/deployment_capabilities.proto +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/deployment_capabilities_pb2.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/deployment_capabilities_pb2_grpc.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/federation.proto +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/federation_pb2.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/federation_pb2_grpc.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/grpc_host_pb2.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/grpc_host_pb2_grpc.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/grpc_pb2.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/grpc_pb2_grpc.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/v2_codec.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/idl/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/idl/device_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/idl/pluto_mimo_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/idl/pluto_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/idl/schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/idl/v2.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/ansi_codes.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/api_token.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/db_connection.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/db_location.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/list_string.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/panel.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/process_arg.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/adalm_pluto/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/adalm_pluto/pluto_diag.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/adalm_pluto/pluto_mimo_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/adalm_pluto/pluto_remote_server.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/adalm_pluto/pluto_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/adalm_pluto/poe.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/bluetooth_diag.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/gps_diag.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/hackrf/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/hackrf/hackrf_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/rtl_sdr/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/rtl_sdr/rtl_sdr_diag.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/rtl_sdr/rtl_sdr_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/ti_mmwave/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/ti_mmwave/ti_mmwave_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp/policy.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp/profiles.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp/uhd_manifest.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp/usrp_diag.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp/usrp_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp_phaser/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp_phaser/usrp_phaser_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/host/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/host/host_auth_token.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/host/host_directory_store.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/host/host_tunnel_server.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/remote_admin_shell.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/acc_perms.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/cert_provider.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/commands.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/console.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/control.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/deployment/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/deployment/capabilities.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/diag.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/direct_path.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/dynamic_v2.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/dynamic_v2_bridge.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/admin.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/cli.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/cluster.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/contracts.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/destination.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/devices.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/enrollment.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/global_home.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/home.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/home_devices.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/identity.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/legacy_state.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/links.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/migrations.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/peers.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/permissions.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/principals.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/runtime.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/trust.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/global_onboarding.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/host_direct.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/host_dynamic_v2.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/remote_admin.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/remote_admin_ssh.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/reservation.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/rpc_manager.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/schema_registry.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/startup_check.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/user_group_cli.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/user_group_handler.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/v2_errors.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/serverrf_cli.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/tools/__init__.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/tools/gen_certs.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/tools/gist_status.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/tools/gist_status_testing.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/tools/introspect_uhd.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server.egg-info/SOURCES.txt +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server.egg-info/dependency_links.txt +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server.egg-info/entry_points.txt +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server.egg-info/requires.txt +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server.egg-info/top_level.txt +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_account_hardening.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_account_names.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_account_removal.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_activity_log.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_availability.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_bind_host.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_cert_provider.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_client_sessions.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_cluster.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_commands.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_console.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_default_rtl_sdr_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_default_usrp_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_detached_device_rpc.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_device_core_aliases.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_device_handles.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_device_init.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_devices_add_wizard.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_devices_list.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_diag.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_direct_fixed_port.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_direct_path_server.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_dynamic_v2.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_federated_direct_path.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_federated_dynamic_v2.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_federation_edges.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_first_run.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_gate_d_contracts.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_gate_e_federation.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_gate_f_enrollment.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_gate_g1_logging.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_gate_g_permissions.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_gate_h_devices.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_gen_certs.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_global_accounts_migration.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_global_home.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_global_onboarding.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_global_v1_disposal.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_hackrf_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_home_device_plane.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_host_direct.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_host_directory_store.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_host_dynamic_v2.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_idl_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_lab_logins.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_panel.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_peer_transport.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_pluto_compat.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_pluto_poe.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_process_arg.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_proxy_lifecycle.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_remote_admin.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_reservation_handoff.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_reservation_policy_b.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_reservation_timestamps.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_rpc_manager_batch.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_rpc_manager_calln.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_rpc_manager_host_legacy.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_rpc_manager_rx_n.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_rtl_sdr_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_schema_registry.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_soak_federation.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_startup_check.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_status_push.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_ti_mmwave_hardware.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_ti_mmwave_schema.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_user_group_cli.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_usrp_b205mini_uhd410_hardware.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_usrp_preload.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_usrp_profiles.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_usrp_remoterf_rx_hardware.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_usrp_uhd410_hardware.py +0 -0
- {remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_wipe.py +0 -0
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/device_manager.py
RENAMED
|
@@ -86,7 +86,10 @@ def _name_handle(name: str) -> str:
|
|
|
86
86
|
|
|
87
87
|
def _is_connected(st: _DeviceState) -> bool:
|
|
88
88
|
if st.origin == "local":
|
|
89
|
-
|
|
89
|
+
# Drivers that survive an unplug (e.g. GPS reconnect loop) expose device.connected.
|
|
90
|
+
# Read __dict__ directly: PoePluto's __getattr__ would power the board on.
|
|
91
|
+
dev = getattr(st.dev, "device", None)
|
|
92
|
+
return st.dev is not None and getattr(dev, "__dict__", {}).get("connected", True) is not False
|
|
90
93
|
# host
|
|
91
94
|
return bool(st.online)
|
|
92
95
|
|
|
@@ -65,6 +65,7 @@ from ..common.grpc import grpc_host_pb2_grpc as host_tunnel_pb2_grpc
|
|
|
65
65
|
|
|
66
66
|
from pathlib import Path
|
|
67
67
|
from prompt_toolkit import PromptSession
|
|
68
|
+
from prompt_toolkit.input import DummyInput
|
|
68
69
|
from prompt_toolkit.output import DummyOutput
|
|
69
70
|
|
|
70
71
|
from ..tools.gist_status import start_status_publisher
|
|
@@ -120,15 +121,20 @@ def _get_port(name: str, *, default: int | None = None) -> int:
|
|
|
120
121
|
raise SystemExit(f"{name} out of range (1..65535): {n}")
|
|
121
122
|
return n
|
|
122
123
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
124
|
+
if sys.stdin is not None and sys.stdin.isatty():
|
|
125
|
+
try:
|
|
126
|
+
session = PromptSession()
|
|
127
|
+
except Exception as exc:
|
|
128
|
+
if type(exc).__name__ != "NoConsoleScreenBufferError":
|
|
129
|
+
raise
|
|
130
|
+
# Importing the server in a headless process (tests, services, containers)
|
|
131
|
+
# may not provide a real console screen buffer. The interactive serve path
|
|
132
|
+
# still gets the normal output whenever one is available.
|
|
133
|
+
session = PromptSession(output=DummyOutput())
|
|
134
|
+
else:
|
|
135
|
+
# No terminal on stdin (systemd, --headless, pipes): avoid prompt_toolkit's
|
|
136
|
+
# "Input is not a terminal" warning. Prompts hit EOF immediately.
|
|
137
|
+
session = PromptSession(input=DummyInput(), output=DummyOutput())
|
|
132
138
|
BANNER_CREDIT = "Created by the Wireless Lab at UCLA"
|
|
133
139
|
|
|
134
140
|
from dotenv import load_dotenv, find_dotenv
|
|
@@ -236,3 +236,23 @@ def test_a_renumbered_csr_is_found_again_when_bluez_forgets_it(bt, sysfs):
|
|
|
236
236
|
# A pinned adapter is not swapped for another one, and an error is no success.
|
|
237
237
|
assert bt._run_coroutine_sync(pinned.set_powered_async, True) is False
|
|
238
238
|
assert pinned.adapter_name == "hci1"
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
# -- simulated SDR ----------------------------------------------------------
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
def test_sim_sdr_matches_bundled_client_and_returns_tone():
|
|
245
|
+
import re
|
|
246
|
+
|
|
247
|
+
import numpy as np
|
|
248
|
+
|
|
249
|
+
sim = _load("sim_sdr_schema", {})
|
|
250
|
+
client = Path(__file__).resolve().parents[2] / "client/src/remoterf/drivers/sim_sdr/sim_sdr_remote.py"
|
|
251
|
+
bundled = re.search(r'_SCHEMA_HASH = "([^"]+)"', client.read_text()).group(1)
|
|
252
|
+
assert sim.SimSdrSchema().get_idl_hash() == bundled
|
|
253
|
+
|
|
254
|
+
dev = sim.SimSdrSchema.make_device()
|
|
255
|
+
dev.rx_buffer_size = 4096
|
|
256
|
+
iq = dev.rx()
|
|
257
|
+
assert iq.shape == (4096,) and iq.dtype == np.complex64
|
|
258
|
+
assert int(np.argmax(np.abs(np.fft.fft(iq)))) == 512
|
|
@@ -35,8 +35,8 @@ class CapabilityTests(unittest.TestCase):
|
|
|
35
35
|
def test_protected_proto_bytes(self):
|
|
36
36
|
root=Path(__file__).resolve().parents[1]
|
|
37
37
|
path='src/remoteRF_server/common/grpc/grpc.proto'
|
|
38
|
-
base=subprocess.check_output(['git','show','
|
|
39
|
-
core=root/'packages/remoterf-device-core/src/remoterf_device_core/grpc/grpc.proto' # moved here, same bytes
|
|
38
|
+
base=subprocess.check_output(['git','show','c2b5a414e1c316406b020c6731fdf91d8ad8bfac:./'+path],cwd=root)
|
|
39
|
+
core=root.parent/'packages/remoterf-device-core/src/remoterf_device_core/grpc/grpc.proto' # moved here, same bytes
|
|
40
40
|
self.assertEqual(base,core.read_bytes())
|
|
41
41
|
fields=pb.DeploymentCapabilitiesResponse.DESCRIPTOR.fields_by_name
|
|
42
42
|
self.assertEqual(fields['capabilities_json'].number,1)
|
|
@@ -7,7 +7,7 @@ from remoteRF_server.common.grpc import federation_pb2
|
|
|
7
7
|
def test_federation_proto_source_hash_and_descriptor_are_canonical():
|
|
8
8
|
root = Path(__file__).resolve().parents[1]
|
|
9
9
|
proto = root / "src/remoteRF_server/common/grpc/federation.proto"
|
|
10
|
-
protected = root / "packages/remoterf-device-core/src/remoterf_device_core/grpc/grpc.proto"
|
|
10
|
+
protected = root.parent / "packages/remoterf-device-core/src/remoterf_device_core/grpc/grpc.proto"
|
|
11
11
|
assert hashlib.sha256(proto.read_bytes()).hexdigest() == (
|
|
12
12
|
"e890c399b61e8eb92e67762661c0ce99f3daacdb06b0139b34f26a749ff736c1"
|
|
13
13
|
)
|
|
@@ -114,7 +114,7 @@ class PeerClassificationTests(unittest.TestCase):
|
|
|
114
114
|
for host in ("127.0.0.1", "::1", "fe80::1", "10.4.5.6", "192.168.1.20",
|
|
115
115
|
"::ffff:192.168.1.20", "164.67.195.7"):
|
|
116
116
|
self.assertFalse(is_offsite(host), host)
|
|
117
|
-
for host in ("
|
|
117
|
+
for host in ("8.8.4.4", "164.67.196.1", "100.64.0.1", "2607:f8b0::1",
|
|
118
118
|
"fd7a:115c:a1e0::8601:f120", "bogus"):
|
|
119
119
|
self.assertTrue(is_offsite(host), host)
|
|
120
120
|
|
|
@@ -194,12 +194,12 @@ class DispatchTests(unittest.TestCase):
|
|
|
194
194
|
|
|
195
195
|
def test_control_plane_is_refused(self):
|
|
196
196
|
for name in ("ACC:login", "ACC:get_dev", "echo", "RemoteAdmin:x"):
|
|
197
|
-
results, seen = self._run(name, "
|
|
197
|
+
results, seen = self._run(name, "8.8.4.4")
|
|
198
198
|
self.assertIn("not available on the direct path", unmap_arg(results["a"]), name)
|
|
199
199
|
self.assertEqual(seen, {})
|
|
200
200
|
|
|
201
201
|
def test_device_plane_sets_relayed_from_the_peer(self):
|
|
202
|
-
results, seen = self._run("adalm_pluto:rx_lo:GET", "
|
|
202
|
+
results, seen = self._run("adalm_pluto:rx_lo:GET", "8.8.4.4")
|
|
203
203
|
self.assertEqual(unmap_arg(results["echo"]), "adalm_pluto:rx_lo:GET")
|
|
204
204
|
self.assertTrue(seen["relayed"])
|
|
205
205
|
_, seen = self._run("IDL:get_drivers", "192.168.4.2")
|
|
@@ -41,7 +41,7 @@ def _add_client_source() -> None:
|
|
|
41
41
|
if configured:
|
|
42
42
|
candidates.append(Path(configured).expanduser())
|
|
43
43
|
candidates.append(
|
|
44
|
-
Path(__file__).resolve().parents[2] / "
|
|
44
|
+
Path(__file__).resolve().parents[2] / "client" / "src"
|
|
45
45
|
)
|
|
46
46
|
for candidate in candidates:
|
|
47
47
|
if (candidate / "remoteRF").is_dir():
|
|
@@ -43,7 +43,7 @@ def _add_client_source() -> None:
|
|
|
43
43
|
if configured:
|
|
44
44
|
candidates.append(Path(configured).expanduser())
|
|
45
45
|
candidates.append(
|
|
46
|
-
Path(__file__).resolve().parents[2] / "
|
|
46
|
+
Path(__file__).resolve().parents[2] / "client" / "src"
|
|
47
47
|
)
|
|
48
48
|
for candidate in candidates:
|
|
49
49
|
if (candidate / "remoteRF").is_dir():
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/tests/test_usrp_n210_client_server_hardware.py
RENAMED
|
@@ -41,7 +41,7 @@ def _add_client_source() -> None:
|
|
|
41
41
|
if configured:
|
|
42
42
|
candidates.append(Path(configured).expanduser())
|
|
43
43
|
candidates.append(
|
|
44
|
-
Path(__file__).resolve().parents[2] / "
|
|
44
|
+
Path(__file__).resolve().parents[2] / "client" / "src"
|
|
45
45
|
)
|
|
46
46
|
for candidate in candidates:
|
|
47
47
|
if (candidate / "remoteRF").is_dir():
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/federation.proto
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/federation_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/grpc_host_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/grpc/grpc_pb2_grpc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/idl/device_schema.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/idl/pluto_mimo_schema.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/idl/pluto_schema.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/__init__.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/ansi_codes.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/api_token.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/db_connection.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/db_location.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/list_string.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/common/utils/process_arg.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/adalm_pluto/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/adalm_pluto/poe.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/bluetooth_diag.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/hackrf/__init__.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/hackrf/hackrf_schema.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/rtl_sdr/__init__.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/rtl_sdr/rtl_sdr_diag.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/ti_mmwave/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp/profiles.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp/uhd_manifest.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp/usrp_diag.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp/usrp_schema.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/drivers/usrp_phaser/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/host/host_directory_store.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/host/host_tunnel_server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/deployment/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/dynamic_v2_bridge.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/__init__.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/admin.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/cli.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/cluster.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/contracts.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/destination.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/devices.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/enrollment.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/global_home.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/home.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/identity.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/links.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/migrations.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/peers.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/permissions.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/principals.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/runtime.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/federation/trust.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/global_onboarding.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/host_dynamic_v2.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/remote_admin_ssh.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/schema_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/user_group_cli.py
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/server/user_group_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server/tools/gist_status_testing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{remoterf_server-1.7.4 → remoterf_server-1.7.6}/src/remoteRF_server.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|