bumble 0.0.199__py3-none-any.whl → 0.0.201__py3-none-any.whl
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.
- bumble/_version.py +2 -2
- bumble/a2dp.py +502 -202
- bumble/apps/controller_info.py +60 -0
- bumble/apps/player/player.py +608 -0
- bumble/apps/speaker/speaker.py +25 -27
- bumble/att.py +2 -2
- bumble/avc.py +1 -2
- bumble/avdtp.py +54 -97
- bumble/avrcp.py +48 -29
- bumble/codecs.py +214 -68
- bumble/device.py +19 -11
- bumble/hci.py +31 -5
- bumble/hfp.py +52 -48
- bumble/host.py +12 -0
- bumble/profiles/hap.py +27 -18
- bumble/rtp.py +110 -0
- bumble/transport/android_netsim.py +31 -11
- bumble/transport/grpc_protobuf/netsim/__init__.py +0 -0
- bumble/transport/grpc_protobuf/{common_pb2.py → netsim/common_pb2.py} +9 -8
- bumble/transport/grpc_protobuf/{common_pb2.pyi → netsim/common_pb2.pyi} +11 -5
- bumble/transport/grpc_protobuf/netsim/hci_packet_pb2.py +29 -0
- bumble/transport/grpc_protobuf/{hci_packet_pb2.pyi → netsim/hci_packet_pb2.pyi} +13 -7
- bumble/transport/grpc_protobuf/netsim/model_pb2.py +63 -0
- bumble/transport/grpc_protobuf/netsim/model_pb2.pyi +238 -0
- bumble/transport/grpc_protobuf/netsim/packet_streamer_pb2.py +32 -0
- bumble/transport/grpc_protobuf/{packet_streamer_pb2.pyi → netsim/packet_streamer_pb2.pyi} +6 -6
- bumble/transport/grpc_protobuf/{packet_streamer_pb2_grpc.py → netsim/packet_streamer_pb2_grpc.py} +7 -7
- bumble/transport/grpc_protobuf/netsim/startup_pb2.py +41 -0
- bumble/transport/grpc_protobuf/netsim/startup_pb2.pyi +76 -0
- bumble/transport/grpc_protobuf/netsim/startup_pb2_grpc.py +4 -0
- bumble/transport/grpc_protobuf/rootcanal/__init__.py +0 -0
- bumble/transport/grpc_protobuf/rootcanal/configuration_pb2.py +39 -0
- bumble/transport/grpc_protobuf/rootcanal/configuration_pb2.pyi +78 -0
- bumble/transport/grpc_protobuf/rootcanal/configuration_pb2_grpc.py +4 -0
- bumble/transport/pyusb.py +2 -1
- {bumble-0.0.199.dist-info → bumble-0.0.201.dist-info}/METADATA +2 -2
- {bumble-0.0.199.dist-info → bumble-0.0.201.dist-info}/RECORD +44 -34
- {bumble-0.0.199.dist-info → bumble-0.0.201.dist-info}/WHEEL +1 -1
- {bumble-0.0.199.dist-info → bumble-0.0.201.dist-info}/entry_points.txt +1 -0
- bumble/transport/grpc_protobuf/hci_packet_pb2.py +0 -28
- bumble/transport/grpc_protobuf/packet_streamer_pb2.py +0 -31
- bumble/transport/grpc_protobuf/startup_pb2.py +0 -32
- bumble/transport/grpc_protobuf/startup_pb2.pyi +0 -46
- /bumble/transport/grpc_protobuf/{common_pb2_grpc.py → netsim/common_pb2_grpc.py} +0 -0
- /bumble/transport/grpc_protobuf/{hci_packet_pb2_grpc.py → netsim/hci_packet_pb2_grpc.py} +0 -0
- /bumble/transport/grpc_protobuf/{startup_pb2_grpc.py → netsim/model_pb2_grpc.py} +0 -0
- {bumble-0.0.199.dist-info → bumble-0.0.201.dist-info}/LICENSE +0 -0
- {bumble-0.0.199.dist-info → bumble-0.0.201.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
from bumble.transport.grpc_protobuf.netsim import common_pb2 as _common_pb2
|
|
2
|
+
from google.protobuf import timestamp_pb2 as _timestamp_pb2
|
|
3
|
+
from bumble.transport.grpc_protobuf.rootcanal import configuration_pb2 as _configuration_pb2
|
|
4
|
+
from google.protobuf.internal import containers as _containers
|
|
5
|
+
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
|
7
|
+
from google.protobuf import message as _message
|
|
8
|
+
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
|
|
9
|
+
|
|
10
|
+
DESCRIPTOR: _descriptor.FileDescriptor
|
|
11
|
+
|
|
12
|
+
class PhyKind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
13
|
+
__slots__ = ()
|
|
14
|
+
NONE: _ClassVar[PhyKind]
|
|
15
|
+
BLUETOOTH_CLASSIC: _ClassVar[PhyKind]
|
|
16
|
+
BLUETOOTH_LOW_ENERGY: _ClassVar[PhyKind]
|
|
17
|
+
WIFI: _ClassVar[PhyKind]
|
|
18
|
+
UWB: _ClassVar[PhyKind]
|
|
19
|
+
WIFI_RTT: _ClassVar[PhyKind]
|
|
20
|
+
NONE: PhyKind
|
|
21
|
+
BLUETOOTH_CLASSIC: PhyKind
|
|
22
|
+
BLUETOOTH_LOW_ENERGY: PhyKind
|
|
23
|
+
WIFI: PhyKind
|
|
24
|
+
UWB: PhyKind
|
|
25
|
+
WIFI_RTT: PhyKind
|
|
26
|
+
|
|
27
|
+
class Position(_message.Message):
|
|
28
|
+
__slots__ = ("x", "y", "z")
|
|
29
|
+
X_FIELD_NUMBER: _ClassVar[int]
|
|
30
|
+
Y_FIELD_NUMBER: _ClassVar[int]
|
|
31
|
+
Z_FIELD_NUMBER: _ClassVar[int]
|
|
32
|
+
x: float
|
|
33
|
+
y: float
|
|
34
|
+
z: float
|
|
35
|
+
def __init__(self, x: _Optional[float] = ..., y: _Optional[float] = ..., z: _Optional[float] = ...) -> None: ...
|
|
36
|
+
|
|
37
|
+
class Orientation(_message.Message):
|
|
38
|
+
__slots__ = ("yaw", "pitch", "roll")
|
|
39
|
+
YAW_FIELD_NUMBER: _ClassVar[int]
|
|
40
|
+
PITCH_FIELD_NUMBER: _ClassVar[int]
|
|
41
|
+
ROLL_FIELD_NUMBER: _ClassVar[int]
|
|
42
|
+
yaw: float
|
|
43
|
+
pitch: float
|
|
44
|
+
roll: float
|
|
45
|
+
def __init__(self, yaw: _Optional[float] = ..., pitch: _Optional[float] = ..., roll: _Optional[float] = ...) -> None: ...
|
|
46
|
+
|
|
47
|
+
class Chip(_message.Message):
|
|
48
|
+
__slots__ = ("kind", "id", "name", "manufacturer", "product_name", "bt", "ble_beacon", "uwb", "wifi", "offset")
|
|
49
|
+
class Radio(_message.Message):
|
|
50
|
+
__slots__ = ("state", "range", "tx_count", "rx_count")
|
|
51
|
+
STATE_FIELD_NUMBER: _ClassVar[int]
|
|
52
|
+
RANGE_FIELD_NUMBER: _ClassVar[int]
|
|
53
|
+
TX_COUNT_FIELD_NUMBER: _ClassVar[int]
|
|
54
|
+
RX_COUNT_FIELD_NUMBER: _ClassVar[int]
|
|
55
|
+
state: bool
|
|
56
|
+
range: float
|
|
57
|
+
tx_count: int
|
|
58
|
+
rx_count: int
|
|
59
|
+
def __init__(self, state: bool = ..., range: _Optional[float] = ..., tx_count: _Optional[int] = ..., rx_count: _Optional[int] = ...) -> None: ...
|
|
60
|
+
class Bluetooth(_message.Message):
|
|
61
|
+
__slots__ = ("low_energy", "classic", "address", "bt_properties")
|
|
62
|
+
LOW_ENERGY_FIELD_NUMBER: _ClassVar[int]
|
|
63
|
+
CLASSIC_FIELD_NUMBER: _ClassVar[int]
|
|
64
|
+
ADDRESS_FIELD_NUMBER: _ClassVar[int]
|
|
65
|
+
BT_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
|
|
66
|
+
low_energy: Chip.Radio
|
|
67
|
+
classic: Chip.Radio
|
|
68
|
+
address: str
|
|
69
|
+
bt_properties: _configuration_pb2.Controller
|
|
70
|
+
def __init__(self, low_energy: _Optional[_Union[Chip.Radio, _Mapping]] = ..., classic: _Optional[_Union[Chip.Radio, _Mapping]] = ..., address: _Optional[str] = ..., bt_properties: _Optional[_Union[_configuration_pb2.Controller, _Mapping]] = ...) -> None: ...
|
|
71
|
+
class BleBeacon(_message.Message):
|
|
72
|
+
__slots__ = ("bt", "address", "settings", "adv_data", "scan_response")
|
|
73
|
+
class AdvertiseSettings(_message.Message):
|
|
74
|
+
__slots__ = ("advertise_mode", "milliseconds", "tx_power_level", "dbm", "scannable", "timeout")
|
|
75
|
+
class AdvertiseMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
76
|
+
__slots__ = ()
|
|
77
|
+
LOW_POWER: _ClassVar[Chip.BleBeacon.AdvertiseSettings.AdvertiseMode]
|
|
78
|
+
BALANCED: _ClassVar[Chip.BleBeacon.AdvertiseSettings.AdvertiseMode]
|
|
79
|
+
LOW_LATENCY: _ClassVar[Chip.BleBeacon.AdvertiseSettings.AdvertiseMode]
|
|
80
|
+
LOW_POWER: Chip.BleBeacon.AdvertiseSettings.AdvertiseMode
|
|
81
|
+
BALANCED: Chip.BleBeacon.AdvertiseSettings.AdvertiseMode
|
|
82
|
+
LOW_LATENCY: Chip.BleBeacon.AdvertiseSettings.AdvertiseMode
|
|
83
|
+
class AdvertiseTxPower(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
84
|
+
__slots__ = ()
|
|
85
|
+
ULTRA_LOW: _ClassVar[Chip.BleBeacon.AdvertiseSettings.AdvertiseTxPower]
|
|
86
|
+
LOW: _ClassVar[Chip.BleBeacon.AdvertiseSettings.AdvertiseTxPower]
|
|
87
|
+
MEDIUM: _ClassVar[Chip.BleBeacon.AdvertiseSettings.AdvertiseTxPower]
|
|
88
|
+
HIGH: _ClassVar[Chip.BleBeacon.AdvertiseSettings.AdvertiseTxPower]
|
|
89
|
+
ULTRA_LOW: Chip.BleBeacon.AdvertiseSettings.AdvertiseTxPower
|
|
90
|
+
LOW: Chip.BleBeacon.AdvertiseSettings.AdvertiseTxPower
|
|
91
|
+
MEDIUM: Chip.BleBeacon.AdvertiseSettings.AdvertiseTxPower
|
|
92
|
+
HIGH: Chip.BleBeacon.AdvertiseSettings.AdvertiseTxPower
|
|
93
|
+
ADVERTISE_MODE_FIELD_NUMBER: _ClassVar[int]
|
|
94
|
+
MILLISECONDS_FIELD_NUMBER: _ClassVar[int]
|
|
95
|
+
TX_POWER_LEVEL_FIELD_NUMBER: _ClassVar[int]
|
|
96
|
+
DBM_FIELD_NUMBER: _ClassVar[int]
|
|
97
|
+
SCANNABLE_FIELD_NUMBER: _ClassVar[int]
|
|
98
|
+
TIMEOUT_FIELD_NUMBER: _ClassVar[int]
|
|
99
|
+
advertise_mode: Chip.BleBeacon.AdvertiseSettings.AdvertiseMode
|
|
100
|
+
milliseconds: int
|
|
101
|
+
tx_power_level: Chip.BleBeacon.AdvertiseSettings.AdvertiseTxPower
|
|
102
|
+
dbm: int
|
|
103
|
+
scannable: bool
|
|
104
|
+
timeout: int
|
|
105
|
+
def __init__(self, advertise_mode: _Optional[_Union[Chip.BleBeacon.AdvertiseSettings.AdvertiseMode, str]] = ..., milliseconds: _Optional[int] = ..., tx_power_level: _Optional[_Union[Chip.BleBeacon.AdvertiseSettings.AdvertiseTxPower, str]] = ..., dbm: _Optional[int] = ..., scannable: bool = ..., timeout: _Optional[int] = ...) -> None: ...
|
|
106
|
+
class AdvertiseData(_message.Message):
|
|
107
|
+
__slots__ = ("include_device_name", "include_tx_power_level", "manufacturer_data", "services")
|
|
108
|
+
class Service(_message.Message):
|
|
109
|
+
__slots__ = ("uuid", "data")
|
|
110
|
+
UUID_FIELD_NUMBER: _ClassVar[int]
|
|
111
|
+
DATA_FIELD_NUMBER: _ClassVar[int]
|
|
112
|
+
uuid: str
|
|
113
|
+
data: bytes
|
|
114
|
+
def __init__(self, uuid: _Optional[str] = ..., data: _Optional[bytes] = ...) -> None: ...
|
|
115
|
+
INCLUDE_DEVICE_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
116
|
+
INCLUDE_TX_POWER_LEVEL_FIELD_NUMBER: _ClassVar[int]
|
|
117
|
+
MANUFACTURER_DATA_FIELD_NUMBER: _ClassVar[int]
|
|
118
|
+
SERVICES_FIELD_NUMBER: _ClassVar[int]
|
|
119
|
+
include_device_name: bool
|
|
120
|
+
include_tx_power_level: bool
|
|
121
|
+
manufacturer_data: bytes
|
|
122
|
+
services: _containers.RepeatedCompositeFieldContainer[Chip.BleBeacon.AdvertiseData.Service]
|
|
123
|
+
def __init__(self, include_device_name: bool = ..., include_tx_power_level: bool = ..., manufacturer_data: _Optional[bytes] = ..., services: _Optional[_Iterable[_Union[Chip.BleBeacon.AdvertiseData.Service, _Mapping]]] = ...) -> None: ...
|
|
124
|
+
BT_FIELD_NUMBER: _ClassVar[int]
|
|
125
|
+
ADDRESS_FIELD_NUMBER: _ClassVar[int]
|
|
126
|
+
SETTINGS_FIELD_NUMBER: _ClassVar[int]
|
|
127
|
+
ADV_DATA_FIELD_NUMBER: _ClassVar[int]
|
|
128
|
+
SCAN_RESPONSE_FIELD_NUMBER: _ClassVar[int]
|
|
129
|
+
bt: Chip.Bluetooth
|
|
130
|
+
address: str
|
|
131
|
+
settings: Chip.BleBeacon.AdvertiseSettings
|
|
132
|
+
adv_data: Chip.BleBeacon.AdvertiseData
|
|
133
|
+
scan_response: Chip.BleBeacon.AdvertiseData
|
|
134
|
+
def __init__(self, bt: _Optional[_Union[Chip.Bluetooth, _Mapping]] = ..., address: _Optional[str] = ..., settings: _Optional[_Union[Chip.BleBeacon.AdvertiseSettings, _Mapping]] = ..., adv_data: _Optional[_Union[Chip.BleBeacon.AdvertiseData, _Mapping]] = ..., scan_response: _Optional[_Union[Chip.BleBeacon.AdvertiseData, _Mapping]] = ...) -> None: ...
|
|
135
|
+
KIND_FIELD_NUMBER: _ClassVar[int]
|
|
136
|
+
ID_FIELD_NUMBER: _ClassVar[int]
|
|
137
|
+
NAME_FIELD_NUMBER: _ClassVar[int]
|
|
138
|
+
MANUFACTURER_FIELD_NUMBER: _ClassVar[int]
|
|
139
|
+
PRODUCT_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
140
|
+
BT_FIELD_NUMBER: _ClassVar[int]
|
|
141
|
+
BLE_BEACON_FIELD_NUMBER: _ClassVar[int]
|
|
142
|
+
UWB_FIELD_NUMBER: _ClassVar[int]
|
|
143
|
+
WIFI_FIELD_NUMBER: _ClassVar[int]
|
|
144
|
+
OFFSET_FIELD_NUMBER: _ClassVar[int]
|
|
145
|
+
kind: _common_pb2.ChipKind
|
|
146
|
+
id: int
|
|
147
|
+
name: str
|
|
148
|
+
manufacturer: str
|
|
149
|
+
product_name: str
|
|
150
|
+
bt: Chip.Bluetooth
|
|
151
|
+
ble_beacon: Chip.BleBeacon
|
|
152
|
+
uwb: Chip.Radio
|
|
153
|
+
wifi: Chip.Radio
|
|
154
|
+
offset: Position
|
|
155
|
+
def __init__(self, kind: _Optional[_Union[_common_pb2.ChipKind, str]] = ..., id: _Optional[int] = ..., name: _Optional[str] = ..., manufacturer: _Optional[str] = ..., product_name: _Optional[str] = ..., bt: _Optional[_Union[Chip.Bluetooth, _Mapping]] = ..., ble_beacon: _Optional[_Union[Chip.BleBeacon, _Mapping]] = ..., uwb: _Optional[_Union[Chip.Radio, _Mapping]] = ..., wifi: _Optional[_Union[Chip.Radio, _Mapping]] = ..., offset: _Optional[_Union[Position, _Mapping]] = ...) -> None: ...
|
|
156
|
+
|
|
157
|
+
class ChipCreate(_message.Message):
|
|
158
|
+
__slots__ = ("kind", "address", "name", "manufacturer", "product_name", "ble_beacon", "bt_properties")
|
|
159
|
+
class BleBeaconCreate(_message.Message):
|
|
160
|
+
__slots__ = ("address", "settings", "adv_data", "scan_response")
|
|
161
|
+
ADDRESS_FIELD_NUMBER: _ClassVar[int]
|
|
162
|
+
SETTINGS_FIELD_NUMBER: _ClassVar[int]
|
|
163
|
+
ADV_DATA_FIELD_NUMBER: _ClassVar[int]
|
|
164
|
+
SCAN_RESPONSE_FIELD_NUMBER: _ClassVar[int]
|
|
165
|
+
address: str
|
|
166
|
+
settings: Chip.BleBeacon.AdvertiseSettings
|
|
167
|
+
adv_data: Chip.BleBeacon.AdvertiseData
|
|
168
|
+
scan_response: Chip.BleBeacon.AdvertiseData
|
|
169
|
+
def __init__(self, address: _Optional[str] = ..., settings: _Optional[_Union[Chip.BleBeacon.AdvertiseSettings, _Mapping]] = ..., adv_data: _Optional[_Union[Chip.BleBeacon.AdvertiseData, _Mapping]] = ..., scan_response: _Optional[_Union[Chip.BleBeacon.AdvertiseData, _Mapping]] = ...) -> None: ...
|
|
170
|
+
KIND_FIELD_NUMBER: _ClassVar[int]
|
|
171
|
+
ADDRESS_FIELD_NUMBER: _ClassVar[int]
|
|
172
|
+
NAME_FIELD_NUMBER: _ClassVar[int]
|
|
173
|
+
MANUFACTURER_FIELD_NUMBER: _ClassVar[int]
|
|
174
|
+
PRODUCT_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
175
|
+
BLE_BEACON_FIELD_NUMBER: _ClassVar[int]
|
|
176
|
+
BT_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
|
|
177
|
+
kind: _common_pb2.ChipKind
|
|
178
|
+
address: str
|
|
179
|
+
name: str
|
|
180
|
+
manufacturer: str
|
|
181
|
+
product_name: str
|
|
182
|
+
ble_beacon: ChipCreate.BleBeaconCreate
|
|
183
|
+
bt_properties: _configuration_pb2.Controller
|
|
184
|
+
def __init__(self, kind: _Optional[_Union[_common_pb2.ChipKind, str]] = ..., address: _Optional[str] = ..., name: _Optional[str] = ..., manufacturer: _Optional[str] = ..., product_name: _Optional[str] = ..., ble_beacon: _Optional[_Union[ChipCreate.BleBeaconCreate, _Mapping]] = ..., bt_properties: _Optional[_Union[_configuration_pb2.Controller, _Mapping]] = ...) -> None: ...
|
|
185
|
+
|
|
186
|
+
class Device(_message.Message):
|
|
187
|
+
__slots__ = ("id", "name", "visible", "position", "orientation", "chips")
|
|
188
|
+
ID_FIELD_NUMBER: _ClassVar[int]
|
|
189
|
+
NAME_FIELD_NUMBER: _ClassVar[int]
|
|
190
|
+
VISIBLE_FIELD_NUMBER: _ClassVar[int]
|
|
191
|
+
POSITION_FIELD_NUMBER: _ClassVar[int]
|
|
192
|
+
ORIENTATION_FIELD_NUMBER: _ClassVar[int]
|
|
193
|
+
CHIPS_FIELD_NUMBER: _ClassVar[int]
|
|
194
|
+
id: int
|
|
195
|
+
name: str
|
|
196
|
+
visible: bool
|
|
197
|
+
position: Position
|
|
198
|
+
orientation: Orientation
|
|
199
|
+
chips: _containers.RepeatedCompositeFieldContainer[Chip]
|
|
200
|
+
def __init__(self, id: _Optional[int] = ..., name: _Optional[str] = ..., visible: bool = ..., position: _Optional[_Union[Position, _Mapping]] = ..., orientation: _Optional[_Union[Orientation, _Mapping]] = ..., chips: _Optional[_Iterable[_Union[Chip, _Mapping]]] = ...) -> None: ...
|
|
201
|
+
|
|
202
|
+
class DeviceCreate(_message.Message):
|
|
203
|
+
__slots__ = ("name", "position", "orientation", "chips")
|
|
204
|
+
NAME_FIELD_NUMBER: _ClassVar[int]
|
|
205
|
+
POSITION_FIELD_NUMBER: _ClassVar[int]
|
|
206
|
+
ORIENTATION_FIELD_NUMBER: _ClassVar[int]
|
|
207
|
+
CHIPS_FIELD_NUMBER: _ClassVar[int]
|
|
208
|
+
name: str
|
|
209
|
+
position: Position
|
|
210
|
+
orientation: Orientation
|
|
211
|
+
chips: _containers.RepeatedCompositeFieldContainer[ChipCreate]
|
|
212
|
+
def __init__(self, name: _Optional[str] = ..., position: _Optional[_Union[Position, _Mapping]] = ..., orientation: _Optional[_Union[Orientation, _Mapping]] = ..., chips: _Optional[_Iterable[_Union[ChipCreate, _Mapping]]] = ...) -> None: ...
|
|
213
|
+
|
|
214
|
+
class Scene(_message.Message):
|
|
215
|
+
__slots__ = ("devices",)
|
|
216
|
+
DEVICES_FIELD_NUMBER: _ClassVar[int]
|
|
217
|
+
devices: _containers.RepeatedCompositeFieldContainer[Device]
|
|
218
|
+
def __init__(self, devices: _Optional[_Iterable[_Union[Device, _Mapping]]] = ...) -> None: ...
|
|
219
|
+
|
|
220
|
+
class Capture(_message.Message):
|
|
221
|
+
__slots__ = ("id", "chip_kind", "device_name", "state", "size", "records", "timestamp", "valid")
|
|
222
|
+
ID_FIELD_NUMBER: _ClassVar[int]
|
|
223
|
+
CHIP_KIND_FIELD_NUMBER: _ClassVar[int]
|
|
224
|
+
DEVICE_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
225
|
+
STATE_FIELD_NUMBER: _ClassVar[int]
|
|
226
|
+
SIZE_FIELD_NUMBER: _ClassVar[int]
|
|
227
|
+
RECORDS_FIELD_NUMBER: _ClassVar[int]
|
|
228
|
+
TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
|
|
229
|
+
VALID_FIELD_NUMBER: _ClassVar[int]
|
|
230
|
+
id: int
|
|
231
|
+
chip_kind: _common_pb2.ChipKind
|
|
232
|
+
device_name: str
|
|
233
|
+
state: bool
|
|
234
|
+
size: int
|
|
235
|
+
records: int
|
|
236
|
+
timestamp: _timestamp_pb2.Timestamp
|
|
237
|
+
valid: bool
|
|
238
|
+
def __init__(self, id: _Optional[int] = ..., chip_kind: _Optional[_Union[_common_pb2.ChipKind, str]] = ..., device_name: _Optional[str] = ..., state: bool = ..., size: _Optional[int] = ..., records: _Optional[int] = ..., timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., valid: bool = ...) -> None: ...
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: netsim/packet_streamer.proto
|
|
4
|
+
# Protobuf Python Version: 4.25.1
|
|
5
|
+
"""Generated protocol buffer code."""
|
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
9
|
+
from google.protobuf.internal import builder as _builder
|
|
10
|
+
# @@protoc_insertion_point(imports)
|
|
11
|
+
|
|
12
|
+
_sym_db = _symbol_database.Default()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from bumble.transport.grpc_protobuf.netsim import hci_packet_pb2 as netsim_dot_hci__packet__pb2
|
|
16
|
+
from bumble.transport.grpc_protobuf.netsim import startup_pb2 as netsim_dot_startup__pb2
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cnetsim/packet_streamer.proto\x12\rnetsim.packet\x1a\x17netsim/hci_packet.proto\x1a\x14netsim/startup.proto\"\x93\x01\n\rPacketRequest\x12\x30\n\x0cinitial_info\x18\x01 \x01(\x0b\x32\x18.netsim.startup.ChipInfoH\x00\x12.\n\nhci_packet\x18\x02 \x01(\x0b\x32\x18.netsim.packet.HCIPacketH\x00\x12\x10\n\x06packet\x18\x03 \x01(\x0cH\x00\x42\x0e\n\x0crequest_type\"t\n\x0ePacketResponse\x12\x0f\n\x05\x65rror\x18\x01 \x01(\tH\x00\x12.\n\nhci_packet\x18\x02 \x01(\x0b\x32\x18.netsim.packet.HCIPacketH\x00\x12\x10\n\x06packet\x18\x03 \x01(\x0cH\x00\x42\x0f\n\rresponse_type2b\n\x0ePacketStreamer\x12P\n\rStreamPackets\x12\x1c.netsim.packet.PacketRequest\x1a\x1d.netsim.packet.PacketResponse(\x01\x30\x01\x62\x06proto3')
|
|
20
|
+
|
|
21
|
+
_globals = globals()
|
|
22
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
23
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'netsim.packet_streamer_pb2', _globals)
|
|
24
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
25
|
+
DESCRIPTOR._options = None
|
|
26
|
+
_globals['_PACKETREQUEST']._serialized_start=95
|
|
27
|
+
_globals['_PACKETREQUEST']._serialized_end=242
|
|
28
|
+
_globals['_PACKETRESPONSE']._serialized_start=244
|
|
29
|
+
_globals['_PACKETRESPONSE']._serialized_end=360
|
|
30
|
+
_globals['_PACKETSTREAMER']._serialized_start=362
|
|
31
|
+
_globals['_PACKETSTREAMER']._serialized_end=460
|
|
32
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
from . import hci_packet_pb2 as _hci_packet_pb2
|
|
2
|
-
from . import startup_pb2 as _startup_pb2
|
|
1
|
+
from bumble.transport.grpc_protobuf.netsim import hci_packet_pb2 as _hci_packet_pb2
|
|
2
|
+
from bumble.transport.grpc_protobuf.netsim import startup_pb2 as _startup_pb2
|
|
3
3
|
from google.protobuf import descriptor as _descriptor
|
|
4
4
|
from google.protobuf import message as _message
|
|
5
5
|
from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union
|
|
@@ -7,17 +7,17 @@ from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Opti
|
|
|
7
7
|
DESCRIPTOR: _descriptor.FileDescriptor
|
|
8
8
|
|
|
9
9
|
class PacketRequest(_message.Message):
|
|
10
|
-
__slots__ =
|
|
11
|
-
HCI_PACKET_FIELD_NUMBER: _ClassVar[int]
|
|
10
|
+
__slots__ = ("initial_info", "hci_packet", "packet")
|
|
12
11
|
INITIAL_INFO_FIELD_NUMBER: _ClassVar[int]
|
|
12
|
+
HCI_PACKET_FIELD_NUMBER: _ClassVar[int]
|
|
13
13
|
PACKET_FIELD_NUMBER: _ClassVar[int]
|
|
14
|
-
hci_packet: _hci_packet_pb2.HCIPacket
|
|
15
14
|
initial_info: _startup_pb2.ChipInfo
|
|
15
|
+
hci_packet: _hci_packet_pb2.HCIPacket
|
|
16
16
|
packet: bytes
|
|
17
17
|
def __init__(self, initial_info: _Optional[_Union[_startup_pb2.ChipInfo, _Mapping]] = ..., hci_packet: _Optional[_Union[_hci_packet_pb2.HCIPacket, _Mapping]] = ..., packet: _Optional[bytes] = ...) -> None: ...
|
|
18
18
|
|
|
19
19
|
class PacketResponse(_message.Message):
|
|
20
|
-
__slots__ =
|
|
20
|
+
__slots__ = ("error", "hci_packet", "packet")
|
|
21
21
|
ERROR_FIELD_NUMBER: _ClassVar[int]
|
|
22
22
|
HCI_PACKET_FIELD_NUMBER: _ClassVar[int]
|
|
23
23
|
PACKET_FIELD_NUMBER: _ClassVar[int]
|
bumble/transport/grpc_protobuf/{packet_streamer_pb2_grpc.py → netsim/packet_streamer_pb2_grpc.py}
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"""Client and server classes corresponding to protobuf-defined services."""
|
|
3
3
|
import grpc
|
|
4
4
|
|
|
5
|
-
from . import packet_streamer_pb2 as
|
|
5
|
+
from bumble.transport.grpc_protobuf.netsim import packet_streamer_pb2 as netsim_dot_packet__streamer__pb2
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class PacketStreamerStub(object):
|
|
@@ -30,8 +30,8 @@ class PacketStreamerStub(object):
|
|
|
30
30
|
"""
|
|
31
31
|
self.StreamPackets = channel.stream_stream(
|
|
32
32
|
'/netsim.packet.PacketStreamer/StreamPackets',
|
|
33
|
-
request_serializer=
|
|
34
|
-
response_deserializer=
|
|
33
|
+
request_serializer=netsim_dot_packet__streamer__pb2.PacketRequest.SerializeToString,
|
|
34
|
+
response_deserializer=netsim_dot_packet__streamer__pb2.PacketResponse.FromString,
|
|
35
35
|
)
|
|
36
36
|
|
|
37
37
|
|
|
@@ -64,8 +64,8 @@ def add_PacketStreamerServicer_to_server(servicer, server):
|
|
|
64
64
|
rpc_method_handlers = {
|
|
65
65
|
'StreamPackets': grpc.stream_stream_rpc_method_handler(
|
|
66
66
|
servicer.StreamPackets,
|
|
67
|
-
request_deserializer=
|
|
68
|
-
response_serializer=
|
|
67
|
+
request_deserializer=netsim_dot_packet__streamer__pb2.PacketRequest.FromString,
|
|
68
|
+
response_serializer=netsim_dot_packet__streamer__pb2.PacketResponse.SerializeToString,
|
|
69
69
|
),
|
|
70
70
|
}
|
|
71
71
|
generic_handler = grpc.method_handlers_generic_handler(
|
|
@@ -103,7 +103,7 @@ class PacketStreamer(object):
|
|
|
103
103
|
timeout=None,
|
|
104
104
|
metadata=None):
|
|
105
105
|
return grpc.experimental.stream_stream(request_iterator, target, '/netsim.packet.PacketStreamer/StreamPackets',
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
netsim_dot_packet__streamer__pb2.PacketRequest.SerializeToString,
|
|
107
|
+
netsim_dot_packet__streamer__pb2.PacketResponse.FromString,
|
|
108
108
|
options, channel_credentials,
|
|
109
109
|
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: netsim/startup.proto
|
|
4
|
+
# Protobuf Python Version: 4.25.1
|
|
5
|
+
"""Generated protocol buffer code."""
|
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
9
|
+
from google.protobuf.internal import builder as _builder
|
|
10
|
+
# @@protoc_insertion_point(imports)
|
|
11
|
+
|
|
12
|
+
_sym_db = _symbol_database.Default()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from bumble.transport.grpc_protobuf.netsim import common_pb2 as netsim_dot_common__pb2
|
|
16
|
+
from bumble.transport.grpc_protobuf.netsim import model_pb2 as netsim_dot_model__pb2
|
|
17
|
+
from bumble.transport.grpc_protobuf.rootcanal import configuration_pb2 as rootcanal_dot_configuration__pb2
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14netsim/startup.proto\x12\x0enetsim.startup\x1a\x13netsim/common.proto\x1a\x12netsim/model.proto\x1a\x1drootcanal/configuration.proto\"\xb4\x01\n\x0bStartupInfo\x12\x33\n\x07\x64\x65vices\x18\x01 \x03(\x0b\x32\".netsim.startup.StartupInfo.Device\x1ap\n\x06\x44\x65vice\x12\x10\n\x04name\x18\x01 \x01(\tB\x02\x18\x01\x12#\n\x05\x63hips\x18\x02 \x03(\x0b\x32\x14.netsim.startup.Chip\x12/\n\x0b\x64\x65vice_info\x18\x03 \x01(\x0b\x32\x1a.netsim.startup.DeviceInfo\"q\n\x08\x43hipInfo\x12\x10\n\x04name\x18\x01 \x01(\tB\x02\x18\x01\x12\"\n\x04\x63hip\x18\x02 \x01(\x0b\x32\x14.netsim.startup.Chip\x12/\n\x0b\x64\x65vice_info\x18\x03 \x01(\x0b\x32\x1a.netsim.startup.DeviceInfo\"\x7f\n\nDeviceInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x13\n\x0bsdk_version\x18\x04 \x01(\t\x12\x10\n\x08\x62uild_id\x18\x05 \x01(\t\x12\x0f\n\x07variant\x18\x06 \x01(\t\x12\x0c\n\x04\x61rch\x18\x07 \x01(\t\"\x9b\x02\n\x04\x43hip\x12%\n\x04kind\x18\x01 \x01(\x0e\x32\x17.netsim.common.ChipKind\x12\n\n\x02id\x18\x02 \x01(\t\x12\x14\n\x0cmanufacturer\x18\x03 \x01(\t\x12\x14\n\x0cproduct_name\x18\x04 \x01(\t\x12\r\n\x05\x66\x64_in\x18\x05 \x01(\x05\x12\x0e\n\x06\x66\x64_out\x18\x06 \x01(\x05\x12\x10\n\x08loopback\x18\x07 \x01(\x08\x12:\n\rbt_properties\x18\x08 \x01(\x0b\x32#.rootcanal.configuration.Controller\x12\x0f\n\x07\x61\x64\x64ress\x18\t \x01(\t\x12+\n\x06offset\x18\n \x01(\x0b\x32\x16.netsim.model.PositionH\x00\x88\x01\x01\x42\t\n\x07_offsetb\x06proto3')
|
|
21
|
+
|
|
22
|
+
_globals = globals()
|
|
23
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
24
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'netsim.startup_pb2', _globals)
|
|
25
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
26
|
+
DESCRIPTOR._options = None
|
|
27
|
+
_globals['_STARTUPINFO_DEVICE'].fields_by_name['name']._options = None
|
|
28
|
+
_globals['_STARTUPINFO_DEVICE'].fields_by_name['name']._serialized_options = b'\030\001'
|
|
29
|
+
_globals['_CHIPINFO'].fields_by_name['name']._options = None
|
|
30
|
+
_globals['_CHIPINFO'].fields_by_name['name']._serialized_options = b'\030\001'
|
|
31
|
+
_globals['_STARTUPINFO']._serialized_start=113
|
|
32
|
+
_globals['_STARTUPINFO']._serialized_end=293
|
|
33
|
+
_globals['_STARTUPINFO_DEVICE']._serialized_start=181
|
|
34
|
+
_globals['_STARTUPINFO_DEVICE']._serialized_end=293
|
|
35
|
+
_globals['_CHIPINFO']._serialized_start=295
|
|
36
|
+
_globals['_CHIPINFO']._serialized_end=408
|
|
37
|
+
_globals['_DEVICEINFO']._serialized_start=410
|
|
38
|
+
_globals['_DEVICEINFO']._serialized_end=537
|
|
39
|
+
_globals['_CHIP']._serialized_start=540
|
|
40
|
+
_globals['_CHIP']._serialized_end=823
|
|
41
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
from bumble.transport.grpc_protobuf.netsim import common_pb2 as _common_pb2
|
|
2
|
+
from bumble.transport.grpc_protobuf.netsim import model_pb2 as _model_pb2
|
|
3
|
+
from bumble.transport.grpc_protobuf.rootcanal import configuration_pb2 as _configuration_pb2
|
|
4
|
+
from google.protobuf.internal import containers as _containers
|
|
5
|
+
from google.protobuf import descriptor as _descriptor
|
|
6
|
+
from google.protobuf import message as _message
|
|
7
|
+
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
|
|
8
|
+
|
|
9
|
+
DESCRIPTOR: _descriptor.FileDescriptor
|
|
10
|
+
|
|
11
|
+
class StartupInfo(_message.Message):
|
|
12
|
+
__slots__ = ("devices",)
|
|
13
|
+
class Device(_message.Message):
|
|
14
|
+
__slots__ = ("name", "chips", "device_info")
|
|
15
|
+
NAME_FIELD_NUMBER: _ClassVar[int]
|
|
16
|
+
CHIPS_FIELD_NUMBER: _ClassVar[int]
|
|
17
|
+
DEVICE_INFO_FIELD_NUMBER: _ClassVar[int]
|
|
18
|
+
name: str
|
|
19
|
+
chips: _containers.RepeatedCompositeFieldContainer[Chip]
|
|
20
|
+
device_info: DeviceInfo
|
|
21
|
+
def __init__(self, name: _Optional[str] = ..., chips: _Optional[_Iterable[_Union[Chip, _Mapping]]] = ..., device_info: _Optional[_Union[DeviceInfo, _Mapping]] = ...) -> None: ...
|
|
22
|
+
DEVICES_FIELD_NUMBER: _ClassVar[int]
|
|
23
|
+
devices: _containers.RepeatedCompositeFieldContainer[StartupInfo.Device]
|
|
24
|
+
def __init__(self, devices: _Optional[_Iterable[_Union[StartupInfo.Device, _Mapping]]] = ...) -> None: ...
|
|
25
|
+
|
|
26
|
+
class ChipInfo(_message.Message):
|
|
27
|
+
__slots__ = ("name", "chip", "device_info")
|
|
28
|
+
NAME_FIELD_NUMBER: _ClassVar[int]
|
|
29
|
+
CHIP_FIELD_NUMBER: _ClassVar[int]
|
|
30
|
+
DEVICE_INFO_FIELD_NUMBER: _ClassVar[int]
|
|
31
|
+
name: str
|
|
32
|
+
chip: Chip
|
|
33
|
+
device_info: DeviceInfo
|
|
34
|
+
def __init__(self, name: _Optional[str] = ..., chip: _Optional[_Union[Chip, _Mapping]] = ..., device_info: _Optional[_Union[DeviceInfo, _Mapping]] = ...) -> None: ...
|
|
35
|
+
|
|
36
|
+
class DeviceInfo(_message.Message):
|
|
37
|
+
__slots__ = ("name", "kind", "version", "sdk_version", "build_id", "variant", "arch")
|
|
38
|
+
NAME_FIELD_NUMBER: _ClassVar[int]
|
|
39
|
+
KIND_FIELD_NUMBER: _ClassVar[int]
|
|
40
|
+
VERSION_FIELD_NUMBER: _ClassVar[int]
|
|
41
|
+
SDK_VERSION_FIELD_NUMBER: _ClassVar[int]
|
|
42
|
+
BUILD_ID_FIELD_NUMBER: _ClassVar[int]
|
|
43
|
+
VARIANT_FIELD_NUMBER: _ClassVar[int]
|
|
44
|
+
ARCH_FIELD_NUMBER: _ClassVar[int]
|
|
45
|
+
name: str
|
|
46
|
+
kind: str
|
|
47
|
+
version: str
|
|
48
|
+
sdk_version: str
|
|
49
|
+
build_id: str
|
|
50
|
+
variant: str
|
|
51
|
+
arch: str
|
|
52
|
+
def __init__(self, name: _Optional[str] = ..., kind: _Optional[str] = ..., version: _Optional[str] = ..., sdk_version: _Optional[str] = ..., build_id: _Optional[str] = ..., variant: _Optional[str] = ..., arch: _Optional[str] = ...) -> None: ...
|
|
53
|
+
|
|
54
|
+
class Chip(_message.Message):
|
|
55
|
+
__slots__ = ("kind", "id", "manufacturer", "product_name", "fd_in", "fd_out", "loopback", "bt_properties", "address", "offset")
|
|
56
|
+
KIND_FIELD_NUMBER: _ClassVar[int]
|
|
57
|
+
ID_FIELD_NUMBER: _ClassVar[int]
|
|
58
|
+
MANUFACTURER_FIELD_NUMBER: _ClassVar[int]
|
|
59
|
+
PRODUCT_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
60
|
+
FD_IN_FIELD_NUMBER: _ClassVar[int]
|
|
61
|
+
FD_OUT_FIELD_NUMBER: _ClassVar[int]
|
|
62
|
+
LOOPBACK_FIELD_NUMBER: _ClassVar[int]
|
|
63
|
+
BT_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
|
|
64
|
+
ADDRESS_FIELD_NUMBER: _ClassVar[int]
|
|
65
|
+
OFFSET_FIELD_NUMBER: _ClassVar[int]
|
|
66
|
+
kind: _common_pb2.ChipKind
|
|
67
|
+
id: str
|
|
68
|
+
manufacturer: str
|
|
69
|
+
product_name: str
|
|
70
|
+
fd_in: int
|
|
71
|
+
fd_out: int
|
|
72
|
+
loopback: bool
|
|
73
|
+
bt_properties: _configuration_pb2.Controller
|
|
74
|
+
address: str
|
|
75
|
+
offset: _model_pb2.Position
|
|
76
|
+
def __init__(self, kind: _Optional[_Union[_common_pb2.ChipKind, str]] = ..., id: _Optional[str] = ..., manufacturer: _Optional[str] = ..., product_name: _Optional[str] = ..., fd_in: _Optional[int] = ..., fd_out: _Optional[int] = ..., loopback: bool = ..., bt_properties: _Optional[_Union[_configuration_pb2.Controller, _Mapping]] = ..., address: _Optional[str] = ..., offset: _Optional[_Union[_model_pb2.Position, _Mapping]] = ...) -> None: ...
|
|
File without changes
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: rootcanal/configuration.proto
|
|
4
|
+
# Protobuf Python Version: 4.25.1
|
|
5
|
+
"""Generated protocol buffer code."""
|
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
9
|
+
from google.protobuf.internal import builder as _builder
|
|
10
|
+
# @@protoc_insertion_point(imports)
|
|
11
|
+
|
|
12
|
+
_sym_db = _symbol_database.Default()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1drootcanal/configuration.proto\x12\x17rootcanal.configuration\"\xbc\x01\n\x12\x43ontrollerFeatures\x12\x1f\n\x17le_extended_advertising\x18\x01 \x01(\x08\x12\x1f\n\x17le_periodic_advertising\x18\x02 \x01(\x08\x12\x12\n\nll_privacy\x18\x03 \x01(\x08\x12\x11\n\tle_2m_phy\x18\x04 \x01(\x08\x12\x14\n\x0cle_coded_phy\x18\x05 \x01(\x08\x12\'\n\x1fle_connected_isochronous_stream\x18\x06 \x01(\x08\"\x8d\x01\n\x10\x43ontrollerQuirks\x12\x30\n(send_acl_data_before_connection_complete\x18\x01 \x01(\x08\x12\"\n\x1ahas_default_random_address\x18\x02 \x01(\x08\x12#\n\x1bhardware_error_before_reset\x18\x03 \x01(\x08\".\n\x0eVendorFeatures\x12\x0b\n\x03\x63sr\x18\x01 \x01(\x08\x12\x0f\n\x07\x61ndroid\x18\x02 \x01(\x08\"\x8a\x02\n\nController\x12\x39\n\x06preset\x18\x01 \x01(\x0e\x32).rootcanal.configuration.ControllerPreset\x12=\n\x08\x66\x65\x61tures\x18\x02 \x01(\x0b\x32+.rootcanal.configuration.ControllerFeatures\x12\x39\n\x06quirks\x18\x03 \x01(\x0b\x32).rootcanal.configuration.ControllerQuirks\x12\x0e\n\x06strict\x18\x04 \x01(\x08\x12\x37\n\x06vendor\x18\x05 \x01(\x0b\x32\'.rootcanal.configuration.VendorFeatures\"Y\n\tTcpServer\x12\x10\n\x08tcp_port\x18\x01 \x02(\x05\x12:\n\rconfiguration\x18\x02 \x01(\x0b\x32#.rootcanal.configuration.Controller\"G\n\rConfiguration\x12\x36\n\ntcp_server\x18\x01 \x03(\x0b\x32\".rootcanal.configuration.TcpServer*H\n\x10\x43ontrollerPreset\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x0f\n\x0bLAIRD_BL654\x10\x01\x12\x16\n\x12\x43SR_RCK_PTS_DONGLE\x10\x02\x42\x02H\x02')
|
|
18
|
+
|
|
19
|
+
_globals = globals()
|
|
20
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
21
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'rootcanal.configuration_pb2', _globals)
|
|
22
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
23
|
+
_globals['DESCRIPTOR']._options = None
|
|
24
|
+
_globals['DESCRIPTOR']._serialized_options = b'H\002'
|
|
25
|
+
_globals['_CONTROLLERPRESET']._serialized_start=874
|
|
26
|
+
_globals['_CONTROLLERPRESET']._serialized_end=946
|
|
27
|
+
_globals['_CONTROLLERFEATURES']._serialized_start=59
|
|
28
|
+
_globals['_CONTROLLERFEATURES']._serialized_end=247
|
|
29
|
+
_globals['_CONTROLLERQUIRKS']._serialized_start=250
|
|
30
|
+
_globals['_CONTROLLERQUIRKS']._serialized_end=391
|
|
31
|
+
_globals['_VENDORFEATURES']._serialized_start=393
|
|
32
|
+
_globals['_VENDORFEATURES']._serialized_end=439
|
|
33
|
+
_globals['_CONTROLLER']._serialized_start=442
|
|
34
|
+
_globals['_CONTROLLER']._serialized_end=708
|
|
35
|
+
_globals['_TCPSERVER']._serialized_start=710
|
|
36
|
+
_globals['_TCPSERVER']._serialized_end=799
|
|
37
|
+
_globals['_CONFIGURATION']._serialized_start=801
|
|
38
|
+
_globals['_CONFIGURATION']._serialized_end=872
|
|
39
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
from google.protobuf.internal import containers as _containers
|
|
2
|
+
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
|
3
|
+
from google.protobuf import descriptor as _descriptor
|
|
4
|
+
from google.protobuf import message as _message
|
|
5
|
+
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
|
|
6
|
+
|
|
7
|
+
DESCRIPTOR: _descriptor.FileDescriptor
|
|
8
|
+
|
|
9
|
+
class ControllerPreset(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
10
|
+
__slots__ = ()
|
|
11
|
+
DEFAULT: _ClassVar[ControllerPreset]
|
|
12
|
+
LAIRD_BL654: _ClassVar[ControllerPreset]
|
|
13
|
+
CSR_RCK_PTS_DONGLE: _ClassVar[ControllerPreset]
|
|
14
|
+
DEFAULT: ControllerPreset
|
|
15
|
+
LAIRD_BL654: ControllerPreset
|
|
16
|
+
CSR_RCK_PTS_DONGLE: ControllerPreset
|
|
17
|
+
|
|
18
|
+
class ControllerFeatures(_message.Message):
|
|
19
|
+
__slots__ = ("le_extended_advertising", "le_periodic_advertising", "ll_privacy", "le_2m_phy", "le_coded_phy", "le_connected_isochronous_stream")
|
|
20
|
+
LE_EXTENDED_ADVERTISING_FIELD_NUMBER: _ClassVar[int]
|
|
21
|
+
LE_PERIODIC_ADVERTISING_FIELD_NUMBER: _ClassVar[int]
|
|
22
|
+
LL_PRIVACY_FIELD_NUMBER: _ClassVar[int]
|
|
23
|
+
LE_2M_PHY_FIELD_NUMBER: _ClassVar[int]
|
|
24
|
+
LE_CODED_PHY_FIELD_NUMBER: _ClassVar[int]
|
|
25
|
+
LE_CONNECTED_ISOCHRONOUS_STREAM_FIELD_NUMBER: _ClassVar[int]
|
|
26
|
+
le_extended_advertising: bool
|
|
27
|
+
le_periodic_advertising: bool
|
|
28
|
+
ll_privacy: bool
|
|
29
|
+
le_2m_phy: bool
|
|
30
|
+
le_coded_phy: bool
|
|
31
|
+
le_connected_isochronous_stream: bool
|
|
32
|
+
def __init__(self, le_extended_advertising: bool = ..., le_periodic_advertising: bool = ..., ll_privacy: bool = ..., le_2m_phy: bool = ..., le_coded_phy: bool = ..., le_connected_isochronous_stream: bool = ...) -> None: ...
|
|
33
|
+
|
|
34
|
+
class ControllerQuirks(_message.Message):
|
|
35
|
+
__slots__ = ("send_acl_data_before_connection_complete", "has_default_random_address", "hardware_error_before_reset")
|
|
36
|
+
SEND_ACL_DATA_BEFORE_CONNECTION_COMPLETE_FIELD_NUMBER: _ClassVar[int]
|
|
37
|
+
HAS_DEFAULT_RANDOM_ADDRESS_FIELD_NUMBER: _ClassVar[int]
|
|
38
|
+
HARDWARE_ERROR_BEFORE_RESET_FIELD_NUMBER: _ClassVar[int]
|
|
39
|
+
send_acl_data_before_connection_complete: bool
|
|
40
|
+
has_default_random_address: bool
|
|
41
|
+
hardware_error_before_reset: bool
|
|
42
|
+
def __init__(self, send_acl_data_before_connection_complete: bool = ..., has_default_random_address: bool = ..., hardware_error_before_reset: bool = ...) -> None: ...
|
|
43
|
+
|
|
44
|
+
class VendorFeatures(_message.Message):
|
|
45
|
+
__slots__ = ("csr", "android")
|
|
46
|
+
CSR_FIELD_NUMBER: _ClassVar[int]
|
|
47
|
+
ANDROID_FIELD_NUMBER: _ClassVar[int]
|
|
48
|
+
csr: bool
|
|
49
|
+
android: bool
|
|
50
|
+
def __init__(self, csr: bool = ..., android: bool = ...) -> None: ...
|
|
51
|
+
|
|
52
|
+
class Controller(_message.Message):
|
|
53
|
+
__slots__ = ("preset", "features", "quirks", "strict", "vendor")
|
|
54
|
+
PRESET_FIELD_NUMBER: _ClassVar[int]
|
|
55
|
+
FEATURES_FIELD_NUMBER: _ClassVar[int]
|
|
56
|
+
QUIRKS_FIELD_NUMBER: _ClassVar[int]
|
|
57
|
+
STRICT_FIELD_NUMBER: _ClassVar[int]
|
|
58
|
+
VENDOR_FIELD_NUMBER: _ClassVar[int]
|
|
59
|
+
preset: ControllerPreset
|
|
60
|
+
features: ControllerFeatures
|
|
61
|
+
quirks: ControllerQuirks
|
|
62
|
+
strict: bool
|
|
63
|
+
vendor: VendorFeatures
|
|
64
|
+
def __init__(self, preset: _Optional[_Union[ControllerPreset, str]] = ..., features: _Optional[_Union[ControllerFeatures, _Mapping]] = ..., quirks: _Optional[_Union[ControllerQuirks, _Mapping]] = ..., strict: bool = ..., vendor: _Optional[_Union[VendorFeatures, _Mapping]] = ...) -> None: ...
|
|
65
|
+
|
|
66
|
+
class TcpServer(_message.Message):
|
|
67
|
+
__slots__ = ("tcp_port", "configuration")
|
|
68
|
+
TCP_PORT_FIELD_NUMBER: _ClassVar[int]
|
|
69
|
+
CONFIGURATION_FIELD_NUMBER: _ClassVar[int]
|
|
70
|
+
tcp_port: int
|
|
71
|
+
configuration: Controller
|
|
72
|
+
def __init__(self, tcp_port: _Optional[int] = ..., configuration: _Optional[_Union[Controller, _Mapping]] = ...) -> None: ...
|
|
73
|
+
|
|
74
|
+
class Configuration(_message.Message):
|
|
75
|
+
__slots__ = ("tcp_server",)
|
|
76
|
+
TCP_SERVER_FIELD_NUMBER: _ClassVar[int]
|
|
77
|
+
tcp_server: _containers.RepeatedCompositeFieldContainer[TcpServer]
|
|
78
|
+
def __init__(self, tcp_server: _Optional[_Iterable[_Union[TcpServer, _Mapping]]] = ...) -> None: ...
|
bumble/transport/pyusb.py
CHANGED
|
@@ -221,8 +221,9 @@ async def open_pyusb_transport(spec: str) -> Transport:
|
|
|
221
221
|
async def close(self):
|
|
222
222
|
await self.source.stop()
|
|
223
223
|
await self.sink.stop()
|
|
224
|
-
devices_in_use.remove(device.address)
|
|
225
224
|
usb.util.release_interface(self.device, 0)
|
|
225
|
+
if devices_in_use and device.address in devices_in_use:
|
|
226
|
+
devices_in_use.remove(device.address)
|
|
226
227
|
|
|
227
228
|
usb_find = usb.core.find
|
|
228
229
|
try:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: bumble
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.201
|
|
4
4
|
Summary: Bluetooth Stack for Apps, Emulation, Test and Experimentation
|
|
5
5
|
Home-page: https://github.com/google/bumble
|
|
6
6
|
Author: Google
|
|
@@ -27,7 +27,7 @@ Requires-Dist: pyusb>=1.2; platform_system != "Emscripten"
|
|
|
27
27
|
Requires-Dist: websockets>=12.0; platform_system != "Emscripten"
|
|
28
28
|
Requires-Dist: cryptography>=39.0; platform_system == "Emscripten"
|
|
29
29
|
Provides-Extra: avatar
|
|
30
|
-
Requires-Dist: pandora-avatar==0.0.
|
|
30
|
+
Requires-Dist: pandora-avatar==0.0.10; extra == "avatar"
|
|
31
31
|
Requires-Dist: rootcanal==1.10.0; python_version >= "3.10" and extra == "avatar"
|
|
32
32
|
Provides-Extra: build
|
|
33
33
|
Requires-Dist: build>=0.7; extra == "build"
|