bumble 0.0.195__py3-none-any.whl → 0.0.199__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.
Files changed (61) hide show
  1. bumble/_version.py +2 -2
  2. bumble/apps/auracast.py +351 -66
  3. bumble/apps/console.py +5 -20
  4. bumble/apps/device_info.py +230 -0
  5. bumble/apps/gatt_dump.py +4 -0
  6. bumble/apps/lea_unicast/app.py +16 -17
  7. bumble/apps/pair.py +32 -5
  8. bumble/at.py +12 -6
  9. bumble/att.py +56 -40
  10. bumble/avc.py +8 -5
  11. bumble/avctp.py +3 -2
  12. bumble/avdtp.py +7 -3
  13. bumble/avrcp.py +2 -1
  14. bumble/codecs.py +17 -13
  15. bumble/colors.py +6 -2
  16. bumble/core.py +37 -7
  17. bumble/decoder.py +14 -10
  18. bumble/device.py +382 -111
  19. bumble/drivers/rtk.py +32 -13
  20. bumble/gatt.py +30 -20
  21. bumble/gatt_client.py +15 -29
  22. bumble/gatt_server.py +14 -6
  23. bumble/hci.py +322 -32
  24. bumble/hid.py +24 -28
  25. bumble/host.py +20 -6
  26. bumble/l2cap.py +24 -17
  27. bumble/link.py +8 -3
  28. bumble/pandora/__init__.py +3 -0
  29. bumble/pandora/l2cap.py +310 -0
  30. bumble/profiles/aics.py +520 -0
  31. bumble/profiles/ascs.py +739 -0
  32. bumble/profiles/asha.py +295 -0
  33. bumble/profiles/bap.py +1 -874
  34. bumble/profiles/bass.py +440 -0
  35. bumble/profiles/csip.py +4 -4
  36. bumble/profiles/gap.py +110 -0
  37. bumble/profiles/hap.py +665 -0
  38. bumble/profiles/heart_rate_service.py +4 -3
  39. bumble/profiles/le_audio.py +43 -9
  40. bumble/profiles/mcp.py +448 -0
  41. bumble/profiles/pacs.py +210 -0
  42. bumble/profiles/tmap.py +89 -0
  43. bumble/profiles/vcp.py +5 -3
  44. bumble/rfcomm.py +4 -2
  45. bumble/sdp.py +13 -11
  46. bumble/smp.py +43 -12
  47. bumble/snoop.py +5 -4
  48. bumble/transport/__init__.py +8 -2
  49. bumble/transport/android_emulator.py +9 -3
  50. bumble/transport/android_netsim.py +9 -7
  51. bumble/transport/common.py +46 -18
  52. bumble/transport/pyusb.py +21 -4
  53. bumble/transport/unix.py +56 -0
  54. bumble/transport/usb.py +57 -46
  55. {bumble-0.0.195.dist-info → bumble-0.0.199.dist-info}/METADATA +41 -41
  56. {bumble-0.0.195.dist-info → bumble-0.0.199.dist-info}/RECORD +60 -49
  57. {bumble-0.0.195.dist-info → bumble-0.0.199.dist-info}/WHEEL +1 -1
  58. bumble/profiles/asha_service.py +0 -193
  59. {bumble-0.0.195.dist-info → bumble-0.0.199.dist-info}/LICENSE +0 -0
  60. {bumble-0.0.195.dist-info → bumble-0.0.199.dist-info}/entry_points.txt +0 -0
  61. {bumble-0.0.195.dist-info → bumble-0.0.199.dist-info}/top_level.txt +0 -0
@@ -1,61 +1,62 @@
1
1
  bumble/__init__.py,sha256=Q8jkz6rgl95IMAeInQVt_2GLoJl3DcEP2cxtrQ-ho5c,110
2
- bumble/_version.py,sha256=D6Pm_JfDbtXzRrUZBbi94mhpeVRVDGEGFimeorotXxw,415
2
+ bumble/_version.py,sha256=-5ruRKhgD06H9Dn3PntBTwUGHMNmAuViLLPxyfe0nAg,415
3
3
  bumble/a2dp.py,sha256=VEeAOCfT1ZqpwnEgel6DJ32vxR8jYX3IAaBfCqPdWO8,22675
4
- bumble/at.py,sha256=kdrcsx2C8Rg61EWESD2QHwpZntkXkRBJLrPn9auv9K8,2961
5
- bumble/att.py,sha256=TGzhhBKCQPA_P_eDDSNASJVfa3dCr-QzzrRB3GekrI0,32366
6
- bumble/avc.py,sha256=O6ujcmWHMgH821aCLidXN23QFPMAjJ2B50oCu0HxaO0,16188
7
- bumble/avctp.py,sha256=W_CgqSRV7Z8xOAz8Q4BZGuuZUHEEJjmioSVg1iDINtM,9881
8
- bumble/avdtp.py,sha256=RmQiDYeKNitR9jkSXcCzCXacrK_Kbiyt1klO3iylr8Q,77322
9
- bumble/avrcp.py,sha256=MKyJkyYmL-M1H_Pi4fr8HABXi-E-F9mBOQpbv_Ilysc,69327
4
+ bumble/at.py,sha256=Giu2VUSJKH-jIh10lOfumiqy-FyO99Ra6nJ7UiWQ0H8,3114
5
+ bumble/att.py,sha256=i-rs_xyTBUdGpyjoZCjb68f1IDiiS2kX9RylCeh6K0o,32757
6
+ bumble/avc.py,sha256=Ho-WweU9lU15vlTwIbrGBa18M5vUKYm5q8aToaLSh70,16311
7
+ bumble/avctp.py,sha256=yHAjJRjLGtR0Q-iWcLS7cJRz5Jr2YiRmZd6LZV4Xjt4,9935
8
+ bumble/avdtp.py,sha256=K_Ujbruw0cNfSXeMU3OvgWedrLjZ8A3i6f_hy1rtpRo,77470
9
+ bumble/avrcp.py,sha256=BhDjc8TxhOpPnuvGn5-dGB6JK1aqshg4x7tm_vI4LLU,69363
10
10
  bumble/bridge.py,sha256=T6es5oS1dy8QgkxQ8iOD-YcZ0SWOv8jaqC7TGxqodk4,3003
11
- bumble/codecs.py,sha256=Vc7FOo6d-6VCgDI0ibnLmX8vCZ4-jtX_-0vEUM-yOrI,15343
12
- bumble/colors.py,sha256=9H-qzGgMr-YoWdIFpcGPaiRvTvkCzz7FPIkpwqKyKug,3033
11
+ bumble/codecs.py,sha256=yels_alICohfM5DuvR2wMpYlebt7OrZHCtRXWyMyYYI,15581
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
- bumble/core.py,sha256=_32etZ2sW4M-gY-XHmHwTKLrU_iAnMBocNngIkqhygM,71749
15
+ bumble/core.py,sha256=T43ZszjsU_89B0UJwQ9GCzvKU7oj1_RBzsdGr9jX9xY,72440
16
16
  bumble/crypto.py,sha256=L6z3dn9-dgKYRtOM6O3F6n6Ju4PwTM3LAFJtCg_ie78,9382
17
- bumble/decoder.py,sha256=N9nMvuVhuwpnfw7EDVuNe9uYY6B6c3RY2dh8RhRPC1U,9608
18
- bumble/device.py,sha256=sp7BilrHxRq7aMBQHomPx9owbus9MxV8_a2lgrvkYRc,183289
17
+ bumble/decoder.py,sha256=0-VNWZT-u7lvK3qBpAuYT0M6Rz_bMgMi4CjfUXX_6RM,9728
18
+ bumble/device.py,sha256=4TcC6v_zwyTcZMAMZd7qb06oLVGtw84LtdlgIsilFbU,194632
19
19
  bumble/gap.py,sha256=dRU2_TWvqTDx80hxeSbXlWIeWvptWH4_XbItG5y948Q,2138
20
- bumble/gatt.py,sha256=W7h8hEyxM8fu3HbAKYJ2HStb8NM7T98UICVnf4G9HDo,38447
21
- bumble/gatt_client.py,sha256=pJ29537m9L_cY2nrtEqZdssOEpg4147fF7vhz0BweyY,43071
22
- bumble/gatt_server.py,sha256=uPYbn2-y0MLnyR8xxpOf18gPua_Q49pSlMR1zxEnU-Q,37118
23
- bumble/hci.py,sha256=Bdfs2frYhcnUxGG1jYGcvBr_RcHpY1aNE3guQYpwszo,274340
20
+ bumble/gatt.py,sha256=a07mQ3O0LFt5zgUzSUwa4Jak_FXOXSFX-njxnQNS_zY,39014
21
+ bumble/gatt_client.py,sha256=gIpgNQj5WNm9RirXXT4vuXQZ4WK82IFMOqnfqBtoYRU,42809
22
+ bumble/gatt_server.py,sha256=pafGMeAuGAAELnr_1pB_l3CcR5u4H4Y1-MRHjN53gdE,37449
23
+ bumble/hci.py,sha256=fx8BmNV29fiZWQPLLstihLWScb0_8zy5O-mX9IfngcI,285388
24
24
  bumble/helpers.py,sha256=m0w4UgFFNDEnXwHrDyfRlcBObdVed2fqXGL0lvR3c8s,12733
25
25
  bumble/hfp.py,sha256=OsBDREelxhLMi_UZO9Kxlqzbts08CcGxoiicUgrYlXg,75353
26
- bumble/hid.py,sha256=Dd4rsmkRxcxt1IjoozJdu9Qd-QWruKJfsiYqTT89NDk,20590
27
- bumble/host.py,sha256=H76N8V6mcn1h6zw2qu2blZOrT1Q7JNqeziA-SzNwC20,48224
26
+ bumble/hid.py,sha256=hJKm6qhNa0kQTGmp_VxNh3-ywgBDdJpPPFcvtFiRL0A,20335
27
+ bumble/host.py,sha256=s7ZzGbExvewZ7qoMF3cdjyvFKae8NqiFH-xtHhd_a2M,48814
28
28
  bumble/keys.py,sha256=WbIQ7Ob81mW75qmEPQ2rBLfnqBMA-ts2yowWXP9UaCY,12654
29
- bumble/l2cap.py,sha256=YjUoLVR8gYpPzF4JyLoEE8Jhuu72fbW-eXYhXnFphSc,81170
30
- bumble/link.py,sha256=QiiMSCZ0z0ko2oUEMYg6nbq-h5A_3DLN4pjqAx_E-SA,23980
29
+ bumble/l2cap.py,sha256=Bu6oTD3DzqLOKiarynT1cfQefNgR0gCJoKxnwQJl2_o,81398
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
- bumble/rfcomm.py,sha256=NHICkhwkQKwSFI_nE8RoFZGpq5PnZYdRph3GbyEYiYo,40683
34
- bumble/sdp.py,sha256=yA3gkyyFaLkt-nHff3Ge5BgFgqX9uVgr56fWJVA1py8,45289
35
- bumble/smp.py,sha256=PcQj8mDoM8fBc4gKECHoOs0A2ukUAaSZQGdgLj6YzB0,76277
36
- bumble/snoop.py,sha256=_QfF36eylBW6Snd-_KYOwKaGiM8i_Ed-B5XoFIPt3Dg,5631
33
+ bumble/rfcomm.py,sha256=dh5t5vlDEfw3yHgQfzegMYPnShP8Zo-3ScABUvmXNLI,40751
34
+ bumble/sdp.py,sha256=aajRQybcMWh_Kc4IuQahix6bXnHg61OXl1gSdrSysl4,45465
35
+ bumble/smp.py,sha256=FNLn-pt2n6CKNttQGJJDnfaeof2SVkxlapwySHWAVJY,77640
36
+ bumble/snoop.py,sha256=1mzwmp9LToUXbPnFsLrt8S4UHs0kqzbu7LDydwbmkZI,5715
37
37
  bumble/utils.py,sha256=e0i-4d28-9zP3gYcd1rdNd669rkPnRs5oJCERUEDfxo,15099
38
38
  bumble/apps/README.md,sha256=XTwjRAY-EJWDXpl1V8K3Mw8B7kIqzUIUizRjVBVhoIE,1769
39
39
  bumble/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- bumble/apps/auracast.py,sha256=ZhaTN4PsYBaX-7MrtmK_VXJqNy-spXBysaOpPa8emoY,14865
40
+ bumble/apps/auracast.py,sha256=hrG6dW79UkMXqcMLgYjziWEjcVibFUITvjPb4LX1lxM,24686
41
41
  bumble/apps/bench.py,sha256=nPACg5gQWxJ-6phze12FVCv1_WS2UjrWR7OUWj0o8PU,56350
42
42
  bumble/apps/ble_rpa_tool.py,sha256=ZQtsbfnLPd5qUAkEBPpNgJLRynBBc7q_9cDHKUW2SQ0,1701
43
- bumble/apps/console.py,sha256=rVR2jmP6Yd76B4zzGPYnpJFtgeYgq19CL6DMSe2-A1M,46093
43
+ bumble/apps/console.py,sha256=rwD9y3g8Mm_mAEvrcXjbtcv5d8mwF3yTbmE6Vet2BEk,45300
44
44
  bumble/apps/controller_info.py,sha256=m29omI2r8q01GccgN6Lb-HfSsBjYdGpLDHlgZ99ldTM,9249
45
45
  bumble/apps/controller_loopback.py,sha256=VJAFsUdFwm2KgOrRuLADymMpZl5qVO0RGkDSr-1XKtY,7214
46
46
  bumble/apps/controllers.py,sha256=R6XJ1XpyuXlyqSCmI7PromVIcoYTcYfpmO-TqTYXnUI,2326
47
- bumble/apps/gatt_dump.py,sha256=-dCvCgjuHAp0h1zxm-gmqB4lVlSdas1Kp4cpzzx4gGw,4245
47
+ bumble/apps/device_info.py,sha256=kQSO7F60cmUKw99LHfyly9s_ox2mD0dNGsgxCnKoFOQ,7999
48
+ bumble/apps/gatt_dump.py,sha256=wwA-NhRnbgUkbj-Ukym7NDG2j2n_36t_tn93dLDVdIg,4487
48
49
  bumble/apps/gg_bridge.py,sha256=JdW5QT6xN9c2XDDJoHDRo5W3N_RdVkCtTmlcOsJhlx8,14693
49
50
  bumble/apps/hci_bridge.py,sha256=KISv352tKnsQsoxjkDiCQbMFmhnPWdnug5wSFAAXxEs,4033
50
51
  bumble/apps/l2cap_bridge.py,sha256=524VgEmgCP4g7T0UdgmsePmNVhDFRJECeaZ_uzKsbco,13062
51
- bumble/apps/pair.py,sha256=COU2D7YAIn4lo5iuM0ClObA1zZqQCdrXOcnsiCm0YlQ,17529
52
+ bumble/apps/pair.py,sha256=NtDxLfdnlOY_ZEtVNGVXWjv6_x_hndok_ydhV6zkFtI,18503
52
53
  bumble/apps/pandora_server.py,sha256=5qaoLCpcZE2KsGO21-7t6Vg4dBjBWbnyOQXwrLhxkuE,1397
53
54
  bumble/apps/rfcomm_bridge.py,sha256=PSszh4Qh1IsIw8ETs0fevOCAXEdVtqlgnV-ruzqGrZI,17215
54
55
  bumble/apps/scan.py,sha256=b6hIppiJqDfR7VFW2wl3-lkPdFvHLqYZKY8VjjNnhls,8366
55
56
  bumble/apps/show.py,sha256=8w0-8jLtN6IM6_58pOHbEmE1Rmxm71O48ACrXixC2jk,6218
56
57
  bumble/apps/unbond.py,sha256=LDPWpmgKLMGYDdIFGTdGciFDcUliZ0OmseEbGfJ-MAM,3176
57
58
  bumble/apps/usb_probe.py,sha256=zJqrqKSGVYcOntXzgONdluZDE6jfj3IwPNuLqmDPDsU,10351
58
- bumble/apps/lea_unicast/app.py,sha256=LBJn5_wOPehHACnrw2N9JwIyYH-MhyadGl5A9SqhXSs,20625
59
+ bumble/apps/lea_unicast/app.py,sha256=7hK3s5I0vHneECo01UpVoP10LcEcMRIHjmO35lMhNwY,20659
59
60
  bumble/apps/lea_unicast/index.html,sha256=d1IHsYd8TGOnxNZKaHolf4Y-7VwT1kO9Z72vpGMdy3k,2354
60
61
  bumble/apps/lea_unicast/liblc3.wasm,sha256=nYMzG9fP8_71K9dQfVI9QPQPkFRPHoqZEEExs1y6Oac,158603
61
62
  bumble/apps/link_relay/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -70,44 +71,54 @@ bumble/apps/speaker/speaker.py,sha256=f7cOyVqD6HOiLPCgdcnwN7sakj2SScybVHVTBR6eFw
70
71
  bumble/drivers/__init__.py,sha256=lxqJTghh21rQFThRTurwLysZm385TUcn8ZdpHQSWD88,3196
71
72
  bumble/drivers/common.py,sha256=pS783hudolLZAzF8IUWp7g6TXyQsUCEzqCsd1VGeYfQ,1507
72
73
  bumble/drivers/intel.py,sha256=-YcJI4ZC_fhHHxWyE8b4eB8V7suOFH1n9uayckGE9Uw,3231
73
- bumble/drivers/rtk.py,sha256=MMxmUo85VkRhFuhbc9SJEZVL9dnRjmsU9k8djmbUGcA,21369
74
- bumble/pandora/__init__.py,sha256=5NBVmndeTulANawift0jPT9ISp562wyIHTZ-4uP34Mg,3283
74
+ bumble/drivers/rtk.py,sha256=nsfAqNzvxvAwbh6UYgxOCSNwgw7XouIBFA03FrLTs4M,22088
75
+ bumble/pandora/__init__.py,sha256=jaPtYCLfLeLUGj8-TmS3Gkv0l1_DBadYj8ZMAPLPAao,3463
75
76
  bumble/pandora/config.py,sha256=KD85n3oRbuvD65sRah2H0gpxEW4YbD7HbYbsxdcpDDA,2388
76
77
  bumble/pandora/device.py,sha256=LFqCWrgYkQWrFUSKArsAABXkge8sB2DhvaQoEsC4Jn0,5344
77
78
  bumble/pandora/host.py,sha256=LnEQ3DJAhmJVgHA7VyokvypQejsi2VcbauSFYn1a9Jk,39235
79
+ bumble/pandora/l2cap.py,sha256=OT-pPprVAQr7xwjYnNwDQujayG2zWUS5FPXVBGNCW3o,11725
78
80
  bumble/pandora/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
81
  bumble/pandora/security.py,sha256=YErueKNLsnmcRe6dKo724Ht-buOqmZl2Gauswcc8FW0,21946
80
82
  bumble/pandora/utils.py,sha256=Fq4glL0T5cJ2FODoDotmDNdYFOkTOR7DyyL8vkcxp20,3949
81
83
  bumble/profiles/__init__.py,sha256=yBGC8Ti5LvZuoh1F42XtfrBilb39T77_yuxESZeX2yI,581
82
- bumble/profiles/asha_service.py,sha256=J4i5jkJciZWMtTWJ1zGJkEx65DlAEIADqjCRYf_CWNs,7220
83
- bumble/profiles/bap.py,sha256=4NQ-X_d7mUyD5VBQfmGwnmD6gyUTj_PL3H6bYpaP_wU,50486
84
+ bumble/profiles/aics.py,sha256=U0K03XqOKtqahXtq7U47WxftsAD7tkiDeUqxfaF4pwk,18540
85
+ bumble/profiles/ascs.py,sha256=Y2_fd_5LOb9hon60LcQl3R-FoAIsOd_J37RZpveh-7c,25471
86
+ bumble/profiles/asha.py,sha256=QXUp7ImuMD48L0mpuNxPcIkv8VvoENynCuF2PEVqzFM,10373
87
+ bumble/profiles/bap.py,sha256=wLnrbXso203rgw0WNa91qIdMdjuIoGc9VqOHc9Ey_b4,19421
88
+ bumble/profiles/bass.py,sha256=Wiqum0Wsr5PpVzTAPDcyKLTfJoKXJUYOzqB320aSiUs,14950
84
89
  bumble/profiles/battery_service.py,sha256=w-uF4jLoDozJOoykimb2RkrKjVyCke6ts2-h-F1PYyc,2292
85
90
  bumble/profiles/cap.py,sha256=6gH7oOnUKjOggMPuB7rtbwj0AneoNmnWzQ_iR3io8e0,1945
86
- bumble/profiles/csip.py,sha256=wzSpNRCOMWtKw2Yd9OTAzPoFDoQWG-KYwWdA6sUkwiI,10102
91
+ bumble/profiles/csip.py,sha256=qpI9W0_FWIpsuJrHhxfbKaa-TD21epxEa3EuCm8gh6c,10156
87
92
  bumble/profiles/device_information_service.py,sha256=RfqnXywcwcSTiFalxd1LVTTdeWLxHGsMvlvr9fI0GJI,6193
88
- bumble/profiles/heart_rate_service.py,sha256=7V2LGcWLp6RurjWxsVgMWr3wPDt5aS9qjNxTbHcOK6o,8575
89
- bumble/profiles/le_audio.py,sha256=BhdGwBdFRdBo35Z8ijRgch77Y1AfzNNM6iUU0LEmTy8,1651
93
+ bumble/profiles/gap.py,sha256=jUjfy6MPL7k6wgNn3ny3PVgSX6-SLmjUepFYHjGc3IU,3870
94
+ bumble/profiles/hap.py,sha256=9K6FR0FAjpRdDHoU5sgddndeVH2r1fQyWKRXM0dyoa0,25265
95
+ bumble/profiles/heart_rate_service.py,sha256=_MG1ApmF1B7b4xRzELuahtRWzLm49i9O4m7I6ZFU4mw,8644
96
+ bumble/profiles/le_audio.py,sha256=1x6OpIc0JMa32YVcfM8lq6jnXHlriHUcOkAs0EttJJk,3093
97
+ bumble/profiles/mcp.py,sha256=vIN1r_if4LmOcGCgZuDYTYLMQzU6-1pKUFx1Z3iSAeY,17415
98
+ bumble/profiles/pacs.py,sha256=bhlU5M6E9e1YKf-qJnJL3GwTqOPuSvYDpY_UYq0Nnd8,8730
90
99
  bumble/profiles/pbp.py,sha256=51aoQcZMXzTzeatHd0zNVN7kYcv4atzr2OWpzxlSVP8,1630
91
100
  bumble/profiles/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
- bumble/profiles/vcp.py,sha256=wkbTf2NRCbBtvpXplpNJq4dzXp6JGeaEHeeC1kHqW7s,7897
101
+ bumble/profiles/tmap.py,sha256=hpz5VYEdEOty4D9ApCRDero9Tf3L9arSZWnLCNkZoHI,3005
102
+ bumble/profiles/vcp.py,sha256=Lx1Odg7PQO9nXkpxRpK04MRuy975uIK8kSqcwrk4iSE,8035
93
103
  bumble/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
104
  bumble/tools/generate_company_id_list.py,sha256=ysbPb3zmxKFBiSQ_MBG2r15-sqR5P_GWT6i0YUTTXOM,1736
95
105
  bumble/tools/rtk_fw_download.py,sha256=KEPG-rDrdPGKBzZ78P4s3udLRYT3p7vesGhXvJTWTic,5453
96
106
  bumble/tools/rtk_util.py,sha256=TwZhupHQrQYsYHLdRGyzXKd24pwCk8kkzqK1Rj2guco,5087
97
- bumble/transport/__init__.py,sha256=W_IjqBehWCvjyTghgRYvbbLqDlh2xh7ZRDRvun5iYB0,6830
98
- bumble/transport/android_emulator.py,sha256=eH8H1aB7MvQ8lpdwVG6SGKg5uwCRb_aPJk8pPwoTXSY,4321
99
- bumble/transport/android_netsim.py,sha256=SVh-IUZ2bhcIESZFGzOsofybsi4H0qoBRwBieeqUINE,16215
100
- bumble/transport/common.py,sha256=LHZNCrSNMd3AwaOT31WZXRdu9ydidNO3pnmonWBWhLA,15818
107
+ bumble/transport/__init__.py,sha256=Z01fvuKpqAbhJd0wYcGhW09W2tycM71ck80XoZ8a87Q,7012
108
+ bumble/transport/android_emulator.py,sha256=6HR2cEqdU0XbOldwxCtQuXtvwOUYhRfHkPz0TRt3mbo,4382
109
+ bumble/transport/android_netsim.py,sha256=39RYKZJX806nbS6I2Yu31Z9h7-FJgYGIshXUoT0GjS8,16315
110
+ bumble/transport/common.py,sha256=bJWYH-vRJJl0nWwlAjGTHrRQFdZayKkH7YoGor5abH8,16659
101
111
  bumble/transport/file.py,sha256=eVM2V6Nk2nDAFdE7Rt01ZI3JdTovsH9OEU1gKYPJjpE,2010
102
112
  bumble/transport/hci_socket.py,sha256=EdgWi3-O5yvYcH4R4BkPtG79pnUo7GQtXWawuUHDoDQ,6331
103
113
  bumble/transport/pty.py,sha256=grTl-yvjMWHflNwuME4ccVqDbk6NIEgQMgH6Y9lf1fU,2732
104
114
  bumble/transport/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
- bumble/transport/pyusb.py,sha256=Wa1QlfjwN_9bdisoaBVYXN0DfHQgwi4L7nWbUisZmVE,15504
115
+ bumble/transport/pyusb.py,sha256=IGcFJsYOlHaQRXcFCmGlwLZjg8D2BQq9IQrAs6TA2UA,16109
106
116
  bumble/transport/serial.py,sha256=loQxkeG7uE09enXWg2uGbxi6CeG70wn3kzPbEwULKw4,2446
107
117
  bumble/transport/tcp_client.py,sha256=deyUJYpj04QE00Mw_PTU5PHPA6mr1Nui3f5-QCy2zOw,1854
108
118
  bumble/transport/tcp_server.py,sha256=tvu7FuPeqiXfoj2HQU8wu4AiwKjDDDCKlKjgtqWc5hg,3779
109
119
  bumble/transport/udp.py,sha256=di8I6HHACgBx3un-dzAahz9lTIUrh4LdeuYpeoifQEM,2239
110
- bumble/transport/usb.py,sha256=dFNN-kGI3pMTXeT5Amwu2H6e4J48WAJotG_D18W3RBM,21399
120
+ bumble/transport/unix.py,sha256=CS6Ksrkat5uUXOpo7RlxAYJsM3lMS4T3OrdCqzIHTg8,1981
121
+ bumble/transport/usb.py,sha256=FO2Trx9rQ_pdX6Aal7eDxOpubjBEeUmoH3jcwVwKSYA,22022
111
122
  bumble/transport/vhci.py,sha256=iI2WpighnvIP5zeyJUFSbjEdmCo24CWMdICamIcyJck,2250
112
123
  bumble/transport/ws_client.py,sha256=9gqm5jlVT_H6LfwsQwPpky07CINhgOK96ef53SMAxms,1757
113
124
  bumble/transport/ws_server.py,sha256=goe4xx7OnZiJy1a00Bg0CXM8uJhsGXbsijMYq2n62bI,3328
@@ -144,9 +155,9 @@ bumble/vendor/android/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
144
155
  bumble/vendor/android/hci.py,sha256=GZrkhaWmcMt1JpnRhv0NoySGkf2H4lNUV2f_omRZW0I,10741
145
156
  bumble/vendor/zephyr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
146
157
  bumble/vendor/zephyr/hci.py,sha256=d83bC0TvT947eN4roFjLkQefWtHOoNsr4xib2ctSkvA,3195
147
- bumble-0.0.195.dist-info/LICENSE,sha256=FvaYh4NRWIGgS_OwoBs5gFgkCmAghZ-DYnIGBZPuw-s,12142
148
- bumble-0.0.195.dist-info/METADATA,sha256=wTbIqANw5lgZcZyizDaAldO9zZ-XXKf33PX2LstfwVQ,5753
149
- bumble-0.0.195.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
150
- bumble-0.0.195.dist-info/entry_points.txt,sha256=AOFf_gnWbZ7jk5fzspxXHCQUay1ik71pK3HYO7sZQsk,937
151
- bumble-0.0.195.dist-info/top_level.txt,sha256=tV6JJKaHPYMFiJYiBYFW24PCcfLxTJZdlu6BmH3Cb00,7
152
- bumble-0.0.195.dist-info/RECORD,,
158
+ bumble-0.0.199.dist-info/LICENSE,sha256=FvaYh4NRWIGgS_OwoBs5gFgkCmAghZ-DYnIGBZPuw-s,12142
159
+ bumble-0.0.199.dist-info/METADATA,sha256=Qfi-AevfEFjLoT0FfXuAjznE0U8MONF87tArGkqVIK0,5672
160
+ bumble-0.0.199.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
161
+ bumble-0.0.199.dist-info/entry_points.txt,sha256=AOFf_gnWbZ7jk5fzspxXHCQUay1ik71pK3HYO7sZQsk,937
162
+ bumble-0.0.199.dist-info/top_level.txt,sha256=tV6JJKaHPYMFiJYiBYFW24PCcfLxTJZdlu6BmH3Cb00,7
163
+ bumble-0.0.199.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (75.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,193 +0,0 @@
1
- # Copyright 2021-2022 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
- # -----------------------------------------------------------------------------
17
- # Imports
18
- # -----------------------------------------------------------------------------
19
- import struct
20
- import logging
21
- from typing import List, Optional
22
-
23
- from bumble import l2cap
24
- from ..core import AdvertisingData
25
- from ..device import Device, Connection
26
- from ..gatt import (
27
- GATT_ASHA_SERVICE,
28
- GATT_ASHA_READ_ONLY_PROPERTIES_CHARACTERISTIC,
29
- GATT_ASHA_AUDIO_CONTROL_POINT_CHARACTERISTIC,
30
- GATT_ASHA_AUDIO_STATUS_CHARACTERISTIC,
31
- GATT_ASHA_VOLUME_CHARACTERISTIC,
32
- GATT_ASHA_LE_PSM_OUT_CHARACTERISTIC,
33
- TemplateService,
34
- Characteristic,
35
- CharacteristicValue,
36
- )
37
- from ..utils import AsyncRunner
38
-
39
- # -----------------------------------------------------------------------------
40
- # Logging
41
- # -----------------------------------------------------------------------------
42
- logger = logging.getLogger(__name__)
43
-
44
-
45
- # -----------------------------------------------------------------------------
46
- class AshaService(TemplateService):
47
- UUID = GATT_ASHA_SERVICE
48
- OPCODE_START = 1
49
- OPCODE_STOP = 2
50
- OPCODE_STATUS = 3
51
- PROTOCOL_VERSION = 0x01
52
- RESERVED_FOR_FUTURE_USE = [00, 00]
53
- FEATURE_MAP = [0x01] # [LE CoC audio output streaming supported]
54
- SUPPORTED_CODEC_ID = [0x02, 0x01] # Codec IDs [G.722 at 16 kHz]
55
- RENDER_DELAY = [00, 00]
56
-
57
- def __init__(self, capability: int, hisyncid: List[int], device: Device, psm=0):
58
- self.hisyncid = hisyncid
59
- self.capability = capability # Device Capabilities [Left, Monaural]
60
- self.device = device
61
- self.audio_out_data = b''
62
- self.psm = psm # a non-zero psm is mainly for testing purpose
63
-
64
- # Handler for volume control
65
- def on_volume_write(connection, value):
66
- logger.info(f'--- VOLUME Write:{value[0]}')
67
- self.emit('volume', connection, value[0])
68
-
69
- # Handler for audio control commands
70
- def on_audio_control_point_write(connection: Optional[Connection], value):
71
- logger.info(f'--- AUDIO CONTROL POINT Write:{value.hex()}')
72
- opcode = value[0]
73
- if opcode == AshaService.OPCODE_START:
74
- # Start
75
- audio_type = ('Unknown', 'Ringtone', 'Phone Call', 'Media')[value[2]]
76
- logger.info(
77
- f'### START: codec={value[1]}, '
78
- f'audio_type={audio_type}, '
79
- f'volume={value[3]}, '
80
- f'otherstate={value[4]}'
81
- )
82
- self.emit(
83
- 'start',
84
- connection,
85
- {
86
- 'codec': value[1],
87
- 'audiotype': value[2],
88
- 'volume': value[3],
89
- 'otherstate': value[4],
90
- },
91
- )
92
- elif opcode == AshaService.OPCODE_STOP:
93
- logger.info('### STOP')
94
- self.emit('stop', connection)
95
- elif opcode == AshaService.OPCODE_STATUS:
96
- logger.info(f'### STATUS: connected={value[1]}')
97
-
98
- # OPCODE_STATUS does not need audio status point update
99
- if opcode != AshaService.OPCODE_STATUS:
100
- AsyncRunner.spawn(
101
- device.notify_subscribers(
102
- self.audio_status_characteristic, force=True
103
- )
104
- )
105
-
106
- self.read_only_properties_characteristic = Characteristic(
107
- GATT_ASHA_READ_ONLY_PROPERTIES_CHARACTERISTIC,
108
- Characteristic.Properties.READ,
109
- Characteristic.READABLE,
110
- bytes(
111
- [
112
- AshaService.PROTOCOL_VERSION, # Version
113
- self.capability,
114
- ]
115
- )
116
- + bytes(self.hisyncid)
117
- + bytes(AshaService.FEATURE_MAP)
118
- + bytes(AshaService.RENDER_DELAY)
119
- + bytes(AshaService.RESERVED_FOR_FUTURE_USE)
120
- + bytes(AshaService.SUPPORTED_CODEC_ID),
121
- )
122
-
123
- self.audio_control_point_characteristic = Characteristic(
124
- GATT_ASHA_AUDIO_CONTROL_POINT_CHARACTERISTIC,
125
- Characteristic.Properties.WRITE
126
- | Characteristic.Properties.WRITE_WITHOUT_RESPONSE,
127
- Characteristic.WRITEABLE,
128
- CharacteristicValue(write=on_audio_control_point_write),
129
- )
130
- self.audio_status_characteristic = Characteristic(
131
- GATT_ASHA_AUDIO_STATUS_CHARACTERISTIC,
132
- Characteristic.Properties.READ | Characteristic.Properties.NOTIFY,
133
- Characteristic.READABLE,
134
- bytes([0]),
135
- )
136
- self.volume_characteristic = Characteristic(
137
- GATT_ASHA_VOLUME_CHARACTERISTIC,
138
- Characteristic.Properties.WRITE_WITHOUT_RESPONSE,
139
- Characteristic.WRITEABLE,
140
- CharacteristicValue(write=on_volume_write),
141
- )
142
-
143
- # Register an L2CAP CoC server
144
- def on_coc(channel):
145
- def on_data(data):
146
- logging.debug(f'<<< data received:{data}')
147
-
148
- self.emit('data', channel.connection, data)
149
- self.audio_out_data += data
150
-
151
- channel.sink = on_data
152
-
153
- # let the server find a free PSM
154
- self.psm = device.create_l2cap_server(
155
- spec=l2cap.LeCreditBasedChannelSpec(psm=self.psm, max_credits=8),
156
- handler=on_coc,
157
- ).psm
158
- self.le_psm_out_characteristic = Characteristic(
159
- GATT_ASHA_LE_PSM_OUT_CHARACTERISTIC,
160
- Characteristic.Properties.READ,
161
- Characteristic.READABLE,
162
- struct.pack('<H', self.psm),
163
- )
164
-
165
- characteristics = [
166
- self.read_only_properties_characteristic,
167
- self.audio_control_point_characteristic,
168
- self.audio_status_characteristic,
169
- self.volume_characteristic,
170
- self.le_psm_out_characteristic,
171
- ]
172
-
173
- super().__init__(characteristics)
174
-
175
- def get_advertising_data(self):
176
- # Advertisement only uses 4 least significant bytes of the HiSyncId.
177
- return bytes(
178
- AdvertisingData(
179
- [
180
- (
181
- AdvertisingData.SERVICE_DATA_16_BIT_UUID,
182
- bytes(GATT_ASHA_SERVICE)
183
- + bytes(
184
- [
185
- AshaService.PROTOCOL_VERSION,
186
- self.capability,
187
- ]
188
- )
189
- + bytes(self.hisyncid[:4]),
190
- ),
191
- ]
192
- )
193
- )