bumble 0.0.218__py3-none-any.whl → 0.0.220__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 +57 -18
- bumble/apps/auracast.py +7 -13
- bumble/audio/io.py +3 -3
- bumble/avctp.py +8 -12
- bumble/avdtp.py +584 -533
- bumble/avrcp.py +20 -20
- bumble/controller.py +993 -507
- bumble/device.py +107 -183
- bumble/drivers/rtk.py +3 -1
- bumble/hci.py +38 -0
- bumble/hid.py +1 -1
- bumble/link.py +68 -165
- bumble/lmp.py +324 -0
- bumble/rfcomm.py +7 -3
- bumble/snoop.py +10 -4
- bumble/transport/common.py +6 -3
- bumble/transport/ws_client.py +2 -2
- bumble/transport/ws_server.py +16 -8
- bumble/utils.py +1 -5
- {bumble-0.0.218.dist-info → bumble-0.0.220.dist-info}/METADATA +3 -3
- {bumble-0.0.218.dist-info → bumble-0.0.220.dist-info}/RECORD +26 -25
- {bumble-0.0.218.dist-info → bumble-0.0.220.dist-info}/WHEEL +0 -0
- {bumble-0.0.218.dist-info → bumble-0.0.220.dist-info}/entry_points.txt +0 -0
- {bumble-0.0.218.dist-info → bumble-0.0.220.dist-info}/licenses/LICENSE +0 -0
- {bumble-0.0.218.dist-info → bumble-0.0.220.dist-info}/top_level.txt +0 -0
bumble/rfcomm.py
CHANGED
|
@@ -674,10 +674,14 @@ class DLC(utils.EventEmitter):
|
|
|
674
674
|
while (self.tx_buffer and self.tx_credits > 0) or rx_credits_needed > 0:
|
|
675
675
|
# Get the next chunk, up to MTU size
|
|
676
676
|
if rx_credits_needed > 0:
|
|
677
|
-
chunk = bytes([rx_credits_needed])
|
|
678
|
-
self.tx_buffer = self.tx_buffer[len(chunk) - 1 :]
|
|
677
|
+
chunk = bytes([rx_credits_needed])
|
|
679
678
|
self.rx_credits += rx_credits_needed
|
|
680
|
-
|
|
679
|
+
if self.tx_buffer and self.tx_credits > 0:
|
|
680
|
+
chunk += self.tx_buffer[: self.mtu - 1]
|
|
681
|
+
self.tx_buffer = self.tx_buffer[len(chunk) - 1 :]
|
|
682
|
+
tx_credit_spent = True
|
|
683
|
+
else:
|
|
684
|
+
tx_credit_spent = False
|
|
681
685
|
else:
|
|
682
686
|
chunk = self.tx_buffer[: self.mtu]
|
|
683
687
|
self.tx_buffer = self.tx_buffer[len(chunk) :]
|
bumble/snoop.py
CHANGED
|
@@ -65,7 +65,7 @@ class BtSnooper(Snooper):
|
|
|
65
65
|
"""
|
|
66
66
|
|
|
67
67
|
IDENTIFICATION_PATTERN = b'btsnoop\0'
|
|
68
|
-
TIMESTAMP_ANCHOR = datetime.datetime(2000, 1, 1)
|
|
68
|
+
TIMESTAMP_ANCHOR = datetime.datetime(2000, 1, 1, tzinfo=datetime.timezone.utc)
|
|
69
69
|
TIMESTAMP_DELTA = 0x00E03AB44A676000
|
|
70
70
|
ONE_MS = datetime.timedelta(microseconds=1)
|
|
71
71
|
|
|
@@ -85,7 +85,13 @@ class BtSnooper(Snooper):
|
|
|
85
85
|
|
|
86
86
|
# Compute the current timestamp
|
|
87
87
|
timestamp = (
|
|
88
|
-
int(
|
|
88
|
+
int(
|
|
89
|
+
(
|
|
90
|
+
datetime.datetime.now(tz=datetime.timezone.utc)
|
|
91
|
+
- self.TIMESTAMP_ANCHOR
|
|
92
|
+
)
|
|
93
|
+
/ self.ONE_MS
|
|
94
|
+
)
|
|
89
95
|
+ self.TIMESTAMP_DELTA
|
|
90
96
|
)
|
|
91
97
|
|
|
@@ -129,7 +135,7 @@ def create_snooper(spec: str) -> Generator[Snooper, None, None]:
|
|
|
129
135
|
records will be written to that file if it can be opened/created.
|
|
130
136
|
The keyword args that may be referenced by the string pattern are:
|
|
131
137
|
now: the value of `datetime.now()`
|
|
132
|
-
utcnow: the value of `datetime.
|
|
138
|
+
utcnow: the value of `datetime.now(tz=datetime.timezone.utc)`
|
|
133
139
|
pid: the current process ID.
|
|
134
140
|
instance: the instance ID in the current process.
|
|
135
141
|
|
|
@@ -153,7 +159,7 @@ def create_snooper(spec: str) -> Generator[Snooper, None, None]:
|
|
|
153
159
|
global _SNOOPER_INSTANCE_COUNT
|
|
154
160
|
file_path = io_name.format(
|
|
155
161
|
now=datetime.datetime.now(),
|
|
156
|
-
utcnow=datetime.datetime.
|
|
162
|
+
utcnow=datetime.datetime.now(tz=datetime.timezone.utc),
|
|
157
163
|
pid=os.getpid(),
|
|
158
164
|
instance=_SNOOPER_INSTANCE_COUNT,
|
|
159
165
|
)
|
bumble/transport/common.py
CHANGED
|
@@ -22,6 +22,7 @@ import contextlib
|
|
|
22
22
|
import io
|
|
23
23
|
import logging
|
|
24
24
|
import struct
|
|
25
|
+
from collections.abc import Awaitable, Callable
|
|
25
26
|
from typing import Any, ContextManager, Optional, Protocol
|
|
26
27
|
|
|
27
28
|
from bumble import core, hci
|
|
@@ -389,15 +390,17 @@ class PumpedPacketSource(ParserSource):
|
|
|
389
390
|
|
|
390
391
|
# -----------------------------------------------------------------------------
|
|
391
392
|
class PumpedPacketSink:
|
|
392
|
-
|
|
393
|
+
pump_task: Optional[asyncio.Task[None]]
|
|
394
|
+
|
|
395
|
+
def __init__(self, send: Callable[[bytes], Awaitable[Any]]):
|
|
393
396
|
self.send_function = send
|
|
394
|
-
self.packet_queue = asyncio.Queue()
|
|
397
|
+
self.packet_queue = asyncio.Queue[bytes]()
|
|
395
398
|
self.pump_task = None
|
|
396
399
|
|
|
397
400
|
def on_packet(self, packet: bytes) -> None:
|
|
398
401
|
self.packet_queue.put_nowait(packet)
|
|
399
402
|
|
|
400
|
-
def start(self):
|
|
403
|
+
def start(self) -> None:
|
|
401
404
|
async def pump_packets():
|
|
402
405
|
while True:
|
|
403
406
|
try:
|
bumble/transport/ws_client.py
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
# -----------------------------------------------------------------------------
|
|
18
18
|
import logging
|
|
19
19
|
|
|
20
|
-
import websockets.client
|
|
20
|
+
import websockets.asyncio.client
|
|
21
21
|
|
|
22
22
|
from bumble.transport.common import (
|
|
23
23
|
PumpedPacketSink,
|
|
@@ -42,7 +42,7 @@ async def open_ws_client_transport(spec: str) -> Transport:
|
|
|
42
42
|
Example: ws://localhost:7681/v1/websocket/bt
|
|
43
43
|
'''
|
|
44
44
|
|
|
45
|
-
websocket = await websockets.client.connect(spec)
|
|
45
|
+
websocket = await websockets.asyncio.client.connect(spec)
|
|
46
46
|
|
|
47
47
|
class WsTransport(PumpedTransport):
|
|
48
48
|
async def close(self):
|
bumble/transport/ws_server.py
CHANGED
|
@@ -16,8 +16,9 @@
|
|
|
16
16
|
# Imports
|
|
17
17
|
# -----------------------------------------------------------------------------
|
|
18
18
|
import logging
|
|
19
|
+
from typing import Optional
|
|
19
20
|
|
|
20
|
-
import websockets
|
|
21
|
+
import websockets.asyncio.server
|
|
21
22
|
|
|
22
23
|
from bumble.transport.common import ParserSource, PumpedPacketSink, Transport
|
|
23
24
|
|
|
@@ -40,7 +41,12 @@ async def open_ws_server_transport(spec: str) -> Transport:
|
|
|
40
41
|
'''
|
|
41
42
|
|
|
42
43
|
class WsServerTransport(Transport):
|
|
43
|
-
|
|
44
|
+
sink: PumpedPacketSink
|
|
45
|
+
source: ParserSource
|
|
46
|
+
connection: Optional[websockets.asyncio.server.ServerConnection]
|
|
47
|
+
server: Optional[websockets.asyncio.server.Server]
|
|
48
|
+
|
|
49
|
+
def __init__(self) -> None:
|
|
44
50
|
source = ParserSource()
|
|
45
51
|
sink = PumpedPacketSink(self.send_packet)
|
|
46
52
|
self.connection = None
|
|
@@ -48,17 +54,19 @@ async def open_ws_server_transport(spec: str) -> Transport:
|
|
|
48
54
|
|
|
49
55
|
super().__init__(source, sink)
|
|
50
56
|
|
|
51
|
-
async def serve(self, local_host, local_port):
|
|
57
|
+
async def serve(self, local_host: str, local_port: str) -> None:
|
|
52
58
|
self.sink.start()
|
|
53
59
|
# pylint: disable-next=no-member
|
|
54
|
-
self.server = await websockets.serve(
|
|
55
|
-
|
|
60
|
+
self.server = await websockets.asyncio.server.serve(
|
|
61
|
+
handler=self.on_connection,
|
|
56
62
|
host=local_host if local_host != '_' else None,
|
|
57
63
|
port=int(local_port),
|
|
58
64
|
)
|
|
59
65
|
logger.debug(f'websocket server ready on port {local_port}')
|
|
60
66
|
|
|
61
|
-
async def on_connection(
|
|
67
|
+
async def on_connection(
|
|
68
|
+
self, connection: websockets.asyncio.server.ServerConnection
|
|
69
|
+
) -> None:
|
|
62
70
|
logger.debug(
|
|
63
71
|
f'new connection on {connection.local_address} '
|
|
64
72
|
f'from {connection.remote_address}'
|
|
@@ -77,11 +85,11 @@ async def open_ws_server_transport(spec: str) -> Transport:
|
|
|
77
85
|
# We're now disconnected
|
|
78
86
|
self.connection = None
|
|
79
87
|
|
|
80
|
-
async def send_packet(self, packet):
|
|
88
|
+
async def send_packet(self, packet: bytes) -> None:
|
|
81
89
|
if self.connection is None:
|
|
82
90
|
logger.debug('no connection, dropping packet')
|
|
83
91
|
return
|
|
84
|
-
|
|
92
|
+
await self.connection.send(packet)
|
|
85
93
|
|
|
86
94
|
local_host, local_port = spec.rsplit(':', maxsplit=1)
|
|
87
95
|
transport = WsServerTransport()
|
bumble/utils.py
CHANGED
|
@@ -241,11 +241,7 @@ def cancel_on_event(
|
|
|
241
241
|
return
|
|
242
242
|
msg = f'abort: {event} event occurred.'
|
|
243
243
|
if isinstance(future, asyncio.Task):
|
|
244
|
-
|
|
245
|
-
if sys.version_info < (3, 9, 0):
|
|
246
|
-
future.cancel()
|
|
247
|
-
else:
|
|
248
|
-
future.cancel(msg)
|
|
244
|
+
future.cancel(msg)
|
|
249
245
|
else:
|
|
250
246
|
future.set_exception(asyncio.CancelledError(msg))
|
|
251
247
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bumble
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.220
|
|
4
4
|
Summary: Bluetooth Stack for Apps, Emulation, Test and Experimentation
|
|
5
5
|
Author-email: Google <bumble-dev@google.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
7
7
|
Project-URL: Homepage, https://github.com/google/bumble
|
|
8
|
-
Requires-Python: >=3.
|
|
8
|
+
Requires-Python: >=3.10
|
|
9
9
|
Description-Content-Type: text/markdown
|
|
10
10
|
License-File: LICENSE
|
|
11
11
|
Requires-Dist: aiohttp~=3.8; platform_system != "Emscripten"
|
|
@@ -25,7 +25,7 @@ Requires-Dist: pyee>=13.0.0
|
|
|
25
25
|
Requires-Dist: pyserial-asyncio>=0.5; platform_system != "Emscripten"
|
|
26
26
|
Requires-Dist: pyserial>=3.5; platform_system != "Emscripten"
|
|
27
27
|
Requires-Dist: pyusb>=1.2; platform_system != "Emscripten"
|
|
28
|
-
Requires-Dist: websockets
|
|
28
|
+
Requires-Dist: websockets>=15.0.1; platform_system != "Emscripten"
|
|
29
29
|
Provides-Extra: build
|
|
30
30
|
Requires-Dist: build>=0.7; extra == "build"
|
|
31
31
|
Provides-Extra: test
|
|
@@ -1,46 +1,47 @@
|
|
|
1
1
|
bumble/__init__.py,sha256=Q8jkz6rgl95IMAeInQVt_2GLoJl3DcEP2cxtrQ-ho5c,110
|
|
2
|
-
bumble/_version.py,sha256=
|
|
3
|
-
bumble/a2dp.py,sha256=
|
|
2
|
+
bumble/_version.py,sha256=LkZdU1Of57ZTevevPEHb3wEaCZ1DbUnWvSGcvTBz7sI,708
|
|
3
|
+
bumble/a2dp.py,sha256=wvmQwVkSCFsoJv1Q1VGA17ncMnif-o5Bc-NQjgpsDbI,33454
|
|
4
4
|
bumble/at.py,sha256=u93DzB5Ghrxks_ufuUqoYV2RUSowLNLMDhq_j9GrCBc,3108
|
|
5
5
|
bumble/att.py,sha256=vS1dUwiuUgNU6PztARg_qPB_olLOWsAxFz6DZGX8zII,33423
|
|
6
6
|
bumble/avc.py,sha256=uu33BpDU58f4fvqZyBHKfc8OSnzYovQrBk8Yst-KVrk,16383
|
|
7
|
-
bumble/avctp.py,sha256=
|
|
8
|
-
bumble/avdtp.py,sha256=
|
|
9
|
-
bumble/avrcp.py,sha256=
|
|
7
|
+
bumble/avctp.py,sha256=E6JorAlrsW0hAS2y7q-DhMYY2aEAjVXMF-8FivbMN6w,9709
|
|
8
|
+
bumble/avdtp.py,sha256=XvCCAChz5FK5geF_KJrEjkct7QHC9GC8WAmh8GjCZPE,78498
|
|
9
|
+
bumble/avrcp.py,sha256=PFQ8t7Tiv3j_OV7qfVaFe0Mcn9gzhoo969AcMoVGg88,87357
|
|
10
10
|
bumble/bridge.py,sha256=yXwZNUe7pRpuTt41PEmgtfjBLpQKdDwvcxfbYxObqIU,3015
|
|
11
11
|
bumble/codecs.py,sha256=ZHUFvq2dhUUHp2EWYawht8zcPQGqOf5Opnh-7Ud_fb4,20917
|
|
12
12
|
bumble/colors.py,sha256=gm_PqgGfUF8Nkntn652apR4HrqN3vLv249YCIfw8mtk,3112
|
|
13
13
|
bumble/company_ids.py,sha256=B68e2QPsDeRYP9jjbGs4GGDwEkGxcXGTsON_CHA0uuI,118528
|
|
14
|
-
bumble/controller.py,sha256=
|
|
14
|
+
bumble/controller.py,sha256=BzgL5o_5TXcOSJShtGD9Lqn7v0yADX9OE6vyBh_GGo4,87918
|
|
15
15
|
bumble/core.py,sha256=QojIUs4nP9qo_r-FWPVxHrCdVSg6CaIzHf6GVPTuu9s,94583
|
|
16
16
|
bumble/data_types.py,sha256=jLELcRiUcvRc4JcEo6vMO9kZmumZ9WuibFN-AK7ZYbc,32831
|
|
17
17
|
bumble/decoder.py,sha256=0-VNWZT-u7lvK3qBpAuYT0M6Rz_bMgMi4CjfUXX_6RM,9728
|
|
18
|
-
bumble/device.py,sha256=
|
|
18
|
+
bumble/device.py,sha256=SU4kXdmtZ0fTJD8ZAsv5ZKdd11S6Z6wlUxsXx820MEc,248480
|
|
19
19
|
bumble/gap.py,sha256=j5mevt__i_fSdIc_B3x7YvCJLeCc7bVq8omRphxwXNw,2144
|
|
20
20
|
bumble/gatt.py,sha256=dBd-opQVUumlLPGw7EYZM5DF-ssnym3LsxhskAJMhig,34552
|
|
21
21
|
bumble/gatt_adapters.py,sha256=9uN2uXGIdlvNeSvv3nfwxCEa15uPfm5DVLR5bog_knI,13190
|
|
22
22
|
bumble/gatt_client.py,sha256=jLIa7OoJgw8X7pLBGqsdSY3Sde4HSWBxGWTVWH0FPpA,44268
|
|
23
23
|
bumble/gatt_server.py,sha256=Xx5UaXoNeEIcXfe1YjGrf4Mt7ZKEUak7e3dhFtdK-4Y,37907
|
|
24
|
-
bumble/hci.py,sha256=
|
|
24
|
+
bumble/hci.py,sha256=9ZN9koktUhmSJAWfPCRqaXAbECmDwEpa73lWrWizL_o,328355
|
|
25
25
|
bumble/helpers.py,sha256=WFyikseIRdXUqqeOplNlmd0giOegahlXv5e324ax9ck,12611
|
|
26
26
|
bumble/hfp.py,sha256=rUfd1OvNnr9FbURRjeNvLA4CcMzv3NcowVxbG4s2FXM,76746
|
|
27
|
-
bumble/hid.py,sha256=
|
|
27
|
+
bumble/hid.py,sha256=KMSd2_minM8F4GJUSaeYubGVvDns2BEFDhYH9f8jVdk,21056
|
|
28
28
|
bumble/host.py,sha256=46fwcskNlfHyW8Ejo5wp8rHtMBZSMkR4URSdekKLPzg,68019
|
|
29
29
|
bumble/keys.py,sha256=VCOrtuw-xF_4Oa5Qt-ECRKaTqabL_GbwdQUKoZX20II,13416
|
|
30
30
|
bumble/l2cap.py,sha256=PZQnZQFB_GJZCCFuPpAsTuYz4E3WTgimDUAk83DUUtE,80758
|
|
31
|
-
bumble/link.py,sha256=
|
|
31
|
+
bumble/link.py,sha256=McpiZ2Wk2fssO9Plcw27D3SkvdpoqcvkKYb5ZeolvWs,10516
|
|
32
|
+
bumble/lmp.py,sha256=9TsV8W1lbudCEytzhWg0N492xFbNEWy1-a3VuF1US-k,10433
|
|
32
33
|
bumble/logging.py,sha256=WvB9v6HxsnmN6DaG-oIcE7DbFcE-jT8YN3T0PGbWbD8,2351
|
|
33
34
|
bumble/pairing.py,sha256=KPkJs4NgFmubdE3OhqP0uaGMm8aAg8RkHDCfAYrhTwo,10142
|
|
34
35
|
bumble/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
|
-
bumble/rfcomm.py,sha256=
|
|
36
|
+
bumble/rfcomm.py,sha256=kE3KbtLdcZhUUBcp2Xxu_G1XhU6eOciiJDfYWAOznlU,41067
|
|
36
37
|
bumble/rtp.py,sha256=wyAQJ3dRU31USfZT5DgpvC_TSVYU1QPDSg_uK9-i8V4,3464
|
|
37
38
|
bumble/sdp.py,sha256=PfKjPm_mDO9ZvR74zAFTcazf3MJBo0Ew0LVJMscPohA,49546
|
|
38
39
|
bumble/smp.py,sha256=YhTgEngwb7JmhXugmc3VTmm_lY5RRIg_cFgk5QuywmU,78597
|
|
39
|
-
bumble/snoop.py,sha256=
|
|
40
|
-
bumble/utils.py,sha256=
|
|
40
|
+
bumble/snoop.py,sha256=ZHSq4r4NRhpjfMLPojO7vcb2KJYyy7vJvKdhB84vSkk,5912
|
|
41
|
+
bumble/utils.py,sha256=7V4NMtAjYFCu-9cPvI503flWndgYlcB6J5T6VstojGA,16480
|
|
41
42
|
bumble/apps/README.md,sha256=gY24s9zrX6yjVcaSfC1w-DQ4y-HCGXskS66nda0479k,1653
|
|
42
43
|
bumble/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
|
-
bumble/apps/auracast.py,sha256=
|
|
44
|
+
bumble/apps/auracast.py,sha256=UM5BGPs5Q5cJXD-rXq6S-jiKT6nYFLUXlLNOOSFZDZ8,43952
|
|
44
45
|
bumble/apps/bench.py,sha256=4PZeCBHWE3V_st1sJByYxWwulJTc6T4fpXDEckkD_d4,76713
|
|
45
46
|
bumble/apps/ble_rpa_tool.py,sha256=Ypc6_KC3yo31Kx3rUJeWTMAqbtgfYeot8WS8qyYpiiM,1702
|
|
46
47
|
bumble/apps/console.py,sha256=OtVSzl6_aU3Lq2DiYzYlrrtbHZVHOkqwQFKYDUSuYkY,45430
|
|
@@ -69,14 +70,14 @@ bumble/apps/speaker/speaker.html,sha256=e1VD96pwiDwcaxVERvc4BPLwH1948BIcqPGmnWNH
|
|
|
69
70
|
bumble/apps/speaker/speaker.js,sha256=nom2zHJJ7lVFU_7TD1LS7Gl1PXAPztdUF9zMCgZvfVI,11245
|
|
70
71
|
bumble/apps/speaker/speaker.py,sha256=2SGXr3igSumK9v1H6wsrd2JMbIPjaFe39UEeoMnhy9U,27656
|
|
71
72
|
bumble/audio/__init__.py,sha256=tc75ofvV52qED31kB_LYRVLNrxtbZqnOWO8lHsZK3Ww,747
|
|
72
|
-
bumble/audio/io.py,sha256=
|
|
73
|
+
bumble/audio/io.py,sha256=RHmDf4GoqImLpvp5sVyPiBp_LwgL60DISwxxuDiXaXs,17778
|
|
73
74
|
bumble/crypto/__init__.py,sha256=n1V7wJp3-YOPl_GzM4zmjpYS8PI2J9xigtY81KMOiDY,6565
|
|
74
75
|
bumble/crypto/builtin.py,sha256=JNUHJIaUx3ylBDCpMjaaDYPl-K3eCdD3iCl_2AWLn8Q,60901
|
|
75
76
|
bumble/crypto/cryptography.py,sha256=yHznoBZ-hd8XqWheipkgn3Vdt5JydLxlTM3nTp5ayvc,2696
|
|
76
77
|
bumble/drivers/__init__.py,sha256=03lZKWOvRi2qd_iogohvtTc76vpn89c5jvhbaNzxlSM,3505
|
|
77
78
|
bumble/drivers/common.py,sha256=pS783hudolLZAzF8IUWp7g6TXyQsUCEzqCsd1VGeYfQ,1507
|
|
78
79
|
bumble/drivers/intel.py,sha256=2LmZL4ka1qz90WZGnrEzALd2mj7AcG_06rV03cnKKgY,24624
|
|
79
|
-
bumble/drivers/rtk.py,sha256=
|
|
80
|
+
bumble/drivers/rtk.py,sha256=tkLXqjhlEdp934alr5SlV00zc2B1UfKpzZpL22Hj8Lg,22690
|
|
80
81
|
bumble/pandora/__init__.py,sha256=xlEwye5eIwHMDHS-qPT2weF0TT86fEUIHYCUvW6LGpc,3535
|
|
81
82
|
bumble/pandora/config.py,sha256=wfmko9UDEZWeRC4fccUdJnHn9D2Bus15R-Tqn2bLoAY,2384
|
|
82
83
|
bumble/pandora/device.py,sha256=U5dmH-eg61egL5sm9dlmQ5f6ZM7xxCNyQXCcMo3eScE,5333
|
|
@@ -119,7 +120,7 @@ bumble/tools/rtk_util.py,sha256=4kdaHON_pg2HElzBRaStolqvEJVWPd0eZPUyAQWAqxc,5726
|
|
|
119
120
|
bumble/transport/__init__.py,sha256=1z6WcJ0kkqSK1iugl3hYamJe54FdB8fmNI4M8M-zNx8,7376
|
|
120
121
|
bumble/transport/android_emulator.py,sha256=axEdFBj17c0dOD5lMqJjiULInG_SQVx5W7ptjyLtRJs,4281
|
|
121
122
|
bumble/transport/android_netsim.py,sha256=8C2kUITCl7L1ggl5FPwWcFq4It8e9O3esEpMjRaYkkw,17563
|
|
122
|
-
bumble/transport/common.py,sha256=
|
|
123
|
+
bumble/transport/common.py,sha256=yCJKUiLFEJ1qtepV1gU6hLkStHY0guKrZUNDoCS8sck,16913
|
|
123
124
|
bumble/transport/file.py,sha256=aqJD5US5TVl01dOb42rV_0OzuvFsBDDlqzipyrYA4q4,2026
|
|
124
125
|
bumble/transport/hci_socket.py,sha256=2PKQ43oDjayKDklx9sF98hSeyNmvTSUOWx_ooPWTjd0,6345
|
|
125
126
|
bumble/transport/pty.py,sha256=yzItc5ZO7WkHZKnAeEK-1XEyY4BWot4ZAMFzQvRiSQ4,2747
|
|
@@ -132,8 +133,8 @@ bumble/transport/udp.py,sha256=_3mePVr9ALzZbOfnlMwcaaMnnLkd5kxhw5-BxkeCSMU,2281
|
|
|
132
133
|
bumble/transport/unix.py,sha256=XbVakfqQiZVdAQnt05XWb4PymzkXIL7h0dn7Iq6xwlk,4240
|
|
133
134
|
bumble/transport/usb.py,sha256=9np33CTM1Sj4mQsym8TqIZ-DN28suCC8gJfy1O-hHPA,22113
|
|
134
135
|
bumble/transport/vhci.py,sha256=-S9M6iqSpdmNobliDBaUamWJtYTiQEMt_mSdfxKZypY,2281
|
|
135
|
-
bumble/transport/ws_client.py,sha256=
|
|
136
|
-
bumble/transport/ws_server.py,sha256=
|
|
136
|
+
bumble/transport/ws_client.py,sha256=qgPUpfnp1i5DxeilhJbKXwceVeNowXCVL05TyaBtiL0,1811
|
|
137
|
+
bumble/transport/ws_server.py,sha256=ttVIGfcd7Rqlo4JM8tIeJAeLGKV96vciv58fVjQCYC8,3714
|
|
137
138
|
bumble/transport/grpc_protobuf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
138
139
|
bumble/transport/grpc_protobuf/emulated_bluetooth_device_pb2.py,sha256=NFz7pja_rxMEyU3fI-SgHLghTw4KeN1gXUjT4uglrEQ,7959
|
|
139
140
|
bumble/transport/grpc_protobuf/emulated_bluetooth_device_pb2.pyi,sha256=O0qhb2L_oAekmSnqCElidwIg4PZ3XjAyQ4oEy4ycD-A,8385
|
|
@@ -175,9 +176,9 @@ bumble/vendor/android/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
175
176
|
bumble/vendor/android/hci.py,sha256=LcV4_OBpzoLtpSiP2su7F4r3bDrHWxcQPR4OGnMVXDk,10485
|
|
176
177
|
bumble/vendor/zephyr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
177
178
|
bumble/vendor/zephyr/hci.py,sha256=ysct40uIVohaKKLrWjcWo-7YqozU17xGia2dWeHoMoI,3435
|
|
178
|
-
bumble-0.0.
|
|
179
|
-
bumble-0.0.
|
|
180
|
-
bumble-0.0.
|
|
181
|
-
bumble-0.0.
|
|
182
|
-
bumble-0.0.
|
|
183
|
-
bumble-0.0.
|
|
179
|
+
bumble-0.0.220.dist-info/licenses/LICENSE,sha256=FvaYh4NRWIGgS_OwoBs5gFgkCmAghZ-DYnIGBZPuw-s,12142
|
|
180
|
+
bumble-0.0.220.dist-info/METADATA,sha256=hHYv58aAzscV6kj0CR1totVeNRmjn2W4r_P-l5tLSuo,6157
|
|
181
|
+
bumble-0.0.220.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
182
|
+
bumble-0.0.220.dist-info/entry_points.txt,sha256=mX5dzixNMRo4CTAEQqiYTr-JIaWF62TYrRvJOstjjL8,1081
|
|
183
|
+
bumble-0.0.220.dist-info/top_level.txt,sha256=tV6JJKaHPYMFiJYiBYFW24PCcfLxTJZdlu6BmH3Cb00,7
|
|
184
|
+
bumble-0.0.220.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|