bumble 0.0.202__py3-none-any.whl → 0.0.203__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/apps/auracast.py +22 -13
- bumble/apps/hci_bridge.py +1 -1
- bumble/apps/lea_unicast/app.py +24 -6
- bumble/att.py +1 -4
- bumble/controller.py +58 -2
- bumble/device.py +454 -494
- bumble/gatt.py +1 -1
- bumble/gatt_client.py +3 -3
- bumble/gatt_server.py +2 -2
- bumble/hci.py +93 -33
- bumble/hfp.py +20 -17
- bumble/host.py +1 -1
- bumble/l2cap.py +2 -8
- bumble/pandora/host.py +1 -1
- bumble/profiles/aics.py +3 -3
- bumble/profiles/bap.py +114 -42
- bumble/sdp.py +1 -7
- bumble/smp.py +2 -5
- {bumble-0.0.202.dist-info → bumble-0.0.203.dist-info}/METADATA +15 -15
- {bumble-0.0.202.dist-info → bumble-0.0.203.dist-info}/RECORD +25 -25
- {bumble-0.0.202.dist-info → bumble-0.0.203.dist-info}/WHEEL +1 -1
- {bumble-0.0.202.dist-info → bumble-0.0.203.dist-info}/LICENSE +0 -0
- {bumble-0.0.202.dist-info → bumble-0.0.203.dist-info}/entry_points.txt +0 -0
- {bumble-0.0.202.dist-info → bumble-0.0.203.dist-info}/top_level.txt +0 -0
bumble/profiles/bap.py
CHANGED
|
@@ -265,7 +265,7 @@ class UnicastServerAdvertisingData:
|
|
|
265
265
|
core.AdvertisingData.SERVICE_DATA_16_BIT_UUID,
|
|
266
266
|
struct.pack(
|
|
267
267
|
'<2sBIB',
|
|
268
|
-
gatt.GATT_AUDIO_STREAM_CONTROL_SERVICE
|
|
268
|
+
bytes(gatt.GATT_AUDIO_STREAM_CONTROL_SERVICE),
|
|
269
269
|
self.announcement_type,
|
|
270
270
|
self.available_audio_contexts,
|
|
271
271
|
len(self.metadata),
|
|
@@ -398,18 +398,21 @@ class CodecSpecificConfiguration:
|
|
|
398
398
|
OCTETS_PER_FRAME = 0x04
|
|
399
399
|
CODEC_FRAMES_PER_SDU = 0x05
|
|
400
400
|
|
|
401
|
-
sampling_frequency: SamplingFrequency
|
|
402
|
-
frame_duration: FrameDuration
|
|
403
|
-
audio_channel_allocation: AudioLocation
|
|
404
|
-
octets_per_codec_frame: int
|
|
405
|
-
codec_frames_per_sdu: int
|
|
401
|
+
sampling_frequency: SamplingFrequency | None = None
|
|
402
|
+
frame_duration: FrameDuration | None = None
|
|
403
|
+
audio_channel_allocation: AudioLocation | None = None
|
|
404
|
+
octets_per_codec_frame: int | None = None
|
|
405
|
+
codec_frames_per_sdu: int | None = None
|
|
406
406
|
|
|
407
407
|
@classmethod
|
|
408
408
|
def from_bytes(cls, data: bytes) -> CodecSpecificConfiguration:
|
|
409
409
|
offset = 0
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
410
|
+
sampling_frequency: SamplingFrequency | None = None
|
|
411
|
+
frame_duration: FrameDuration | None = None
|
|
412
|
+
audio_channel_allocation: AudioLocation | None = None
|
|
413
|
+
octets_per_codec_frame: int | None = None
|
|
414
|
+
codec_frames_per_sdu: int | None = None
|
|
415
|
+
|
|
413
416
|
while offset < len(data):
|
|
414
417
|
length, type = struct.unpack_from('BB', data, offset)
|
|
415
418
|
offset += 2
|
|
@@ -427,8 +430,6 @@ class CodecSpecificConfiguration:
|
|
|
427
430
|
elif type == CodecSpecificConfiguration.Type.CODEC_FRAMES_PER_SDU:
|
|
428
431
|
codec_frames_per_sdu = value
|
|
429
432
|
|
|
430
|
-
# It is expected here that if some fields are missing, an error should be raised.
|
|
431
|
-
# pylint: disable=possibly-used-before-assignment,used-before-assignment
|
|
432
433
|
return CodecSpecificConfiguration(
|
|
433
434
|
sampling_frequency=sampling_frequency,
|
|
434
435
|
frame_duration=frame_duration,
|
|
@@ -438,23 +439,43 @@ class CodecSpecificConfiguration:
|
|
|
438
439
|
)
|
|
439
440
|
|
|
440
441
|
def __bytes__(self) -> bytes:
|
|
441
|
-
return
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
442
|
+
return b''.join(
|
|
443
|
+
[
|
|
444
|
+
struct.pack(fmt, length, tag, value)
|
|
445
|
+
for fmt, length, tag, value in [
|
|
446
|
+
(
|
|
447
|
+
'<BBB',
|
|
448
|
+
2,
|
|
449
|
+
CodecSpecificConfiguration.Type.SAMPLING_FREQUENCY,
|
|
450
|
+
self.sampling_frequency,
|
|
451
|
+
),
|
|
452
|
+
(
|
|
453
|
+
'<BBB',
|
|
454
|
+
2,
|
|
455
|
+
CodecSpecificConfiguration.Type.FRAME_DURATION,
|
|
456
|
+
self.frame_duration,
|
|
457
|
+
),
|
|
458
|
+
(
|
|
459
|
+
'<BBI',
|
|
460
|
+
5,
|
|
461
|
+
CodecSpecificConfiguration.Type.AUDIO_CHANNEL_ALLOCATION,
|
|
462
|
+
self.audio_channel_allocation,
|
|
463
|
+
),
|
|
464
|
+
(
|
|
465
|
+
'<BBH',
|
|
466
|
+
3,
|
|
467
|
+
CodecSpecificConfiguration.Type.OCTETS_PER_FRAME,
|
|
468
|
+
self.octets_per_codec_frame,
|
|
469
|
+
),
|
|
470
|
+
(
|
|
471
|
+
'<BBB',
|
|
472
|
+
2,
|
|
473
|
+
CodecSpecificConfiguration.Type.CODEC_FRAMES_PER_SDU,
|
|
474
|
+
self.codec_frames_per_sdu,
|
|
475
|
+
),
|
|
476
|
+
]
|
|
477
|
+
if value is not None
|
|
478
|
+
]
|
|
458
479
|
)
|
|
459
480
|
|
|
460
481
|
|
|
@@ -466,6 +487,24 @@ class BroadcastAudioAnnouncement:
|
|
|
466
487
|
def from_bytes(cls, data: bytes) -> Self:
|
|
467
488
|
return cls(int.from_bytes(data[:3], 'little'))
|
|
468
489
|
|
|
490
|
+
def __bytes__(self) -> bytes:
|
|
491
|
+
return self.broadcast_id.to_bytes(3, 'little')
|
|
492
|
+
|
|
493
|
+
def get_advertising_data(self) -> bytes:
|
|
494
|
+
return bytes(
|
|
495
|
+
core.AdvertisingData(
|
|
496
|
+
[
|
|
497
|
+
(
|
|
498
|
+
core.AdvertisingData.SERVICE_DATA_16_BIT_UUID,
|
|
499
|
+
(
|
|
500
|
+
bytes(gatt.GATT_BROADCAST_AUDIO_ANNOUNCEMENT_SERVICE)
|
|
501
|
+
+ bytes(self)
|
|
502
|
+
),
|
|
503
|
+
)
|
|
504
|
+
]
|
|
505
|
+
)
|
|
506
|
+
)
|
|
507
|
+
|
|
469
508
|
|
|
470
509
|
@dataclasses.dataclass
|
|
471
510
|
class BasicAudioAnnouncement:
|
|
@@ -474,26 +513,37 @@ class BasicAudioAnnouncement:
|
|
|
474
513
|
index: int
|
|
475
514
|
codec_specific_configuration: CodecSpecificConfiguration
|
|
476
515
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
coding_format = hci.CodecID(data[0])
|
|
486
|
-
company_id = int.from_bytes(data[1:3], 'little')
|
|
487
|
-
vendor_specific_codec_id = int.from_bytes(data[3:5], 'little')
|
|
488
|
-
return cls(coding_format, company_id, vendor_specific_codec_id)
|
|
516
|
+
def __bytes__(self) -> bytes:
|
|
517
|
+
codec_specific_configuration_bytes = bytes(
|
|
518
|
+
self.codec_specific_configuration
|
|
519
|
+
)
|
|
520
|
+
return (
|
|
521
|
+
bytes([self.index, len(codec_specific_configuration_bytes)])
|
|
522
|
+
+ codec_specific_configuration_bytes
|
|
523
|
+
)
|
|
489
524
|
|
|
490
525
|
@dataclasses.dataclass
|
|
491
526
|
class Subgroup:
|
|
492
|
-
codec_id:
|
|
527
|
+
codec_id: hci.CodingFormat
|
|
493
528
|
codec_specific_configuration: CodecSpecificConfiguration
|
|
494
529
|
metadata: le_audio.Metadata
|
|
495
530
|
bis: List[BasicAudioAnnouncement.BIS]
|
|
496
531
|
|
|
532
|
+
def __bytes__(self) -> bytes:
|
|
533
|
+
metadata_bytes = bytes(self.metadata)
|
|
534
|
+
codec_specific_configuration_bytes = bytes(
|
|
535
|
+
self.codec_specific_configuration
|
|
536
|
+
)
|
|
537
|
+
return (
|
|
538
|
+
bytes([len(self.bis)])
|
|
539
|
+
+ bytes(self.codec_id)
|
|
540
|
+
+ bytes([len(codec_specific_configuration_bytes)])
|
|
541
|
+
+ codec_specific_configuration_bytes
|
|
542
|
+
+ bytes([len(metadata_bytes)])
|
|
543
|
+
+ metadata_bytes
|
|
544
|
+
+ b''.join(map(bytes, self.bis))
|
|
545
|
+
)
|
|
546
|
+
|
|
497
547
|
presentation_delay: int
|
|
498
548
|
subgroups: List[BasicAudioAnnouncement.Subgroup]
|
|
499
549
|
|
|
@@ -505,7 +555,7 @@ class BasicAudioAnnouncement:
|
|
|
505
555
|
for _ in range(data[3]):
|
|
506
556
|
num_bis = data[offset]
|
|
507
557
|
offset += 1
|
|
508
|
-
codec_id =
|
|
558
|
+
codec_id = hci.CodingFormat.from_bytes(data[offset : offset + 5])
|
|
509
559
|
offset += 5
|
|
510
560
|
codec_specific_configuration_length = data[offset]
|
|
511
561
|
offset += 1
|
|
@@ -549,3 +599,25 @@ class BasicAudioAnnouncement:
|
|
|
549
599
|
)
|
|
550
600
|
|
|
551
601
|
return cls(presentation_delay, subgroups)
|
|
602
|
+
|
|
603
|
+
def __bytes__(self) -> bytes:
|
|
604
|
+
return (
|
|
605
|
+
self.presentation_delay.to_bytes(3, 'little')
|
|
606
|
+
+ bytes([len(self.subgroups)])
|
|
607
|
+
+ b''.join(map(bytes, self.subgroups))
|
|
608
|
+
)
|
|
609
|
+
|
|
610
|
+
def get_advertising_data(self) -> bytes:
|
|
611
|
+
return bytes(
|
|
612
|
+
core.AdvertisingData(
|
|
613
|
+
[
|
|
614
|
+
(
|
|
615
|
+
core.AdvertisingData.SERVICE_DATA_16_BIT_UUID,
|
|
616
|
+
(
|
|
617
|
+
bytes(gatt.GATT_BASIC_AUDIO_ANNOUNCEMENT_SERVICE)
|
|
618
|
+
+ bytes(self)
|
|
619
|
+
),
|
|
620
|
+
)
|
|
621
|
+
]
|
|
622
|
+
)
|
|
623
|
+
)
|
bumble/sdp.py
CHANGED
|
@@ -344,9 +344,6 @@ class DataElement:
|
|
|
344
344
|
] # Keep a copy so we can re-serialize to an exact replica
|
|
345
345
|
return result
|
|
346
346
|
|
|
347
|
-
def to_bytes(self):
|
|
348
|
-
return bytes(self)
|
|
349
|
-
|
|
350
347
|
def __bytes__(self):
|
|
351
348
|
# Return early if we have a cache
|
|
352
349
|
if self.bytes:
|
|
@@ -623,11 +620,8 @@ class SDP_PDU:
|
|
|
623
620
|
def init_from_bytes(self, pdu, offset):
|
|
624
621
|
return HCI_Object.init_from_bytes(self, pdu, offset, self.fields)
|
|
625
622
|
|
|
626
|
-
def to_bytes(self):
|
|
627
|
-
return self.pdu
|
|
628
|
-
|
|
629
623
|
def __bytes__(self):
|
|
630
|
-
return self.
|
|
624
|
+
return self.pdu
|
|
631
625
|
|
|
632
626
|
def __str__(self):
|
|
633
627
|
result = f'{color(self.name, "blue")} [TID={self.transaction_id}]'
|
bumble/smp.py
CHANGED
|
@@ -298,11 +298,8 @@ class SMP_Command:
|
|
|
298
298
|
def init_from_bytes(self, pdu: bytes, offset: int) -> None:
|
|
299
299
|
return HCI_Object.init_from_bytes(self, pdu, offset, self.fields)
|
|
300
300
|
|
|
301
|
-
def to_bytes(self):
|
|
302
|
-
return self.pdu
|
|
303
|
-
|
|
304
301
|
def __bytes__(self):
|
|
305
|
-
return self.
|
|
302
|
+
return self.pdu
|
|
306
303
|
|
|
307
304
|
def __str__(self):
|
|
308
305
|
result = color(self.name, 'yellow')
|
|
@@ -1949,7 +1946,7 @@ class Manager(EventEmitter):
|
|
|
1949
1946
|
f'{connection.peer_address}: {command}'
|
|
1950
1947
|
)
|
|
1951
1948
|
cid = SMP_BR_CID if connection.transport == BT_BR_EDR_TRANSPORT else SMP_CID
|
|
1952
|
-
connection.send_l2cap_pdu(cid, command
|
|
1949
|
+
connection.send_l2cap_pdu(cid, bytes(command))
|
|
1953
1950
|
|
|
1954
1951
|
def on_smp_security_request_command(
|
|
1955
1952
|
self, connection: Connection, request: SMP_Security_Request_Command
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: bumble
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.203
|
|
4
4
|
Summary: Bluetooth Stack for Apps, Emulation, Test and Experimentation
|
|
5
5
|
Home-page: https://github.com/google/bumble
|
|
6
6
|
Author: Google
|
|
@@ -8,29 +8,31 @@ Author-email: tbd@tbd.com
|
|
|
8
8
|
Requires-Python: >=3.8
|
|
9
9
|
Description-Content-Type: text/markdown
|
|
10
10
|
License-File: LICENSE
|
|
11
|
-
Requires-Dist: pyee>=8.2.2
|
|
12
11
|
Requires-Dist: aiohttp~=3.8; platform_system != "Emscripten"
|
|
13
12
|
Requires-Dist: appdirs>=1.4; platform_system != "Emscripten"
|
|
14
13
|
Requires-Dist: click>=8.1.3; platform_system != "Emscripten"
|
|
15
14
|
Requires-Dist: cryptography==39; platform_system != "Emscripten"
|
|
15
|
+
Requires-Dist: cryptography>=39.0; platform_system == "Emscripten"
|
|
16
16
|
Requires-Dist: grpcio>=1.62.1; platform_system != "Emscripten"
|
|
17
17
|
Requires-Dist: humanize>=4.6.0; platform_system != "Emscripten"
|
|
18
18
|
Requires-Dist: libusb1>=2.0.1; platform_system != "Emscripten"
|
|
19
19
|
Requires-Dist: libusb-package==1.0.26.1; platform_system != "Emscripten"
|
|
20
20
|
Requires-Dist: platformdirs>=3.10.0; platform_system != "Emscripten"
|
|
21
|
-
Requires-Dist:
|
|
21
|
+
Requires-Dist: prompt_toolkit>=3.0.16; platform_system != "Emscripten"
|
|
22
22
|
Requires-Dist: prettytable>=3.6.0; platform_system != "Emscripten"
|
|
23
23
|
Requires-Dist: protobuf>=3.12.4; platform_system != "Emscripten"
|
|
24
|
+
Requires-Dist: pyee>=8.2.2
|
|
24
25
|
Requires-Dist: pyserial-asyncio>=0.5; platform_system != "Emscripten"
|
|
25
26
|
Requires-Dist: pyserial>=3.5; platform_system != "Emscripten"
|
|
26
27
|
Requires-Dist: pyusb>=1.2; platform_system != "Emscripten"
|
|
27
|
-
Requires-Dist: websockets
|
|
28
|
-
Requires-Dist: cryptography>=39.0; platform_system == "Emscripten"
|
|
29
|
-
Provides-Extra: avatar
|
|
30
|
-
Requires-Dist: pandora-avatar==0.0.10; extra == "avatar"
|
|
31
|
-
Requires-Dist: rootcanal==1.10.0; python_version >= "3.10" and extra == "avatar"
|
|
28
|
+
Requires-Dist: websockets==13.1; platform_system != "Emscripten"
|
|
32
29
|
Provides-Extra: build
|
|
33
30
|
Requires-Dist: build>=0.7; extra == "build"
|
|
31
|
+
Provides-Extra: test
|
|
32
|
+
Requires-Dist: pytest>=8.2; extra == "test"
|
|
33
|
+
Requires-Dist: pytest-asyncio>=0.23.5; extra == "test"
|
|
34
|
+
Requires-Dist: pytest-html>=3.2.0; extra == "test"
|
|
35
|
+
Requires-Dist: coverage>=6.4; extra == "test"
|
|
34
36
|
Provides-Extra: development
|
|
35
37
|
Requires-Dist: black==24.3; extra == "development"
|
|
36
38
|
Requires-Dist: grpcio-tools>=1.62.1; extra == "development"
|
|
@@ -44,17 +46,15 @@ Requires-Dist: types-appdirs>=1.4.3; extra == "development"
|
|
|
44
46
|
Requires-Dist: types-invoke>=1.7.3; extra == "development"
|
|
45
47
|
Requires-Dist: types-protobuf>=4.21.0; extra == "development"
|
|
46
48
|
Requires-Dist: wasmtime==20.0.0; extra == "development"
|
|
49
|
+
Provides-Extra: avatar
|
|
50
|
+
Requires-Dist: pandora-avatar==0.0.10; extra == "avatar"
|
|
51
|
+
Requires-Dist: rootcanal==1.10.0; python_version >= "3.10" and extra == "avatar"
|
|
52
|
+
Provides-Extra: pandora
|
|
53
|
+
Requires-Dist: bt-test-interfaces>=0.0.6; extra == "pandora"
|
|
47
54
|
Provides-Extra: documentation
|
|
48
55
|
Requires-Dist: mkdocs>=1.4.0; extra == "documentation"
|
|
49
56
|
Requires-Dist: mkdocs-material>=8.5.6; extra == "documentation"
|
|
50
57
|
Requires-Dist: mkdocstrings[python]>=0.19.0; extra == "documentation"
|
|
51
|
-
Provides-Extra: pandora
|
|
52
|
-
Requires-Dist: bt-test-interfaces>=0.0.6; extra == "pandora"
|
|
53
|
-
Provides-Extra: test
|
|
54
|
-
Requires-Dist: pytest>=8.2; extra == "test"
|
|
55
|
-
Requires-Dist: pytest-asyncio>=0.23.5; extra == "test"
|
|
56
|
-
Requires-Dist: pytest-html>=3.2.0; extra == "test"
|
|
57
|
-
Requires-Dist: coverage>=6.4; extra == "test"
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
_ _ _
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
bumble/__init__.py,sha256=Q8jkz6rgl95IMAeInQVt_2GLoJl3DcEP2cxtrQ-ho5c,110
|
|
2
|
-
bumble/_version.py,sha256=
|
|
2
|
+
bumble/_version.py,sha256=S9xMkf5dpbGiPXrFIMCaq0E-C6SAhQr_6T4y8wOvYoQ,415
|
|
3
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=
|
|
5
|
+
bumble/att.py,sha256=yw_yg_be19O9Nx1mh_JE_ZoYfiNsD3a59rFQPuknQL0,32711
|
|
6
6
|
bumble/avc.py,sha256=cO1-8x7BvuBCQVJg-9nTibkLFC4y0_2SNERZ8_7Kn_c,16407
|
|
7
7
|
bumble/avctp.py,sha256=yHAjJRjLGtR0Q-iWcLS7cJRz5Jr2YiRmZd6LZV4Xjt4,9935
|
|
8
8
|
bumble/avdtp.py,sha256=2ki_BE4SHiu3Sx9oHCknfjF-bBcgPB9TsyF5upciUYI,76773
|
|
@@ -11,34 +11,34 @@ bumble/bridge.py,sha256=T6es5oS1dy8QgkxQ8iOD-YcZ0SWOv8jaqC7TGxqodk4,3003
|
|
|
11
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
|
-
bumble/controller.py,sha256=
|
|
14
|
+
bumble/controller.py,sha256=biUkQisEZOc9-TGkUXYPes1RONA6TizKwDYIQWJx_7A,61593
|
|
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=BuVejCWditUcMzTM1RBOC-mHdu9tNMOv0AyeCp_iX9E,194628
|
|
19
19
|
bumble/gap.py,sha256=dRU2_TWvqTDx80hxeSbXlWIeWvptWH4_XbItG5y948Q,2138
|
|
20
|
-
bumble/gatt.py,sha256=
|
|
21
|
-
bumble/gatt_client.py,sha256=
|
|
22
|
-
bumble/gatt_server.py,sha256=
|
|
23
|
-
bumble/hci.py,sha256=
|
|
20
|
+
bumble/gatt.py,sha256=tXSDE2E4RsaFSW6rIz8qb0VJE4ZpcE-zafneCprcp2g,39010
|
|
21
|
+
bumble/gatt_client.py,sha256=Nb6xxQUDB68T7qF4GzlIPeER2SlroSGXbECZeSmzU4A,43190
|
|
22
|
+
bumble/gatt_server.py,sha256=T-Not_wPOrXtleiOwY0brJsbUI81NXb1vwq0Mun8QO8,37441
|
|
23
|
+
bumble/hci.py,sha256=DXRF7df0LxyZlxyROGK7fTE1982_uBQtiveNIcV-10U,289646
|
|
24
24
|
bumble/helpers.py,sha256=m0w4UgFFNDEnXwHrDyfRlcBObdVed2fqXGL0lvR3c8s,12733
|
|
25
|
-
bumble/hfp.py,sha256=
|
|
25
|
+
bumble/hfp.py,sha256=UDqB-z5nEzLgRojJeC6TbFRaPXV3Ht0jvQV03ksyiLU,75749
|
|
26
26
|
bumble/hid.py,sha256=hJKm6qhNa0kQTGmp_VxNh3-ywgBDdJpPPFcvtFiRL0A,20335
|
|
27
|
-
bumble/host.py,sha256=
|
|
27
|
+
bumble/host.py,sha256=gLDLx71ibS9DkeoXvzMFesssaT4svGx7SjasVdCio5I,49196
|
|
28
28
|
bumble/keys.py,sha256=WbIQ7Ob81mW75qmEPQ2rBLfnqBMA-ts2yowWXP9UaCY,12654
|
|
29
|
-
bumble/l2cap.py,sha256=
|
|
29
|
+
bumble/l2cap.py,sha256=VT0mv3S6fzVhF1ouahykTmKBbEKDc9DfH0qoKmPH8ZE,81291
|
|
30
30
|
bumble/link.py,sha256=SU7Ls2Lyg1XuY8x6yP9tAC83SYmMTU2a-vQ_CWCfq90,24107
|
|
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
34
|
bumble/rtp.py,sha256=388X3aCv-QrWJ37r_VPqXYJtvNGWPsHnJasqs41g_-s,3487
|
|
35
|
-
bumble/sdp.py,sha256=
|
|
36
|
-
bumble/smp.py,sha256=
|
|
35
|
+
bumble/sdp.py,sha256=bztdDr7cYUA5sSL1SWe7rhgVjMCoUnc2bA4tdkwJQcE,45446
|
|
36
|
+
bumble/smp.py,sha256=LzCdIexJQCW3wcmV5bVjsJJ-LEqPGdBER089-VymUsE,77625
|
|
37
37
|
bumble/snoop.py,sha256=1mzwmp9LToUXbPnFsLrt8S4UHs0kqzbu7LDydwbmkZI,5715
|
|
38
38
|
bumble/utils.py,sha256=e0i-4d28-9zP3gYcd1rdNd669rkPnRs5oJCERUEDfxo,15099
|
|
39
39
|
bumble/apps/README.md,sha256=XTwjRAY-EJWDXpl1V8K3Mw8B7kIqzUIUizRjVBVhoIE,1769
|
|
40
40
|
bumble/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
|
-
bumble/apps/auracast.py,sha256=
|
|
41
|
+
bumble/apps/auracast.py,sha256=zSsduDSTOa6Tf5qnty_nHyrOYFKjlYWyAz4zDNXA_uQ,25065
|
|
42
42
|
bumble/apps/bench.py,sha256=RitVnx9mzmW-1cB4O7wan-lQeFDlazdjTW-BQcuTDb0,58410
|
|
43
43
|
bumble/apps/ble_rpa_tool.py,sha256=ZQtsbfnLPd5qUAkEBPpNgJLRynBBc7q_9cDHKUW2SQ0,1701
|
|
44
44
|
bumble/apps/console.py,sha256=rwD9y3g8Mm_mAEvrcXjbtcv5d8mwF3yTbmE6Vet2BEk,45300
|
|
@@ -48,7 +48,7 @@ bumble/apps/controllers.py,sha256=R6XJ1XpyuXlyqSCmI7PromVIcoYTcYfpmO-TqTYXnUI,23
|
|
|
48
48
|
bumble/apps/device_info.py,sha256=kQSO7F60cmUKw99LHfyly9s_ox2mD0dNGsgxCnKoFOQ,7999
|
|
49
49
|
bumble/apps/gatt_dump.py,sha256=wwA-NhRnbgUkbj-Ukym7NDG2j2n_36t_tn93dLDVdIg,4487
|
|
50
50
|
bumble/apps/gg_bridge.py,sha256=JdW5QT6xN9c2XDDJoHDRo5W3N_RdVkCtTmlcOsJhlx8,14693
|
|
51
|
-
bumble/apps/hci_bridge.py,sha256=
|
|
51
|
+
bumble/apps/hci_bridge.py,sha256=0mO36AO3ea0yrrTaYuySc7Un5NTuvVn08ItXvJql3CQ,4029
|
|
52
52
|
bumble/apps/l2cap_bridge.py,sha256=524VgEmgCP4g7T0UdgmsePmNVhDFRJECeaZ_uzKsbco,13062
|
|
53
53
|
bumble/apps/pair.py,sha256=NtDxLfdnlOY_ZEtVNGVXWjv6_x_hndok_ydhV6zkFtI,18503
|
|
54
54
|
bumble/apps/pandora_server.py,sha256=5qaoLCpcZE2KsGO21-7t6Vg4dBjBWbnyOQXwrLhxkuE,1397
|
|
@@ -57,7 +57,7 @@ bumble/apps/scan.py,sha256=b6hIppiJqDfR7VFW2wl3-lkPdFvHLqYZKY8VjjNnhls,8366
|
|
|
57
57
|
bumble/apps/show.py,sha256=8w0-8jLtN6IM6_58pOHbEmE1Rmxm71O48ACrXixC2jk,6218
|
|
58
58
|
bumble/apps/unbond.py,sha256=LDPWpmgKLMGYDdIFGTdGciFDcUliZ0OmseEbGfJ-MAM,3176
|
|
59
59
|
bumble/apps/usb_probe.py,sha256=zJqrqKSGVYcOntXzgONdluZDE6jfj3IwPNuLqmDPDsU,10351
|
|
60
|
-
bumble/apps/lea_unicast/app.py,sha256=
|
|
60
|
+
bumble/apps/lea_unicast/app.py,sha256=3WnSApFcLzjpZXmU7kYlX54vApDpFEiF6exJFWbJkOI,21469
|
|
61
61
|
bumble/apps/lea_unicast/index.html,sha256=d1IHsYd8TGOnxNZKaHolf4Y-7VwT1kO9Z72vpGMdy3k,2354
|
|
62
62
|
bumble/apps/lea_unicast/liblc3.wasm,sha256=nYMzG9fP8_71K9dQfVI9QPQPkFRPHoqZEEExs1y6Oac,158603
|
|
63
63
|
bumble/apps/link_relay/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -77,16 +77,16 @@ bumble/drivers/rtk.py,sha256=nsfAqNzvxvAwbh6UYgxOCSNwgw7XouIBFA03FrLTs4M,22088
|
|
|
77
77
|
bumble/pandora/__init__.py,sha256=jaPtYCLfLeLUGj8-TmS3Gkv0l1_DBadYj8ZMAPLPAao,3463
|
|
78
78
|
bumble/pandora/config.py,sha256=KD85n3oRbuvD65sRah2H0gpxEW4YbD7HbYbsxdcpDDA,2388
|
|
79
79
|
bumble/pandora/device.py,sha256=LFqCWrgYkQWrFUSKArsAABXkge8sB2DhvaQoEsC4Jn0,5344
|
|
80
|
-
bumble/pandora/host.py,sha256=
|
|
80
|
+
bumble/pandora/host.py,sha256=PihXDb09a1IkV56MPNe4-5QRr54_Dp679pA4ldnLHlM,39235
|
|
81
81
|
bumble/pandora/l2cap.py,sha256=OT-pPprVAQr7xwjYnNwDQujayG2zWUS5FPXVBGNCW3o,11725
|
|
82
82
|
bumble/pandora/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
83
|
bumble/pandora/security.py,sha256=YErueKNLsnmcRe6dKo724Ht-buOqmZl2Gauswcc8FW0,21946
|
|
84
84
|
bumble/pandora/utils.py,sha256=Fq4glL0T5cJ2FODoDotmDNdYFOkTOR7DyyL8vkcxp20,3949
|
|
85
85
|
bumble/profiles/__init__.py,sha256=yBGC8Ti5LvZuoh1F42XtfrBilb39T77_yuxESZeX2yI,581
|
|
86
|
-
bumble/profiles/aics.py,sha256=
|
|
86
|
+
bumble/profiles/aics.py,sha256=2iXU3nFQ099zS13BsyRaq4-3PWiOaxCWfaWF8pa3C9g,18541
|
|
87
87
|
bumble/profiles/ascs.py,sha256=Y2_fd_5LOb9hon60LcQl3R-FoAIsOd_J37RZpveh-7c,25471
|
|
88
88
|
bumble/profiles/asha.py,sha256=QXUp7ImuMD48L0mpuNxPcIkv8VvoENynCuF2PEVqzFM,10373
|
|
89
|
-
bumble/profiles/bap.py,sha256=
|
|
89
|
+
bumble/profiles/bap.py,sha256=3fI8IB34l1CSzH0CwAD84qCxz_nV-SOP5q9VDzb3Aqk,21979
|
|
90
90
|
bumble/profiles/bass.py,sha256=Wiqum0Wsr5PpVzTAPDcyKLTfJoKXJUYOzqB320aSiUs,14950
|
|
91
91
|
bumble/profiles/battery_service.py,sha256=w-uF4jLoDozJOoykimb2RkrKjVyCke6ts2-h-F1PYyc,2292
|
|
92
92
|
bumble/profiles/cap.py,sha256=6gH7oOnUKjOggMPuB7rtbwj0AneoNmnWzQ_iR3io8e0,1945
|
|
@@ -165,9 +165,9 @@ bumble/vendor/android/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
165
165
|
bumble/vendor/android/hci.py,sha256=GZrkhaWmcMt1JpnRhv0NoySGkf2H4lNUV2f_omRZW0I,10741
|
|
166
166
|
bumble/vendor/zephyr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
167
167
|
bumble/vendor/zephyr/hci.py,sha256=d83bC0TvT947eN4roFjLkQefWtHOoNsr4xib2ctSkvA,3195
|
|
168
|
-
bumble-0.0.
|
|
169
|
-
bumble-0.0.
|
|
170
|
-
bumble-0.0.
|
|
171
|
-
bumble-0.0.
|
|
172
|
-
bumble-0.0.
|
|
173
|
-
bumble-0.0.
|
|
168
|
+
bumble-0.0.203.dist-info/LICENSE,sha256=FvaYh4NRWIGgS_OwoBs5gFgkCmAghZ-DYnIGBZPuw-s,12142
|
|
169
|
+
bumble-0.0.203.dist-info/METADATA,sha256=NgnILxtPNVp-DXsAjL6B2RjJoYFaw2jUoyUj4XC0ZaQ,5726
|
|
170
|
+
bumble-0.0.203.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
171
|
+
bumble-0.0.203.dist-info/entry_points.txt,sha256=2TAnDAHiYVEo9Gnugk29QIsHpCgRgnPqBszLSgIX2T0,984
|
|
172
|
+
bumble-0.0.203.dist-info/top_level.txt,sha256=tV6JJKaHPYMFiJYiBYFW24PCcfLxTJZdlu6BmH3Cb00,7
|
|
173
|
+
bumble-0.0.203.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|