bumble 0.0.199__py3-none-any.whl → 0.0.200__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 +1 -1
- 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 +3 -0
- bumble/transport/pyusb.py +2 -1
- {bumble-0.0.199.dist-info → bumble-0.0.200.dist-info}/METADATA +2 -2
- {bumble-0.0.199.dist-info → bumble-0.0.200.dist-info}/RECORD +24 -22
- {bumble-0.0.199.dist-info → bumble-0.0.200.dist-info}/WHEEL +1 -1
- {bumble-0.0.199.dist-info → bumble-0.0.200.dist-info}/entry_points.txt +1 -0
- {bumble-0.0.199.dist-info → bumble-0.0.200.dist-info}/LICENSE +0 -0
- {bumble-0.0.199.dist-info → bumble-0.0.200.dist-info}/top_level.txt +0 -0
bumble/profiles/hap.py
CHANGED
|
@@ -25,7 +25,7 @@ from bumble.utils import AsyncRunner, OpenIntEnum
|
|
|
25
25
|
from bumble.hci import Address
|
|
26
26
|
from dataclasses import dataclass, field
|
|
27
27
|
import logging
|
|
28
|
-
from typing import Dict, List, Optional, Set, Union
|
|
28
|
+
from typing import Any, Dict, List, Optional, Set, Union
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
# -----------------------------------------------------------------------------
|
|
@@ -271,24 +271,12 @@ class HearingAccessService(gatt.TemplateService):
|
|
|
271
271
|
def on_disconnection(_reason) -> None:
|
|
272
272
|
self.currently_connected_clients.remove(connection)
|
|
273
273
|
|
|
274
|
-
#
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
connection.peer_address
|
|
278
|
-
not in self.preset_changed_operations_history_per_device
|
|
279
|
-
):
|
|
280
|
-
self.preset_changed_operations_history_per_device[
|
|
281
|
-
connection.peer_address
|
|
282
|
-
] = []
|
|
283
|
-
return
|
|
284
|
-
|
|
285
|
-
async def on_connection_async() -> None:
|
|
286
|
-
# Send all the PresetChangedOperation that occur when not connected
|
|
287
|
-
await self._preset_changed_operation(connection)
|
|
288
|
-
# Update the active preset index if needed
|
|
289
|
-
await self.notify_active_preset_for_connection(connection)
|
|
274
|
+
@connection.on('pairing') # type: ignore
|
|
275
|
+
def on_pairing(*_: Any) -> None:
|
|
276
|
+
self.on_incoming_paired_connection(connection)
|
|
290
277
|
|
|
291
|
-
connection.
|
|
278
|
+
if connection.peer_resolvable_address:
|
|
279
|
+
self.on_incoming_paired_connection(connection)
|
|
292
280
|
|
|
293
281
|
self.hearing_aid_features_characteristic = gatt.Characteristic(
|
|
294
282
|
uuid=gatt.GATT_HEARING_AID_FEATURES_CHARACTERISTIC,
|
|
@@ -325,6 +313,27 @@ class HearingAccessService(gatt.TemplateService):
|
|
|
325
313
|
]
|
|
326
314
|
)
|
|
327
315
|
|
|
316
|
+
def on_incoming_paired_connection(self, connection: Connection):
|
|
317
|
+
'''Setup initial operations to handle a remote bonded HAP device'''
|
|
318
|
+
# TODO Should we filter on HAP device only ?
|
|
319
|
+
self.currently_connected_clients.add(connection)
|
|
320
|
+
if (
|
|
321
|
+
connection.peer_address
|
|
322
|
+
not in self.preset_changed_operations_history_per_device
|
|
323
|
+
):
|
|
324
|
+
self.preset_changed_operations_history_per_device[
|
|
325
|
+
connection.peer_address
|
|
326
|
+
] = []
|
|
327
|
+
return
|
|
328
|
+
|
|
329
|
+
async def on_connection_async() -> None:
|
|
330
|
+
# Send all the PresetChangedOperation that occur when not connected
|
|
331
|
+
await self._preset_changed_operation(connection)
|
|
332
|
+
# Update the active preset index if needed
|
|
333
|
+
await self.notify_active_preset_for_connection(connection)
|
|
334
|
+
|
|
335
|
+
connection.abort_on('disconnection', on_connection_async())
|
|
336
|
+
|
|
328
337
|
def _on_read_active_preset_index(
|
|
329
338
|
self, __connection__: Optional[Connection]
|
|
330
339
|
) -> bytes:
|
bumble/rtp.py
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Copyright 2024 Google LLC
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
# -----------------------------------------------------------------------------
|
|
16
|
+
# Imports
|
|
17
|
+
# -----------------------------------------------------------------------------
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
import struct
|
|
20
|
+
from typing import List
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# -----------------------------------------------------------------------------
|
|
24
|
+
class MediaPacket:
|
|
25
|
+
@staticmethod
|
|
26
|
+
def from_bytes(data: bytes) -> MediaPacket:
|
|
27
|
+
version = (data[0] >> 6) & 0x03
|
|
28
|
+
padding = (data[0] >> 5) & 0x01
|
|
29
|
+
extension = (data[0] >> 4) & 0x01
|
|
30
|
+
csrc_count = data[0] & 0x0F
|
|
31
|
+
marker = (data[1] >> 7) & 0x01
|
|
32
|
+
payload_type = data[1] & 0x7F
|
|
33
|
+
sequence_number = struct.unpack_from('>H', data, 2)[0]
|
|
34
|
+
timestamp = struct.unpack_from('>I', data, 4)[0]
|
|
35
|
+
ssrc = struct.unpack_from('>I', data, 8)[0]
|
|
36
|
+
csrc_list = [
|
|
37
|
+
struct.unpack_from('>I', data, 12 + i)[0] for i in range(csrc_count)
|
|
38
|
+
]
|
|
39
|
+
payload = data[12 + csrc_count * 4 :]
|
|
40
|
+
|
|
41
|
+
return MediaPacket(
|
|
42
|
+
version,
|
|
43
|
+
padding,
|
|
44
|
+
extension,
|
|
45
|
+
marker,
|
|
46
|
+
sequence_number,
|
|
47
|
+
timestamp,
|
|
48
|
+
ssrc,
|
|
49
|
+
csrc_list,
|
|
50
|
+
payload_type,
|
|
51
|
+
payload,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
def __init__(
|
|
55
|
+
self,
|
|
56
|
+
version: int,
|
|
57
|
+
padding: int,
|
|
58
|
+
extension: int,
|
|
59
|
+
marker: int,
|
|
60
|
+
sequence_number: int,
|
|
61
|
+
timestamp: int,
|
|
62
|
+
ssrc: int,
|
|
63
|
+
csrc_list: List[int],
|
|
64
|
+
payload_type: int,
|
|
65
|
+
payload: bytes,
|
|
66
|
+
) -> None:
|
|
67
|
+
self.version = version
|
|
68
|
+
self.padding = padding
|
|
69
|
+
self.extension = extension
|
|
70
|
+
self.marker = marker
|
|
71
|
+
self.sequence_number = sequence_number & 0xFFFF
|
|
72
|
+
self.timestamp = timestamp & 0xFFFFFFFF
|
|
73
|
+
self.timestamp_seconds = 0.0
|
|
74
|
+
self.ssrc = ssrc
|
|
75
|
+
self.csrc_list = csrc_list
|
|
76
|
+
self.payload_type = payload_type
|
|
77
|
+
self.payload = payload
|
|
78
|
+
|
|
79
|
+
def __bytes__(self) -> bytes:
|
|
80
|
+
header = bytes(
|
|
81
|
+
[
|
|
82
|
+
self.version << 6
|
|
83
|
+
| self.padding << 5
|
|
84
|
+
| self.extension << 4
|
|
85
|
+
| len(self.csrc_list),
|
|
86
|
+
self.marker << 7 | self.payload_type,
|
|
87
|
+
]
|
|
88
|
+
) + struct.pack(
|
|
89
|
+
'>HII',
|
|
90
|
+
self.sequence_number,
|
|
91
|
+
self.timestamp,
|
|
92
|
+
self.ssrc,
|
|
93
|
+
)
|
|
94
|
+
for csrc in self.csrc_list:
|
|
95
|
+
header += struct.pack('>I', csrc)
|
|
96
|
+
return header + self.payload
|
|
97
|
+
|
|
98
|
+
def __str__(self) -> str:
|
|
99
|
+
return (
|
|
100
|
+
f'RTP(v={self.version},'
|
|
101
|
+
f'p={self.padding},'
|
|
102
|
+
f'x={self.extension},'
|
|
103
|
+
f'm={self.marker},'
|
|
104
|
+
f'pt={self.payload_type},'
|
|
105
|
+
f'sn={self.sequence_number},'
|
|
106
|
+
f'ts={self.timestamp},'
|
|
107
|
+
f'ssrc={self.ssrc},'
|
|
108
|
+
f'csrcs={self.csrc_list},'
|
|
109
|
+
f'payload_size={len(self.payload)})'
|
|
110
|
+
)
|
|
@@ -70,6 +70,9 @@ def get_ini_dir() -> Optional[pathlib.Path]:
|
|
|
70
70
|
elif sys.platform == 'linux':
|
|
71
71
|
if xdg_runtime_dir := os.environ.get('XDG_RUNTIME_DIR', None):
|
|
72
72
|
return pathlib.Path(xdg_runtime_dir)
|
|
73
|
+
tmpdir = os.environ.get('TMPDIR', '/tmp')
|
|
74
|
+
if pathlib.Path(tmpdir).is_dir():
|
|
75
|
+
return pathlib.Path(tmpdir)
|
|
73
76
|
elif sys.platform == 'win32':
|
|
74
77
|
if local_app_data_dir := os.environ.get('LOCALAPPDATA', None):
|
|
75
78
|
return pathlib.Path(local_app_data_dir) / 'Temp'
|
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.200
|
|
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"
|
|
@@ -1,36 +1,37 @@
|
|
|
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=QkvzoUjUmzIu-0WPLCIoPkyy_n8BoMLliGVrvjz6i7A,415
|
|
3
|
+
bumble/a2dp.py,sha256=_dCq-qyG5OglDVlaOFwAgFe_ugvHuEdEYL-kWFf6sWQ,31775
|
|
4
4
|
bumble/at.py,sha256=Giu2VUSJKH-jIh10lOfumiqy-FyO99Ra6nJ7UiWQ0H8,3114
|
|
5
|
-
bumble/att.py,sha256=
|
|
6
|
-
bumble/avc.py,sha256=
|
|
5
|
+
bumble/att.py,sha256=S-ha1Xn2YHf8k_c6JCXDv1QwiGJAJvgpHVLVxo1kkPQ,32755
|
|
6
|
+
bumble/avc.py,sha256=OZz5_DYenPeg2PcNM3dpgV5PUs4D7FBSNOcSqsuRJ2w,16329
|
|
7
7
|
bumble/avctp.py,sha256=yHAjJRjLGtR0Q-iWcLS7cJRz5Jr2YiRmZd6LZV4Xjt4,9935
|
|
8
|
-
bumble/avdtp.py,sha256=
|
|
9
|
-
bumble/avrcp.py,sha256=
|
|
8
|
+
bumble/avdtp.py,sha256=2ki_BE4SHiu3Sx9oHCknfjF-bBcgPB9TsyF5upciUYI,76773
|
|
9
|
+
bumble/avrcp.py,sha256=P_pLVpP3kRtoD2y0Ca0NTEEe1mA4SXO_ldtc4OP6Tcc,69976
|
|
10
10
|
bumble/bridge.py,sha256=T6es5oS1dy8QgkxQ8iOD-YcZ0SWOv8jaqC7TGxqodk4,3003
|
|
11
|
-
bumble/codecs.py,sha256=
|
|
11
|
+
bumble/codecs.py,sha256=75TGfq-XWWtr-mCRRG7QzJYNRebG50Ypt_QGQkoWlxU,20915
|
|
12
12
|
bumble/colors.py,sha256=CC5tBDnN86bvlbYf1KIVdyj7QBLaqEDT_hQVB0p7FeU,3118
|
|
13
13
|
bumble/company_ids.py,sha256=B68e2QPsDeRYP9jjbGs4GGDwEkGxcXGTsON_CHA0uuI,118528
|
|
14
14
|
bumble/controller.py,sha256=XkYTQb2J5MhH_dGfnFkrLXdChFD2s1wSvqXaHQFeo48,59688
|
|
15
15
|
bumble/core.py,sha256=T43ZszjsU_89B0UJwQ9GCzvKU7oj1_RBzsdGr9jX9xY,72440
|
|
16
16
|
bumble/crypto.py,sha256=L6z3dn9-dgKYRtOM6O3F6n6Ju4PwTM3LAFJtCg_ie78,9382
|
|
17
17
|
bumble/decoder.py,sha256=0-VNWZT-u7lvK3qBpAuYT0M6Rz_bMgMi4CjfUXX_6RM,9728
|
|
18
|
-
bumble/device.py,sha256=
|
|
18
|
+
bumble/device.py,sha256=vroAnNWlBW6_jw1KgmoG4ZWKyauLm8abS1XFrTX084Y,195024
|
|
19
19
|
bumble/gap.py,sha256=dRU2_TWvqTDx80hxeSbXlWIeWvptWH4_XbItG5y948Q,2138
|
|
20
20
|
bumble/gatt.py,sha256=a07mQ3O0LFt5zgUzSUwa4Jak_FXOXSFX-njxnQNS_zY,39014
|
|
21
21
|
bumble/gatt_client.py,sha256=gIpgNQj5WNm9RirXXT4vuXQZ4WK82IFMOqnfqBtoYRU,42809
|
|
22
22
|
bumble/gatt_server.py,sha256=pafGMeAuGAAELnr_1pB_l3CcR5u4H4Y1-MRHjN53gdE,37449
|
|
23
|
-
bumble/hci.py,sha256=
|
|
23
|
+
bumble/hci.py,sha256=e2JqP-D1h7b7vHxFbmdsLJtOacdiuMizzGgBWmCAhxQ,286058
|
|
24
24
|
bumble/helpers.py,sha256=m0w4UgFFNDEnXwHrDyfRlcBObdVed2fqXGL0lvR3c8s,12733
|
|
25
|
-
bumble/hfp.py,sha256=
|
|
25
|
+
bumble/hfp.py,sha256=h5IcgxKnlFWapeJHcNDTvxup9oAE5CcZju92sOusTGc,75619
|
|
26
26
|
bumble/hid.py,sha256=hJKm6qhNa0kQTGmp_VxNh3-ywgBDdJpPPFcvtFiRL0A,20335
|
|
27
|
-
bumble/host.py,sha256=
|
|
27
|
+
bumble/host.py,sha256=pPH7HTQ6ogOToj4Y5Jl985MKjbVlG_jeOcJrV0NTSqU,49204
|
|
28
28
|
bumble/keys.py,sha256=WbIQ7Ob81mW75qmEPQ2rBLfnqBMA-ts2yowWXP9UaCY,12654
|
|
29
29
|
bumble/l2cap.py,sha256=Bu6oTD3DzqLOKiarynT1cfQefNgR0gCJoKxnwQJl2_o,81398
|
|
30
30
|
bumble/link.py,sha256=MYKsIKpbbAkh_ldxPZKu_GhS90ImC0IQtCAqbY4Ddg4,24034
|
|
31
31
|
bumble/pairing.py,sha256=tgPUba6xNxMi-2plm3xfRlzHq-uPRNZEIGWaN0qNGCs,9853
|
|
32
32
|
bumble/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
33
|
bumble/rfcomm.py,sha256=dh5t5vlDEfw3yHgQfzegMYPnShP8Zo-3ScABUvmXNLI,40751
|
|
34
|
+
bumble/rtp.py,sha256=388X3aCv-QrWJ37r_VPqXYJtvNGWPsHnJasqs41g_-s,3487
|
|
34
35
|
bumble/sdp.py,sha256=aajRQybcMWh_Kc4IuQahix6bXnHg61OXl1gSdrSysl4,45465
|
|
35
36
|
bumble/smp.py,sha256=FNLn-pt2n6CKNttQGJJDnfaeof2SVkxlapwySHWAVJY,77640
|
|
36
37
|
bumble/snoop.py,sha256=1mzwmp9LToUXbPnFsLrt8S4UHs0kqzbu7LDydwbmkZI,5715
|
|
@@ -41,7 +42,7 @@ bumble/apps/auracast.py,sha256=hrG6dW79UkMXqcMLgYjziWEjcVibFUITvjPb4LX1lxM,24686
|
|
|
41
42
|
bumble/apps/bench.py,sha256=nPACg5gQWxJ-6phze12FVCv1_WS2UjrWR7OUWj0o8PU,56350
|
|
42
43
|
bumble/apps/ble_rpa_tool.py,sha256=ZQtsbfnLPd5qUAkEBPpNgJLRynBBc7q_9cDHKUW2SQ0,1701
|
|
43
44
|
bumble/apps/console.py,sha256=rwD9y3g8Mm_mAEvrcXjbtcv5d8mwF3yTbmE6Vet2BEk,45300
|
|
44
|
-
bumble/apps/controller_info.py,sha256=
|
|
45
|
+
bumble/apps/controller_info.py,sha256=WScuK5Ytp5aFEosAcgRTCEeey6SmxDFmyB7KBhgVx6s,11759
|
|
45
46
|
bumble/apps/controller_loopback.py,sha256=VJAFsUdFwm2KgOrRuLADymMpZl5qVO0RGkDSr-1XKtY,7214
|
|
46
47
|
bumble/apps/controllers.py,sha256=R6XJ1XpyuXlyqSCmI7PromVIcoYTcYfpmO-TqTYXnUI,2326
|
|
47
48
|
bumble/apps/device_info.py,sha256=kQSO7F60cmUKw99LHfyly9s_ox2mD0dNGsgxCnKoFOQ,7999
|
|
@@ -62,12 +63,13 @@ bumble/apps/lea_unicast/liblc3.wasm,sha256=nYMzG9fP8_71K9dQfVI9QPQPkFRPHoqZEEExs
|
|
|
62
63
|
bumble/apps/link_relay/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
64
|
bumble/apps/link_relay/link_relay.py,sha256=GOESYPzkMJFrz5VOI_BSmnmgz4Y8EdSLHMWgdA63aDg,10066
|
|
64
65
|
bumble/apps/link_relay/logging.yml,sha256=t-P72RAHsTZOESw0M4I3CQPonymcjkd9SLE0eY_ZNiM,311
|
|
66
|
+
bumble/apps/player/player.py,sha256=hht867HimxaO-ZgPxZB3OYLNJv6eaR55BUgBlCSGR6U,22370
|
|
65
67
|
bumble/apps/speaker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
68
|
bumble/apps/speaker/logo.svg,sha256=SQ9XXIqhh07BnGaBZ653nJ7vOslm2Dogdqadhg2MdE4,4205
|
|
67
69
|
bumble/apps/speaker/speaker.css,sha256=nyM5TjzDYkkLwFzsaIOuTSngzSvgDnkLe0Z-fAn1_t4,1234
|
|
68
70
|
bumble/apps/speaker/speaker.html,sha256=kfAZ5oZSFc9ygBFIUuZEn5LUNQnHBvrnuHU6VAptyiU,1188
|
|
69
71
|
bumble/apps/speaker/speaker.js,sha256=DrT831yg3oBXKZ5usnfZjRU9X6Nw3zjIWSkz6sIgVtw,9373
|
|
70
|
-
bumble/apps/speaker/speaker.py,sha256=
|
|
72
|
+
bumble/apps/speaker/speaker.py,sha256=OTqygA9VbQW_XxTxqxS0vRW_wvhnKHssSxDz1lQZ9ZU,24763
|
|
71
73
|
bumble/drivers/__init__.py,sha256=lxqJTghh21rQFThRTurwLysZm385TUcn8ZdpHQSWD88,3196
|
|
72
74
|
bumble/drivers/common.py,sha256=pS783hudolLZAzF8IUWp7g6TXyQsUCEzqCsd1VGeYfQ,1507
|
|
73
75
|
bumble/drivers/intel.py,sha256=-YcJI4ZC_fhHHxWyE8b4eB8V7suOFH1n9uayckGE9Uw,3231
|
|
@@ -91,7 +93,7 @@ bumble/profiles/cap.py,sha256=6gH7oOnUKjOggMPuB7rtbwj0AneoNmnWzQ_iR3io8e0,1945
|
|
|
91
93
|
bumble/profiles/csip.py,sha256=qpI9W0_FWIpsuJrHhxfbKaa-TD21epxEa3EuCm8gh6c,10156
|
|
92
94
|
bumble/profiles/device_information_service.py,sha256=RfqnXywcwcSTiFalxd1LVTTdeWLxHGsMvlvr9fI0GJI,6193
|
|
93
95
|
bumble/profiles/gap.py,sha256=jUjfy6MPL7k6wgNn3ny3PVgSX6-SLmjUepFYHjGc3IU,3870
|
|
94
|
-
bumble/profiles/hap.py,sha256=
|
|
96
|
+
bumble/profiles/hap.py,sha256=IbE1KzjIMEq6FxtFqTgA2DN0pPnpu0996KJRjuN3oaQ,25614
|
|
95
97
|
bumble/profiles/heart_rate_service.py,sha256=_MG1ApmF1B7b4xRzELuahtRWzLm49i9O4m7I6ZFU4mw,8644
|
|
96
98
|
bumble/profiles/le_audio.py,sha256=1x6OpIc0JMa32YVcfM8lq6jnXHlriHUcOkAs0EttJJk,3093
|
|
97
99
|
bumble/profiles/mcp.py,sha256=vIN1r_if4LmOcGCgZuDYTYLMQzU6-1pKUFx1Z3iSAeY,17415
|
|
@@ -106,13 +108,13 @@ bumble/tools/rtk_fw_download.py,sha256=KEPG-rDrdPGKBzZ78P4s3udLRYT3p7vesGhXvJTWT
|
|
|
106
108
|
bumble/tools/rtk_util.py,sha256=TwZhupHQrQYsYHLdRGyzXKd24pwCk8kkzqK1Rj2guco,5087
|
|
107
109
|
bumble/transport/__init__.py,sha256=Z01fvuKpqAbhJd0wYcGhW09W2tycM71ck80XoZ8a87Q,7012
|
|
108
110
|
bumble/transport/android_emulator.py,sha256=6HR2cEqdU0XbOldwxCtQuXtvwOUYhRfHkPz0TRt3mbo,4382
|
|
109
|
-
bumble/transport/android_netsim.py,sha256=
|
|
111
|
+
bumble/transport/android_netsim.py,sha256=bQ1XSNloAsqanyEQMmcTpZX6csiZNdowoYDh-JskDZY,16447
|
|
110
112
|
bumble/transport/common.py,sha256=bJWYH-vRJJl0nWwlAjGTHrRQFdZayKkH7YoGor5abH8,16659
|
|
111
113
|
bumble/transport/file.py,sha256=eVM2V6Nk2nDAFdE7Rt01ZI3JdTovsH9OEU1gKYPJjpE,2010
|
|
112
114
|
bumble/transport/hci_socket.py,sha256=EdgWi3-O5yvYcH4R4BkPtG79pnUo7GQtXWawuUHDoDQ,6331
|
|
113
115
|
bumble/transport/pty.py,sha256=grTl-yvjMWHflNwuME4ccVqDbk6NIEgQMgH6Y9lf1fU,2732
|
|
114
116
|
bumble/transport/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
115
|
-
bumble/transport/pyusb.py,sha256=
|
|
117
|
+
bumble/transport/pyusb.py,sha256=7l0y3qo3_LYv1wyKtGC5d0Si2t49F574NIA4XZu70jk,16181
|
|
116
118
|
bumble/transport/serial.py,sha256=loQxkeG7uE09enXWg2uGbxi6CeG70wn3kzPbEwULKw4,2446
|
|
117
119
|
bumble/transport/tcp_client.py,sha256=deyUJYpj04QE00Mw_PTU5PHPA6mr1Nui3f5-QCy2zOw,1854
|
|
118
120
|
bumble/transport/tcp_server.py,sha256=tvu7FuPeqiXfoj2HQU8wu4AiwKjDDDCKlKjgtqWc5hg,3779
|
|
@@ -155,9 +157,9 @@ bumble/vendor/android/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
155
157
|
bumble/vendor/android/hci.py,sha256=GZrkhaWmcMt1JpnRhv0NoySGkf2H4lNUV2f_omRZW0I,10741
|
|
156
158
|
bumble/vendor/zephyr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
157
159
|
bumble/vendor/zephyr/hci.py,sha256=d83bC0TvT947eN4roFjLkQefWtHOoNsr4xib2ctSkvA,3195
|
|
158
|
-
bumble-0.0.
|
|
159
|
-
bumble-0.0.
|
|
160
|
-
bumble-0.0.
|
|
161
|
-
bumble-0.0.
|
|
162
|
-
bumble-0.0.
|
|
163
|
-
bumble-0.0.
|
|
160
|
+
bumble-0.0.200.dist-info/LICENSE,sha256=FvaYh4NRWIGgS_OwoBs5gFgkCmAghZ-DYnIGBZPuw-s,12142
|
|
161
|
+
bumble-0.0.200.dist-info/METADATA,sha256=JusrKVEENpezz89ImgV1FiIA5pBG9OoZK6Ic2ass0ac,5673
|
|
162
|
+
bumble-0.0.200.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
|
|
163
|
+
bumble-0.0.200.dist-info/entry_points.txt,sha256=2TAnDAHiYVEo9Gnugk29QIsHpCgRgnPqBszLSgIX2T0,984
|
|
164
|
+
bumble-0.0.200.dist-info/top_level.txt,sha256=tV6JJKaHPYMFiJYiBYFW24PCcfLxTJZdlu6BmH3Cb00,7
|
|
165
|
+
bumble-0.0.200.dist-info/RECORD,,
|
|
@@ -10,6 +10,7 @@ bumble-l2cap-bridge = bumble.apps.l2cap_bridge:main
|
|
|
10
10
|
bumble-link-relay = bumble.apps.link_relay.link_relay:main
|
|
11
11
|
bumble-pair = bumble.apps.pair:main
|
|
12
12
|
bumble-pandora-server = bumble.apps.pandora_server:main
|
|
13
|
+
bumble-player = bumble.apps.player.player:main
|
|
13
14
|
bumble-rfcomm-bridge = bumble.apps.rfcomm_bridge:main
|
|
14
15
|
bumble-rtk-fw-download = bumble.tools.rtk_fw_download:main
|
|
15
16
|
bumble-rtk-util = bumble.tools.rtk_util:main
|
|
File without changes
|
|
File without changes
|