RemoteRF 2.0.3__tar.gz → 2.0.4__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 (55) hide show
  1. {remoterf-2.0.3/src/remoteRF.egg-info → remoterf-2.0.4}/PKG-INFO +62 -3
  2. {remoterf-2.0.3 → remoterf-2.0.4}/README.md +60 -1
  3. {remoterf-2.0.3 → remoterf-2.0.4}/setup.py +3 -3
  4. remoterf-2.0.4/src/remoteRF/common/grpc/grpc_pb2.py +101 -0
  5. remoterf-2.0.4/src/remoteRF/common/grpc/grpc_pb2_grpc.py +462 -0
  6. remoterf-2.0.4/src/remoteRF/common/grpc/v2_codec.py +130 -0
  7. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/common/utils/process_arg.py +3 -0
  8. remoterf-2.0.4/src/remoteRF/core/__init__.py +20 -0
  9. remoterf-2.0.4/src/remoteRF/core/dynamic_v2_transport.py +477 -0
  10. remoterf-2.0.4/src/remoteRF/core/v2_errors.py +100 -0
  11. remoterf-2.0.4/src/remoteRF/drivers/__init__.py +26 -0
  12. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/drivers/dynamic_device.py +101 -7
  13. remoterf-2.0.4/src/remoteRF/drivers/dynamic_v2.py +839 -0
  14. remoterf-2.0.4/src/remoteRF/drivers/support/uhd_v2.py +741 -0
  15. remoterf-2.0.4/src/remoteRF/drivers/usrp/__init__.py +4 -0
  16. remoterf-2.0.4/src/remoteRF/drivers/usrp/usrp_remote.py +8 -0
  17. remoterf-2.0.4/src/remoteRF/drivers/usrp/usrp_remote.pyi +180 -0
  18. {remoterf-2.0.3 → remoterf-2.0.4/src/remoteRF.egg-info}/PKG-INFO +62 -3
  19. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF.egg-info/SOURCES.txt +9 -0
  20. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF.egg-info/requires.txt +2 -2
  21. remoterf-2.0.4/tests/test_dynamic_v2.py +705 -0
  22. remoterf-2.0.3/src/remoteRF/common/grpc/grpc_pb2.py +0 -59
  23. remoterf-2.0.3/src/remoteRF/common/grpc/grpc_pb2_grpc.py +0 -97
  24. remoterf-2.0.3/src/remoteRF/core/__init__.py +0 -2
  25. remoterf-2.0.3/src/remoteRF/drivers/__init__.py +0 -1
  26. {remoterf-2.0.3 → remoterf-2.0.4}/LICENSE +0 -0
  27. {remoterf-2.0.3 → remoterf-2.0.4}/MANIFEST.in +0 -0
  28. {remoterf-2.0.3 → remoterf-2.0.4}/setup.cfg +0 -0
  29. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/__init__.py +0 -0
  30. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/common/__init__.py +0 -0
  31. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/common/grpc/__init__.py +0 -0
  32. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/common/tos_notice.txt +0 -0
  33. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/common/utils/__init__.py +0 -0
  34. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/common/utils/ansi_codes.py +0 -0
  35. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/common/utils/api_token.py +0 -0
  36. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/common/utils/list_string.py +0 -0
  37. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/config/__init__.py +0 -0
  38. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/config/cert_fetcher.py +0 -0
  39. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/config/config.py +0 -0
  40. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/core/acc_login.py +0 -0
  41. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/core/app.py +0 -0
  42. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/core/banner_note.txt +0 -0
  43. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/core/grpc_acc.py +0 -0
  44. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/core/grpc_client.py +0 -0
  45. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/drivers/adalm_pluto/__init__.py +0 -0
  46. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/drivers/adalm_pluto/pluto_remote.py +0 -0
  47. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/drivers/support/__init__.py +0 -0
  48. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/drivers/support/uhd.py +0 -0
  49. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/remoterf_cli.py +0 -0
  50. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF/version.py +0 -0
  51. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF.egg-info/dependency_links.txt +0 -0
  52. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF.egg-info/entry_points.txt +0 -0
  53. {remoterf-2.0.3 → remoterf-2.0.4}/src/remoteRF.egg-info/top_level.txt +0 -0
  54. {remoterf-2.0.3 → remoterf-2.0.4}/tests/test_dynamic_device_codegen.py +0 -0
  55. {remoterf-2.0.3 → remoterf-2.0.4}/tests/test_process_arg.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.4
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 `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 `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.4",
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\"\xed\x01\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\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=3213
40
+ _globals['_SAMPLEDIRECTION']._serialized_end=3314
41
+ _globals['_SAMPLEFRAMEKIND']._serialized_start=3317
42
+ _globals['_SAMPLEFRAMEKIND']._serialized_end=3559
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=822
61
+ _globals['_NDARRAYVALUE']._serialized_start=824
62
+ _globals['_NDARRAYVALUE']._serialized_end=882
63
+ _globals['_DYNAMICVALUE']._serialized_start=885
64
+ _globals['_DYNAMICVALUE']._serialized_end=1118
65
+ _globals['_NAMEDVALUE']._serialized_start=1120
66
+ _globals['_NAMEDVALUE']._serialized_end=1186
67
+ _globals['_MUTATION']._serialized_start=1188
68
+ _globals['_MUTATION']._serialized_end=1254
69
+ _globals['_ERRORENVELOPE']._serialized_start=1257
70
+ _globals['_ERRORENVELOPE']._serialized_end=1433
71
+ _globals['_NEGOTIATEREQUEST']._serialized_start=1435
72
+ _globals['_NEGOTIATEREQUEST']._serialized_end=1550
73
+ _globals['_NEGOTIATERESPONSE']._serialized_start=1553
74
+ _globals['_NEGOTIATERESPONSE']._serialized_end=1707
75
+ _globals['_GETSCHEMAREQUEST']._serialized_start=1709
76
+ _globals['_GETSCHEMAREQUEST']._serialized_end=1767
77
+ _globals['_GETSCHEMARESPONSE']._serialized_start=1769
78
+ _globals['_GETSCHEMARESPONSE']._serialized_end=1895
79
+ _globals['_OPENSESSIONREQUEST']._serialized_start=1898
80
+ _globals['_OPENSESSIONREQUEST']._serialized_end=2034
81
+ _globals['_OPENSESSIONRESPONSE']._serialized_start=2037
82
+ _globals['_OPENSESSIONRESPONSE']._serialized_end=2275
83
+ _globals['_INVOKEREQUEST']._serialized_start=2277
84
+ _globals['_INVOKEREQUEST']._serialized_end=2402
85
+ _globals['_INVOKERESPONSE']._serialized_start=2405
86
+ _globals['_INVOKERESPONSE']._serialized_end=2543
87
+ _globals['_CLOSEHANDLEREQUEST']._serialized_start=2545
88
+ _globals['_CLOSEHANDLEREQUEST']._serialized_end=2601
89
+ _globals['_CLOSESESSIONREQUEST']._serialized_start=2603
90
+ _globals['_CLOSESESSIONREQUEST']._serialized_end=2644
91
+ _globals['_CLOSERESPONSE']._serialized_start=2646
92
+ _globals['_CLOSERESPONSE']._serialized_end=2718
93
+ _globals['_SAMPLEFRAME']._serialized_start=2721
94
+ _globals['_SAMPLEFRAME']._serialized_end=3211
95
+ _globals['_GENERICRPC']._serialized_start=3561
96
+ _globals['_GENERICRPC']._serialized_end=3642
97
+ _globals['_DYNAMICCONTROLV2']._serialized_start=3645
98
+ _globals['_DYNAMICCONTROLV2']._serialized_end=4094
99
+ _globals['_SAMPLEDATAV1']._serialized_start=4096
100
+ _globals['_SAMPLEDATAV1']._serialized_end=4178
101
+ # @@protoc_insertion_point(module_scope)