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/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.to_bytes(),
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
- # Allowed default values.
411
- audio_channel_allocation = AudioLocation.NOT_ALLOWED
412
- codec_frames_per_sdu = 1
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 struct.pack(
442
- '<BBBBBBBBIBBHBBB',
443
- 2,
444
- CodecSpecificConfiguration.Type.SAMPLING_FREQUENCY,
445
- self.sampling_frequency,
446
- 2,
447
- CodecSpecificConfiguration.Type.FRAME_DURATION,
448
- self.frame_duration,
449
- 5,
450
- CodecSpecificConfiguration.Type.AUDIO_CHANNEL_ALLOCATION,
451
- self.audio_channel_allocation,
452
- 3,
453
- CodecSpecificConfiguration.Type.OCTETS_PER_FRAME,
454
- self.octets_per_codec_frame,
455
- 2,
456
- CodecSpecificConfiguration.Type.CODEC_FRAMES_PER_SDU,
457
- self.codec_frames_per_sdu,
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
- @dataclasses.dataclass
478
- class CodecInfo:
479
- coding_format: hci.CodecID
480
- company_id: int
481
- vendor_specific_codec_id: int
482
-
483
- @classmethod
484
- def from_bytes(cls, data: bytes) -> Self:
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: BasicAudioAnnouncement.CodecInfo
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 = cls.CodecInfo.from_bytes(data[offset : offset + 5])
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.to_bytes()
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.to_bytes()
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.to_bytes())
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.202
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: prompt-toolkit>=3.0.16; platform_system != "Emscripten"
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>=12.0; platform_system != "Emscripten"
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=0o3Qq5M65Ds-43dG5u5R1z10hjSzTudi88nO90cBlv4,415
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=jFUcIDP3JYYdazWAVynGy0pcgNOzsldRzoBhhOkLCRI,32767
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=XkYTQb2J5MhH_dGfnFkrLXdChFD2s1wSvqXaHQFeo48,59688
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=vroAnNWlBW6_jw1KgmoG4ZWKyauLm8abS1XFrTX084Y,195024
18
+ bumble/device.py,sha256=BuVejCWditUcMzTM1RBOC-mHdu9tNMOv0AyeCp_iX9E,194628
19
19
  bumble/gap.py,sha256=dRU2_TWvqTDx80hxeSbXlWIeWvptWH4_XbItG5y948Q,2138
20
- bumble/gatt.py,sha256=a07mQ3O0LFt5zgUzSUwa4Jak_FXOXSFX-njxnQNS_zY,39014
21
- bumble/gatt_client.py,sha256=2Y9rp5kn-aPC2aC0maiWmvrixcWvCWSktgEdjj_xr5w,43202
22
- bumble/gatt_server.py,sha256=pafGMeAuGAAELnr_1pB_l3CcR5u4H4Y1-MRHjN53gdE,37449
23
- bumble/hci.py,sha256=e2JqP-D1h7b7vHxFbmdsLJtOacdiuMizzGgBWmCAhxQ,286058
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=h5IcgxKnlFWapeJHcNDTvxup9oAE5CcZju92sOusTGc,75619
25
+ bumble/hfp.py,sha256=UDqB-z5nEzLgRojJeC6TbFRaPXV3Ht0jvQV03ksyiLU,75749
26
26
  bumble/hid.py,sha256=hJKm6qhNa0kQTGmp_VxNh3-ywgBDdJpPPFcvtFiRL0A,20335
27
- bumble/host.py,sha256=pPH7HTQ6ogOToj4Y5Jl985MKjbVlG_jeOcJrV0NTSqU,49204
27
+ bumble/host.py,sha256=gLDLx71ibS9DkeoXvzMFesssaT4svGx7SjasVdCio5I,49196
28
28
  bumble/keys.py,sha256=WbIQ7Ob81mW75qmEPQ2rBLfnqBMA-ts2yowWXP9UaCY,12654
29
- bumble/l2cap.py,sha256=PJxoXV6h1hhHlkKKY3KGuF8l3HTpV-C-mAE6jfTkLY4,81421
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=I45-qVmFcdRVd65iBuYTwrlKZX_AXAjnXrj4wjLR2co,45554
36
- bumble/smp.py,sha256=Mc2q_tG3_ATJDrx5ZkPpNI7g6h6g1vRvH8OOQDbI39c,77685
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=hrG6dW79UkMXqcMLgYjziWEjcVibFUITvjPb4LX1lxM,24686
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=KISv352tKnsQsoxjkDiCQbMFmhnPWdnug5wSFAAXxEs,4033
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=7hK3s5I0vHneECo01UpVoP10LcEcMRIHjmO35lMhNwY,20659
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=LnEQ3DJAhmJVgHA7VyokvypQejsi2VcbauSFYn1a9Jk,39235
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=U0K03XqOKtqahXtq7U47WxftsAD7tkiDeUqxfaF4pwk,18540
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=E_D6dGMWgTM2HsAk7y-iK-IWVJxfPtHOB5KZZkYV6yw,19613
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.202.dist-info/LICENSE,sha256=FvaYh4NRWIGgS_OwoBs5gFgkCmAghZ-DYnIGBZPuw-s,12142
169
- bumble-0.0.202.dist-info/METADATA,sha256=rao_wk6XWfEzXwGDY0rdDLSByA_rBfAiS9NSf9v111I,5726
170
- bumble-0.0.202.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
171
- bumble-0.0.202.dist-info/entry_points.txt,sha256=2TAnDAHiYVEo9Gnugk29QIsHpCgRgnPqBszLSgIX2T0,984
172
- bumble-0.0.202.dist-info/top_level.txt,sha256=tV6JJKaHPYMFiJYiBYFW24PCcfLxTJZdlu6BmH3Cb00,7
173
- bumble-0.0.202.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.3.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5