RemoteRF 2.0.3__tar.gz → 2.0.7__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.
Files changed (59) hide show
  1. {remoterf-2.0.3/src/remoteRF.egg-info → remoterf-2.0.7}/PKG-INFO +62 -3
  2. {remoterf-2.0.3 → remoterf-2.0.7}/README.md +60 -1
  3. {remoterf-2.0.3 → remoterf-2.0.7}/setup.py +3 -3
  4. remoterf-2.0.7/src/remoteRF/common/grpc/grpc_pb2.py +101 -0
  5. remoterf-2.0.7/src/remoteRF/common/grpc/grpc_pb2_grpc.py +462 -0
  6. remoterf-2.0.7/src/remoteRF/common/grpc/v2_codec.py +130 -0
  7. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/common/utils/process_arg.py +103 -60
  8. remoterf-2.0.7/src/remoteRF/core/__init__.py +20 -0
  9. remoterf-2.0.7/src/remoteRF/core/dynamic_v2_transport.py +477 -0
  10. remoterf-2.0.7/src/remoteRF/core/v2_errors.py +100 -0
  11. remoterf-2.0.7/src/remoteRF/drivers/__init__.py +26 -0
  12. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/drivers/dynamic_device.py +101 -7
  13. remoterf-2.0.7/src/remoteRF/drivers/dynamic_v2.py +887 -0
  14. remoterf-2.0.7/src/remoteRF/drivers/support/uhd_dsp.py +76 -0
  15. remoterf-2.0.7/src/remoteRF/drivers/support/uhd_v2.py +741 -0
  16. remoterf-2.0.7/src/remoteRF/drivers/usrp/__init__.py +4 -0
  17. remoterf-2.0.7/src/remoteRF/drivers/usrp/usrp_remote.py +8 -0
  18. remoterf-2.0.7/src/remoteRF/drivers/usrp/usrp_remote.pyi +180 -0
  19. {remoterf-2.0.3 → remoterf-2.0.7/src/remoterf.egg-info}/PKG-INFO +62 -3
  20. remoterf-2.0.7/src/remoterf.egg-info/SOURCES.txt +51 -0
  21. {remoterf-2.0.3/src/remoteRF.egg-info → remoterf-2.0.7/src/remoterf.egg-info}/requires.txt +2 -2
  22. remoterf-2.0.7/src/remoterf.egg-info/top_level.txt +1 -0
  23. remoterf-2.0.7/tests/test_dynamic_v2.py +751 -0
  24. remoterf-2.0.7/tests/test_process_arg.py +218 -0
  25. remoterf-2.0.3/LICENSE +0 -21
  26. remoterf-2.0.3/src/remoteRF/common/grpc/grpc_pb2.py +0 -59
  27. remoterf-2.0.3/src/remoteRF/common/grpc/grpc_pb2_grpc.py +0 -97
  28. remoterf-2.0.3/src/remoteRF/core/__init__.py +0 -2
  29. remoterf-2.0.3/src/remoteRF/drivers/__init__.py +0 -1
  30. remoterf-2.0.3/src/remoteRF.egg-info/SOURCES.txt +0 -46
  31. remoterf-2.0.3/src/remoteRF.egg-info/top_level.txt +0 -1
  32. remoterf-2.0.3/tests/test_process_arg.py +0 -110
  33. {remoterf-2.0.3 → remoterf-2.0.7}/MANIFEST.in +0 -0
  34. {remoterf-2.0.3 → remoterf-2.0.7}/setup.cfg +0 -0
  35. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/__init__.py +0 -0
  36. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/common/__init__.py +0 -0
  37. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/common/grpc/__init__.py +0 -0
  38. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/common/tos_notice.txt +0 -0
  39. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/common/utils/__init__.py +0 -0
  40. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/common/utils/ansi_codes.py +0 -0
  41. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/common/utils/api_token.py +0 -0
  42. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/common/utils/list_string.py +0 -0
  43. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/config/__init__.py +0 -0
  44. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/config/cert_fetcher.py +0 -0
  45. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/config/config.py +0 -0
  46. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/core/acc_login.py +0 -0
  47. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/core/app.py +0 -0
  48. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/core/banner_note.txt +0 -0
  49. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/core/grpc_acc.py +0 -0
  50. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/core/grpc_client.py +0 -0
  51. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/drivers/adalm_pluto/__init__.py +0 -0
  52. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/drivers/adalm_pluto/pluto_remote.py +0 -0
  53. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/drivers/support/__init__.py +0 -0
  54. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/drivers/support/uhd.py +0 -0
  55. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/remoterf_cli.py +0 -0
  56. {remoterf-2.0.3 → remoterf-2.0.7}/src/remoteRF/version.py +0 -0
  57. {remoterf-2.0.3/src/remoteRF.egg-info → remoterf-2.0.7/src/remoterf.egg-info}/dependency_links.txt +0 -0
  58. {remoterf-2.0.3/src/remoteRF.egg-info → remoterf-2.0.7/src/remoterf.egg-info}/entry_points.txt +0 -0
  59. {remoterf-2.0.3 → remoterf-2.0.7}/tests/test_dynamic_device_codegen.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remoterf
3
- Version: 2.0.3
3
+ Version: 2.0.7
4
4
  Summary: A python API to remotely access signal centric hardware. Client-side only! Courtesy of Wireless Lab @ UCLA & Prof. Ian Roberts.
5
5
  Author: Ethan Ge
6
6
  Author-email: ethoGalaxy@gmail.com
@@ -9,8 +9,8 @@ Classifier: License :: OSI Approved :: MIT License
9
9
  Classifier: Operating System :: OS Independent
10
10
  Requires-Python: >=3.10
11
11
  Description-Content-Type: text/markdown
12
- Requires-Dist: grpcio<2.0.0,>=1.75.1
13
- Requires-Dist: protobuf<6.0.0,>=5.0.0
12
+ Requires-Dist: grpcio<2.0.0,>=1.78.1
13
+ Requires-Dist: protobuf<7.0.0,>=6.31.1
14
14
  Requires-Dist: numpy
15
15
  Requires-Dist: prompt_toolkit
16
16
  Requires-Dist: python-dotenv
@@ -53,6 +53,65 @@ source venv/bin/activate # Activate virtual environment
53
53
  pip install remoterf # Install remoteRF
54
54
  ```
55
55
 
56
+ ## NI USRP-2901 / B200-family
57
+
58
+ After reserving a server-local or HostRF-owned `usrp` inventory entry, fetch or refresh its
59
+ Dynamic v2 package with the reservation token:
60
+
61
+ ```python
62
+ from remoteRF.drivers import ensure_driver
63
+
64
+ ensure_driver(token="reservation-token")
65
+ ```
66
+
67
+ Both supported initialization forms then use the same generated runtime:
68
+
69
+ ```python
70
+ from remoteRF.drivers.usrp import uhd
71
+
72
+ with uhd.usrp.MultiUSRP(token="reservation-token") as usrp:
73
+ print(usrp.remoterf_capabilities)
74
+ usrp.set_rx_rate(1e6)
75
+ ```
76
+
77
+ ```python
78
+ from remoteRF.drivers.usrp import MultiUSRP
79
+
80
+ usrp = MultiUSRP("reservation-token")
81
+ try:
82
+ print(usrp.get_pp_string())
83
+ finally:
84
+ usrp.close()
85
+ ```
86
+
87
+ Streaming uses NumPy buffers and native-like UHD value objects. Only the
88
+ leading region reported by native UHD is changed on a partial receive:
89
+
90
+ ```python
91
+ import numpy as np
92
+ from remoteRF.drivers.usrp import uhd
93
+
94
+ with uhd.usrp.MultiUSRP(token="reservation-token") as usrp:
95
+ stream_args = uhd.usrp.StreamArgs("fc32", "sc16")
96
+ stream_args.channels = [0]
97
+ with usrp.get_rx_stream(stream_args) as rx:
98
+ samples = np.empty(4096, dtype=np.complex64)
99
+ metadata = uhd.types.RXMetadata()
100
+ count = rx.recv(samples, metadata, 0.25)
101
+ valid_samples = samples[:count]
102
+ ```
103
+
104
+ The generated package includes native-like namespaces, aliases, overload
105
+ stubs, deterministic `close()`, context managers, opaque session-bound
106
+ handles, and typed errors in `remoteRF.core.v2_errors`. Streamers are never
107
+ silently recreated after a disconnect; reopen a new device session and
108
+ configure a new stream explicitly.
109
+
110
+ Methods marked `deferred` in the fetched schema remain available through
111
+ generic native dispatch, but are not release-qualified as exact UHD overload
112
+ parity until the server's UHD 4.10 target-introspection and hardware
113
+ differential gates pass.
114
+
56
115
  If `pip install` doesn't work, you can clone the [source](https://github.com/WirelessLabAtUCLA/RemoteRF-Client) directly from github.
57
116
 
58
117
  <!-- 1. **Clone the repository:**
@@ -27,6 +27,65 @@ source venv/bin/activate # Activate virtual environment
27
27
  pip install remoterf # Install remoteRF
28
28
  ```
29
29
 
30
+ ## NI USRP-2901 / B200-family
31
+
32
+ After reserving a server-local or HostRF-owned `usrp` inventory entry, fetch or refresh its
33
+ Dynamic v2 package with the reservation token:
34
+
35
+ ```python
36
+ from remoteRF.drivers import ensure_driver
37
+
38
+ ensure_driver(token="reservation-token")
39
+ ```
40
+
41
+ Both supported initialization forms then use the same generated runtime:
42
+
43
+ ```python
44
+ from remoteRF.drivers.usrp import uhd
45
+
46
+ with uhd.usrp.MultiUSRP(token="reservation-token") as usrp:
47
+ print(usrp.remoterf_capabilities)
48
+ usrp.set_rx_rate(1e6)
49
+ ```
50
+
51
+ ```python
52
+ from remoteRF.drivers.usrp import MultiUSRP
53
+
54
+ usrp = MultiUSRP("reservation-token")
55
+ try:
56
+ print(usrp.get_pp_string())
57
+ finally:
58
+ usrp.close()
59
+ ```
60
+
61
+ Streaming uses NumPy buffers and native-like UHD value objects. Only the
62
+ leading region reported by native UHD is changed on a partial receive:
63
+
64
+ ```python
65
+ import numpy as np
66
+ from remoteRF.drivers.usrp import uhd
67
+
68
+ with uhd.usrp.MultiUSRP(token="reservation-token") as usrp:
69
+ stream_args = uhd.usrp.StreamArgs("fc32", "sc16")
70
+ stream_args.channels = [0]
71
+ with usrp.get_rx_stream(stream_args) as rx:
72
+ samples = np.empty(4096, dtype=np.complex64)
73
+ metadata = uhd.types.RXMetadata()
74
+ count = rx.recv(samples, metadata, 0.25)
75
+ valid_samples = samples[:count]
76
+ ```
77
+
78
+ The generated package includes native-like namespaces, aliases, overload
79
+ stubs, deterministic `close()`, context managers, opaque session-bound
80
+ handles, and typed errors in `remoteRF.core.v2_errors`. Streamers are never
81
+ silently recreated after a disconnect; reopen a new device session and
82
+ configure a new stream explicitly.
83
+
84
+ Methods marked `deferred` in the fetched schema remain available through
85
+ generic native dispatch, but are not release-qualified as exact UHD overload
86
+ parity until the server's UHD 4.10 target-introspection and hardware
87
+ differential gates pass.
88
+
30
89
  If `pip install` doesn't work, you can clone the [source](https://github.com/WirelessLabAtUCLA/RemoteRF-Client) directly from github.
31
90
 
32
91
  <!-- 1. **Clone the repository:**
@@ -129,4 +188,4 @@ Nothing else needs changing!
129
188
 
130
189
  This is fundamentally a experimental platform, and there will be many unknown bugs and issues. Some devices do not have universal support for all its functions at the moment, I am working on that aspect.
131
190
 
132
- **So please submit feedback!** -->
191
+ **So please submit feedback!** -->
@@ -6,7 +6,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
6
6
 
7
7
  setup(
8
8
  name="remoterf",
9
- version="2.0.3",
9
+ version="2.0.7",
10
10
  author="Ethan Ge",
11
11
  author_email="ethoGalaxy@gmail.com",
12
12
  description="A python API to remotely access signal centric hardware. Client-side only! Courtesy of Wireless Lab @ UCLA & Prof. Ian Roberts.",
@@ -17,7 +17,7 @@ setup(
17
17
  license_file='MIT',
18
18
  include_package_data=True, # Includes files specified in MANIFEST.in
19
19
  install_requires=[
20
- "grpcio>=1.75.1,<2.0.0", "protobuf>=5.0.0,<6.0.0", "numpy", "prompt_toolkit", "python-dotenv", "prompt-toolkit"
20
+ "grpcio>=1.78.1,<2.0.0", "protobuf>=6.31.1,<7.0.0", "numpy", "prompt_toolkit", "python-dotenv", "prompt-toolkit"
21
21
  ],
22
22
  classifiers=[
23
23
  "Programming Language :: Python :: 3",
@@ -42,4 +42,4 @@ setup(
42
42
  ],
43
43
  },
44
44
 
45
- )
45
+ )
@@ -0,0 +1,101 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: grpc.proto
5
+ # Protobuf Python Version: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ 'grpc.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\ngrpc.proto\x12\tremote_rf\"\xa2\x01\n\x11GenericRPCRequest\x12\x15\n\rfunction_name\x18\x01 \x01(\t\x12\x34\n\x04\x61rgs\x18\x02 \x03(\x0b\x32&.remote_rf.GenericRPCRequest.ArgsEntry\x1a@\n\tArgsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.remote_rf.Argument:\x02\x38\x01\"\x96\x01\n\x12GenericRPCResponse\x12;\n\x07results\x18\x01 \x03(\x0b\x32*.remote_rf.GenericRPCResponse.ResultsEntry\x1a\x43\n\x0cResultsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.remote_rf.Argument:\x02\x38\x01\"\x19\n\nArrayShape\x12\x0b\n\x03\x64im\x18\x01 \x03(\x05\"+\n\rComplexNumber\x12\x0c\n\x04real\x18\x01 \x01(\x02\x12\x0c\n\x04imag\x18\x02 \x01(\x02\"a\n\x11\x43omplexNumpyArray\x12$\n\x05shape\x18\x01 \x01(\x0b\x32\x15.remote_rf.ArrayShape\x12&\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x18.remote_rf.ComplexNumber\"D\n\x0eRealNumpyArray\x12$\n\x05shape\x18\x01 \x01(\x0b\x32\x15.remote_rf.ArrayShape\x12\x0c\n\x04\x64\x61ta\x18\x02 \x03(\x02\"\xb6\x02\n\x08\x41rgument\x12\x16\n\x0cstring_value\x18\x01 \x01(\tH\x00\x12\x15\n\x0bint64_value\x18\x02 \x01(\x03H\x00\x12\x15\n\x0b\x66loat_value\x18\x03 \x01(\x02H\x00\x12\x14\n\nbool_value\x18\x04 \x01(\x08H\x00\x12\x35\n\rcomplex_array\x18\x05 \x01(\x0b\x32\x1c.remote_rf.ComplexNumpyArrayH\x00\x12/\n\nreal_array\x18\x06 \x01(\x0b\x32\x19.remote_rf.RealNumpyArrayH\x00\x12\x14\n\njson_value\x18\x07 \x01(\tH\x00\x12\x15\n\x0b\x62ytes_value\x18\x08 \x01(\x0cH\x00\x12\x30\n\rndarray_value\x18\t \x01(\x0b\x32\x17.remote_rf.NDArrayValueH\x00\x42\x07\n\x05value\":\n\x0cNDArrayValue\x12\r\n\x05\x64type\x18\x01 \x01(\t\x12\r\n\x05shape\x18\x02 \x03(\x03\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\"\xe9\x01\n\x0c\x44ynamicValue\x12\x14\n\nnull_value\x18\x01 \x01(\x08H\x00\x12\x14\n\nbool_value\x18\x02 \x01(\x08H\x00\x12\x15\n\x0bint64_value\x18\x03 \x01(\x12H\x00\x12\x16\n\x0c\x64ouble_value\x18\x04 \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x05 \x01(\tH\x00\x12\x15\n\x0b\x62ytes_value\x18\x06 \x01(\x0cH\x00\x12\x14\n\njson_value\x18\x07 \x01(\tH\x00\x12\x30\n\rndarray_value\x18\x08 \x01(\x0b\x32\x17.remote_rf.NDArrayValueH\x00\x42\x07\n\x05value\"B\n\nNamedValue\x12\x0c\n\x04name\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.remote_rf.DynamicValue\"B\n\x08Mutation\x12\x0e\n\x06target\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.remote_rf.DynamicValue\"\xb0\x01\n\rErrorEnvelope\x12\x0c\n\x04\x63ode\x18\x01 \x01(\t\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x14\n\x0c\x64\x65tails_json\x18\x03 \x01(\t\x12\x0e\n\x06method\x18\x04 \x01(\t\x12\x18\n\x10native_exception\x18\x05 \x01(\t\x12\x13\n\x0buhd_version\x18\x06 \x01(\t\x12\x11\n\tretryable\x18\x07 \x01(\x08\x12\x18\n\x10\x66\x61tal_to_session\x18\x08 \x01(\x08\"s\n\x10NegotiateRequest\x12\x17\n\x0fschema_versions\x18\x01 \x03(\t\x12!\n\x19\x63ontrol_protocol_versions\x18\x02 \x03(\t\x12#\n\x1bstreaming_protocol_versions\x18\x03 \x03(\t\"\x9a\x01\n\x11NegotiateResponse\x12\x16\n\x0eschema_version\x18\x01 \x01(\t\x12 \n\x18\x63ontrol_protocol_version\x18\x02 \x01(\t\x12\"\n\x1astreaming_protocol_version\x18\x03 \x01(\t\x12\'\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x18.remote_rf.ErrorEnvelope\":\n\x10GetSchemaRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12\x17\n\x0fschema_versions\x18\x02 \x03(\t\"~\n\x11GetSchemaResponse\x12\x16\n\x0eschema_version\x18\x01 \x01(\t\x12\x13\n\x0bschema_json\x18\x02 \x01(\t\x12\x13\n\x0bschema_hash\x18\x03 \x01(\t\x12\'\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x18.remote_rf.ErrorEnvelope\"\x88\x01\n\x12OpenSessionRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12\x1d\n\x15requested_schema_hash\x18\x02 \x01(\t\x12 \n\x18\x63ontrol_protocol_version\x18\x03 \x01(\t\x12\"\n\x1astreaming_protocol_version\x18\x04 \x01(\t\"\xee\x01\n\x13OpenSessionResponse\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x15\n\rdevice_handle\x18\x02 \x01(\t\x12\x13\n\x0bschema_json\x18\x03 \x01(\t\x12\x13\n\x0bschema_hash\x18\x04 \x01(\t\x12\x19\n\x11\x63\x61pabilities_json\x18\x05 \x01(\t\x12\x13\n\x0buhd_version\x18\x06 \x01(\t\x12\x0f\n\x07uhd_abi\x18\x07 \x01(\t\x12\x18\n\x10hardware_profile\x18\x08 \x01(\t\x12\'\n\x05\x65rror\x18\t \x01(\x0b\x32\x18.remote_rf.ErrorEnvelope\"}\n\rInvokeRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x0e\n\x06handle\x18\x02 \x01(\t\x12\x0e\n\x06method\x18\x03 \x01(\t\x12\x13\n\x0boverload_id\x18\x04 \x01(\t\x12#\n\x04\x61rgs\x18\x05 \x03(\x0b\x32\x15.remote_rf.NamedValue\"\x8a\x01\n\x0eInvokeResponse\x12\'\n\x06result\x18\x01 \x01(\x0b\x32\x17.remote_rf.DynamicValue\x12&\n\tmutations\x18\x02 \x03(\x0b\x32\x13.remote_rf.Mutation\x12\'\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x18.remote_rf.ErrorEnvelope\"8\n\x12\x43loseHandleRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x0e\n\x06handle\x18\x02 \x01(\t\")\n\x13\x43loseSessionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\"H\n\rCloseResponse\x12\x0e\n\x06\x63losed\x18\x01 \x01(\x08\x12\'\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x18.remote_rf.ErrorEnvelope\"\xea\x03\n\x0bSampleFrame\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x0e\n\x06handle\x18\x02 \x01(\t\x12\x12\n\ngeneration\x18\x03 \x01(\x04\x12\x14\n\x0coperation_id\x18\x04 \x01(\t\x12\x10\n\x08sequence\x18\x05 \x01(\x04\x12-\n\tdirection\x18\x06 \x01(\x0e\x32\x1a.remote_rf.SampleDirection\x12(\n\x04kind\x18\x07 \x01(\x0e\x32\x1a.remote_rf.SampleFrameKind\x12\r\n\x05\x64type\x18\x08 \x01(\t\x12\r\n\x05shape\x18\t \x03(\x03\x12\x10\n\x08\x63hannels\x18\n \x03(\r\x12\x14\n\x0csample_count\x18\x0b \x01(\x04\x12\x0f\n\x07payload\x18\x0c \x01(\x0c\x12\x15\n\rmetadata_json\x18\r \x01(\t\x12\x18\n\x10\x64\x65vice_time_secs\x18\x0e \x01(\x01\x12\x0f\n\x07\x63redits\x18\x0f \x01(\r\x12\x13\n\x0btimeout_sec\x18\x10 \x01(\x01\x12\x12\n\none_packet\x18\x11 \x01(\x08\x12\x15\n\rend_of_stream\x18\x12 \x01(\x08\x12\x11\n\tcancelled\x18\x13 \x01(\x08\x12\'\n\x05\x65rror\x18\x14 \x01(\x0b\x32\x18.remote_rf.ErrorEnvelope\x12\r\n\x05\x66lags\x18\x15 \x01(\x04*e\n\x0fSampleDirection\x12 \n\x1cSAMPLE_DIRECTION_UNSPECIFIED\x10\x00\x12\x17\n\x13SAMPLE_DIRECTION_RX\x10\x01\x12\x17\n\x13SAMPLE_DIRECTION_TX\x10\x02*\xf2\x01\n\x0fSampleFrameKind\x12\x1c\n\x18SAMPLE_FRAME_UNSPECIFIED\x10\x00\x12\x15\n\x11SAMPLE_FRAME_OPEN\x10\x01\x12\x18\n\x14SAMPLE_FRAME_REQUEST\x10\x02\x12\x15\n\x11SAMPLE_FRAME_DATA\x10\x03\x12\x17\n\x13SAMPLE_FRAME_RESULT\x10\x04\x12\x17\n\x13SAMPLE_FRAME_CREDIT\x10\x05\x12\x17\n\x13SAMPLE_FRAME_CANCEL\x10\x06\x12\x16\n\x12SAMPLE_FRAME_CLOSE\x10\x07\x12\x16\n\x12SAMPLE_FRAME_ERROR\x10\x08\x32Q\n\nGenericRPC\x12\x43\n\x04\x43\x61ll\x12\x1c.remote_rf.GenericRPCRequest\x1a\x1d.remote_rf.GenericRPCResponse2\xc1\x03\n\x10\x44ynamicControlV2\x12\x46\n\tNegotiate\x12\x1b.remote_rf.NegotiateRequest\x1a\x1c.remote_rf.NegotiateResponse\x12\x46\n\tGetSchema\x12\x1b.remote_rf.GetSchemaRequest\x1a\x1c.remote_rf.GetSchemaResponse\x12L\n\x0bOpenSession\x12\x1d.remote_rf.OpenSessionRequest\x1a\x1e.remote_rf.OpenSessionResponse\x12=\n\x06Invoke\x12\x18.remote_rf.InvokeRequest\x1a\x19.remote_rf.InvokeResponse\x12\x46\n\x0b\x43loseHandle\x12\x1d.remote_rf.CloseHandleRequest\x1a\x18.remote_rf.CloseResponse\x12H\n\x0c\x43loseSession\x12\x1e.remote_rf.CloseSessionRequest\x1a\x18.remote_rf.CloseResponse2R\n\x0cSampleDataV1\x12\x42\n\x0cSampleStream\x12\x16.remote_rf.SampleFrame\x1a\x16.remote_rf.SampleFrame(\x01\x30\x01\x42\x1e\n\x10\x63om.example.demoB\nDemoProtosb\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'grpc_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ _globals['DESCRIPTOR']._loaded_options = None
34
+ _globals['DESCRIPTOR']._serialized_options = b'\n\020com.example.demoB\nDemoProtos'
35
+ _globals['_GENERICRPCREQUEST_ARGSENTRY']._loaded_options = None
36
+ _globals['_GENERICRPCREQUEST_ARGSENTRY']._serialized_options = b'8\001'
37
+ _globals['_GENERICRPCRESPONSE_RESULTSENTRY']._loaded_options = None
38
+ _globals['_GENERICRPCRESPONSE_RESULTSENTRY']._serialized_options = b'8\001'
39
+ _globals['_SAMPLEDIRECTION']._serialized_start=3286
40
+ _globals['_SAMPLEDIRECTION']._serialized_end=3387
41
+ _globals['_SAMPLEFRAMEKIND']._serialized_start=3390
42
+ _globals['_SAMPLEFRAMEKIND']._serialized_end=3632
43
+ _globals['_GENERICRPCREQUEST']._serialized_start=26
44
+ _globals['_GENERICRPCREQUEST']._serialized_end=188
45
+ _globals['_GENERICRPCREQUEST_ARGSENTRY']._serialized_start=124
46
+ _globals['_GENERICRPCREQUEST_ARGSENTRY']._serialized_end=188
47
+ _globals['_GENERICRPCRESPONSE']._serialized_start=191
48
+ _globals['_GENERICRPCRESPONSE']._serialized_end=341
49
+ _globals['_GENERICRPCRESPONSE_RESULTSENTRY']._serialized_start=274
50
+ _globals['_GENERICRPCRESPONSE_RESULTSENTRY']._serialized_end=341
51
+ _globals['_ARRAYSHAPE']._serialized_start=343
52
+ _globals['_ARRAYSHAPE']._serialized_end=368
53
+ _globals['_COMPLEXNUMBER']._serialized_start=370
54
+ _globals['_COMPLEXNUMBER']._serialized_end=413
55
+ _globals['_COMPLEXNUMPYARRAY']._serialized_start=415
56
+ _globals['_COMPLEXNUMPYARRAY']._serialized_end=512
57
+ _globals['_REALNUMPYARRAY']._serialized_start=514
58
+ _globals['_REALNUMPYARRAY']._serialized_end=582
59
+ _globals['_ARGUMENT']._serialized_start=585
60
+ _globals['_ARGUMENT']._serialized_end=895
61
+ _globals['_NDARRAYVALUE']._serialized_start=897
62
+ _globals['_NDARRAYVALUE']._serialized_end=955
63
+ _globals['_DYNAMICVALUE']._serialized_start=958
64
+ _globals['_DYNAMICVALUE']._serialized_end=1191
65
+ _globals['_NAMEDVALUE']._serialized_start=1193
66
+ _globals['_NAMEDVALUE']._serialized_end=1259
67
+ _globals['_MUTATION']._serialized_start=1261
68
+ _globals['_MUTATION']._serialized_end=1327
69
+ _globals['_ERRORENVELOPE']._serialized_start=1330
70
+ _globals['_ERRORENVELOPE']._serialized_end=1506
71
+ _globals['_NEGOTIATEREQUEST']._serialized_start=1508
72
+ _globals['_NEGOTIATEREQUEST']._serialized_end=1623
73
+ _globals['_NEGOTIATERESPONSE']._serialized_start=1626
74
+ _globals['_NEGOTIATERESPONSE']._serialized_end=1780
75
+ _globals['_GETSCHEMAREQUEST']._serialized_start=1782
76
+ _globals['_GETSCHEMAREQUEST']._serialized_end=1840
77
+ _globals['_GETSCHEMARESPONSE']._serialized_start=1842
78
+ _globals['_GETSCHEMARESPONSE']._serialized_end=1968
79
+ _globals['_OPENSESSIONREQUEST']._serialized_start=1971
80
+ _globals['_OPENSESSIONREQUEST']._serialized_end=2107
81
+ _globals['_OPENSESSIONRESPONSE']._serialized_start=2110
82
+ _globals['_OPENSESSIONRESPONSE']._serialized_end=2348
83
+ _globals['_INVOKEREQUEST']._serialized_start=2350
84
+ _globals['_INVOKEREQUEST']._serialized_end=2475
85
+ _globals['_INVOKERESPONSE']._serialized_start=2478
86
+ _globals['_INVOKERESPONSE']._serialized_end=2616
87
+ _globals['_CLOSEHANDLEREQUEST']._serialized_start=2618
88
+ _globals['_CLOSEHANDLEREQUEST']._serialized_end=2674
89
+ _globals['_CLOSESESSIONREQUEST']._serialized_start=2676
90
+ _globals['_CLOSESESSIONREQUEST']._serialized_end=2717
91
+ _globals['_CLOSERESPONSE']._serialized_start=2719
92
+ _globals['_CLOSERESPONSE']._serialized_end=2791
93
+ _globals['_SAMPLEFRAME']._serialized_start=2794
94
+ _globals['_SAMPLEFRAME']._serialized_end=3284
95
+ _globals['_GENERICRPC']._serialized_start=3634
96
+ _globals['_GENERICRPC']._serialized_end=3715
97
+ _globals['_DYNAMICCONTROLV2']._serialized_start=3718
98
+ _globals['_DYNAMICCONTROLV2']._serialized_end=4167
99
+ _globals['_SAMPLEDATAV1']._serialized_start=4169
100
+ _globals['_SAMPLEDATAV1']._serialized_end=4251
101
+ # @@protoc_insertion_point(module_scope)