bumble 0.0.208__tar.gz → 0.0.210__tar.gz

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 (625) hide show
  1. {bumble-0.0.208 → bumble-0.0.210}/PKG-INFO +3 -2
  2. {bumble-0.0.208 → bumble-0.0.210}/apps/auracast.py +37 -29
  3. {bumble-0.0.208 → bumble-0.0.210}/apps/bench.py +9 -7
  4. {bumble-0.0.208 → bumble-0.0.210}/apps/console.py +1 -1
  5. {bumble-0.0.208 → bumble-0.0.210}/apps/lea_unicast/app.py +6 -2
  6. {bumble-0.0.208 → bumble-0.0.210}/apps/pair.py +4 -3
  7. {bumble-0.0.208 → bumble-0.0.210}/apps/player/player.py +3 -3
  8. {bumble-0.0.208 → bumble-0.0.210}/apps/rfcomm_bridge.py +1 -1
  9. {bumble-0.0.208 → bumble-0.0.210}/apps/speaker/speaker.py +4 -2
  10. {bumble-0.0.208 → bumble-0.0.210}/bumble/_version.py +2 -2
  11. {bumble-0.0.208 → bumble-0.0.210}/bumble/a2dp.py +7 -7
  12. {bumble-0.0.208 → bumble-0.0.210}/bumble/att.py +12 -5
  13. {bumble-0.0.208 → bumble-0.0.210}/bumble/avc.py +5 -5
  14. {bumble-0.0.208 → bumble-0.0.210}/bumble/avdtp.py +9 -10
  15. {bumble-0.0.208 → bumble-0.0.210}/bumble/avrcp.py +18 -19
  16. {bumble-0.0.208 → bumble-0.0.210}/bumble/bridge.py +2 -2
  17. {bumble-0.0.208 → bumble-0.0.210}/bumble/controller.py +13 -15
  18. {bumble-0.0.208 → bumble-0.0.210}/bumble/core.py +61 -60
  19. {bumble-0.0.208 → bumble-0.0.210}/bumble/device.py +193 -162
  20. {bumble-0.0.208 → bumble-0.0.210}/bumble/drivers/__init__.py +2 -2
  21. {bumble-0.0.208 → bumble-0.0.210}/bumble/gap.py +1 -1
  22. {bumble-0.0.208 → bumble-0.0.210}/bumble/gatt.py +16 -0
  23. {bumble-0.0.208 → bumble-0.0.210}/bumble/gatt_adapters.py +3 -3
  24. {bumble-0.0.208 → bumble-0.0.210}/bumble/gatt_client.py +27 -21
  25. {bumble-0.0.208 → bumble-0.0.210}/bumble/gatt_server.py +9 -10
  26. {bumble-0.0.208 → bumble-0.0.210}/bumble/hci.py +109 -90
  27. {bumble-0.0.208 → bumble-0.0.210}/bumble/hfp.py +3 -3
  28. {bumble-0.0.208 → bumble-0.0.210}/bumble/hid.py +4 -3
  29. {bumble-0.0.208 → bumble-0.0.210}/bumble/host.py +30 -19
  30. {bumble-0.0.208 → bumble-0.0.210}/bumble/keys.py +3 -3
  31. {bumble-0.0.208 → bumble-0.0.210}/bumble/l2cap.py +21 -19
  32. {bumble-0.0.208 → bumble-0.0.210}/bumble/link.py +5 -6
  33. {bumble-0.0.208 → bumble-0.0.210}/bumble/pairing.py +3 -3
  34. {bumble-0.0.208 → bumble-0.0.210}/bumble/pandora/__init__.py +5 -5
  35. {bumble-0.0.208 → bumble-0.0.210}/bumble/pandora/host.py +30 -23
  36. {bumble-0.0.208 → bumble-0.0.210}/bumble/pandora/l2cap.py +2 -2
  37. {bumble-0.0.208 → bumble-0.0.210}/bumble/pandora/security.py +17 -19
  38. {bumble-0.0.208 → bumble-0.0.210}/bumble/pandora/utils.py +2 -2
  39. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/aics.py +6 -6
  40. bumble-0.0.210/bumble/profiles/ancs.py +513 -0
  41. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/ascs.py +17 -10
  42. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/asha.py +5 -5
  43. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/bass.py +1 -1
  44. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/csip.py +10 -10
  45. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/gatt_service.py +12 -12
  46. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/hap.py +16 -16
  47. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/mcp.py +26 -24
  48. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/pacs.py +6 -6
  49. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/pbp.py +1 -1
  50. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/vcs.py +6 -4
  51. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/vocs.py +3 -3
  52. {bumble-0.0.208 → bumble-0.0.210}/bumble/rfcomm.py +8 -8
  53. {bumble-0.0.208 → bumble-0.0.210}/bumble/sdp.py +1 -1
  54. {bumble-0.0.208 → bumble-0.0.210}/bumble/smp.py +39 -33
  55. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/__init__.py +24 -19
  56. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/android_emulator.py +8 -4
  57. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/android_netsim.py +8 -5
  58. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/common.py +5 -1
  59. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/file.py +1 -1
  60. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/hci_socket.py +1 -1
  61. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/pty.py +1 -1
  62. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/pyusb.py +3 -3
  63. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/serial.py +1 -1
  64. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/tcp_client.py +1 -1
  65. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/tcp_server.py +1 -1
  66. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/udp.py +1 -1
  67. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/unix.py +1 -1
  68. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/usb.py +1 -3
  69. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/vhci.py +2 -2
  70. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/ws_client.py +6 -1
  71. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/ws_server.py +1 -1
  72. {bumble-0.0.208 → bumble-0.0.210}/bumble/utils.py +89 -76
  73. {bumble-0.0.208 → bumble-0.0.210}/bumble.egg-info/PKG-INFO +3 -2
  74. {bumble-0.0.208 → bumble-0.0.210}/bumble.egg-info/SOURCES.txt +3 -0
  75. bumble-0.0.210/docs/mkdocs/src/apps_and_tools/auracast.md +202 -0
  76. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/web/scanner/scanner.py +2 -2
  77. {bumble-0.0.208 → bumble-0.0.210/docs/mkdocs/src/hive}/web/speaker/speaker.py +4 -2
  78. {bumble-0.0.208 → bumble-0.0.210}/examples/run_a2dp_info.py +4 -2
  79. {bumble-0.0.208 → bumble-0.0.210}/examples/run_a2dp_sink.py +2 -2
  80. {bumble-0.0.208 → bumble-0.0.210}/examples/run_a2dp_source.py +2 -2
  81. bumble-0.0.210/examples/run_ancs_client.py +215 -0
  82. {bumble-0.0.208 → bumble-0.0.210}/examples/run_avrcp.py +2 -2
  83. {bumble-0.0.208 → bumble-0.0.210}/examples/run_channel_sounding.py +1 -1
  84. {bumble-0.0.208 → bumble-0.0.210}/examples/run_cig_setup.py +5 -7
  85. {bumble-0.0.208 → bumble-0.0.210}/examples/run_classic_connect.py +2 -2
  86. {bumble-0.0.208 → bumble-0.0.210}/examples/run_esco_connection.py +4 -3
  87. {bumble-0.0.208 → bumble-0.0.210}/examples/run_hfp_gateway.py +2 -4
  88. {bumble-0.0.208 → bumble-0.0.210}/examples/run_hfp_handsfree.py +3 -1
  89. {bumble-0.0.208 → bumble-0.0.210}/examples/run_hid_device.py +2 -2
  90. {bumble-0.0.208 → bumble-0.0.210}/examples/run_hid_host.py +7 -5
  91. {bumble-0.0.208 → bumble-0.0.210}/examples/run_mcp_client.py +2 -1
  92. {bumble-0.0.208 → bumble-0.0.210}/examples/run_rfcomm_client.py +4 -2
  93. {bumble-0.0.208 → bumble-0.0.210}/tests/a2dp_test.py +3 -3
  94. {bumble-0.0.208 → bumble-0.0.210}/tests/avrcp_test.py +1 -1
  95. {bumble-0.0.208 → bumble-0.0.210}/tests/device_test.py +14 -14
  96. {bumble-0.0.208 → bumble-0.0.210}/tests/hfp_test.py +1 -1
  97. {bumble-0.0.208 → bumble-0.0.210}/tests/self_test.py +5 -4
  98. {bumble-0.0.208 → bumble-0.0.210}/web/scanner/scanner.py +2 -2
  99. {bumble-0.0.208/docs/mkdocs/src/hive → bumble-0.0.210}/web/speaker/speaker.py +4 -2
  100. {bumble-0.0.208 → bumble-0.0.210}/.devcontainer/devcontainer.json +0 -0
  101. {bumble-0.0.208 → bumble-0.0.210}/.git-blame-ignore-revs +0 -0
  102. {bumble-0.0.208 → bumble-0.0.210}/.github/workflows/code-check.yml +0 -0
  103. {bumble-0.0.208 → bumble-0.0.210}/.github/workflows/codeql-analysis.yml +0 -0
  104. {bumble-0.0.208 → bumble-0.0.210}/.github/workflows/python-avatar.yml +0 -0
  105. {bumble-0.0.208 → bumble-0.0.210}/.github/workflows/python-build-test.yml +0 -0
  106. {bumble-0.0.208 → bumble-0.0.210}/.github/workflows/python-publish.yml +0 -0
  107. {bumble-0.0.208 → bumble-0.0.210}/.gitignore +0 -0
  108. {bumble-0.0.208 → bumble-0.0.210}/.vscode/settings.json +0 -0
  109. {bumble-0.0.208 → bumble-0.0.210}/CONTRIBUTING.md +0 -0
  110. {bumble-0.0.208 → bumble-0.0.210}/LICENSE +0 -0
  111. {bumble-0.0.208 → bumble-0.0.210}/README.md +0 -0
  112. {bumble-0.0.208 → bumble-0.0.210}/apps/README.md +0 -0
  113. {bumble-0.0.208 → bumble-0.0.210}/apps/__init__.py +0 -0
  114. {bumble-0.0.208 → bumble-0.0.210}/apps/ble_rpa_tool.py +0 -0
  115. {bumble-0.0.208 → bumble-0.0.210}/apps/controller_info.py +0 -0
  116. {bumble-0.0.208 → bumble-0.0.210}/apps/controller_loopback.py +0 -0
  117. {bumble-0.0.208 → bumble-0.0.210}/apps/controllers.py +0 -0
  118. {bumble-0.0.208 → bumble-0.0.210}/apps/device_info.py +0 -0
  119. {bumble-0.0.208 → bumble-0.0.210}/apps/gatt_dump.py +0 -0
  120. {bumble-0.0.208 → bumble-0.0.210}/apps/gg_bridge.py +0 -0
  121. {bumble-0.0.208 → bumble-0.0.210}/apps/hci_bridge.py +0 -0
  122. {bumble-0.0.208 → bumble-0.0.210}/apps/l2cap_bridge.py +0 -0
  123. {bumble-0.0.208 → bumble-0.0.210}/apps/lea_unicast/index.html +0 -0
  124. {bumble-0.0.208 → bumble-0.0.210}/apps/link_relay/__init__.py +0 -0
  125. {bumble-0.0.208 → bumble-0.0.210}/apps/link_relay/link_relay.py +0 -0
  126. {bumble-0.0.208 → bumble-0.0.210}/apps/link_relay/logging.yml +0 -0
  127. {bumble-0.0.208 → bumble-0.0.210}/apps/pandora_server.py +0 -0
  128. {bumble-0.0.208 → bumble-0.0.210}/apps/scan.py +0 -0
  129. {bumble-0.0.208 → bumble-0.0.210}/apps/show.py +0 -0
  130. {bumble-0.0.208 → bumble-0.0.210}/apps/speaker/__init__.py +0 -0
  131. {bumble-0.0.208 → bumble-0.0.210}/apps/speaker/logo.svg +0 -0
  132. {bumble-0.0.208 → bumble-0.0.210}/apps/speaker/speaker.css +0 -0
  133. {bumble-0.0.208 → bumble-0.0.210}/apps/speaker/speaker.html +0 -0
  134. {bumble-0.0.208 → bumble-0.0.210}/apps/speaker/speaker.js +0 -0
  135. {bumble-0.0.208 → bumble-0.0.210}/apps/unbond.py +0 -0
  136. {bumble-0.0.208 → bumble-0.0.210}/apps/usb_probe.py +0 -0
  137. {bumble-0.0.208 → bumble-0.0.210}/bumble/__init__.py +0 -0
  138. {bumble-0.0.208 → bumble-0.0.210}/bumble/at.py +0 -0
  139. {bumble-0.0.208 → bumble-0.0.210}/bumble/audio/__init__.py +0 -0
  140. {bumble-0.0.208 → bumble-0.0.210}/bumble/audio/io.py +0 -0
  141. {bumble-0.0.208 → bumble-0.0.210}/bumble/avctp.py +0 -0
  142. {bumble-0.0.208 → bumble-0.0.210}/bumble/codecs.py +0 -0
  143. {bumble-0.0.208 → bumble-0.0.210}/bumble/colors.py +0 -0
  144. {bumble-0.0.208 → bumble-0.0.210}/bumble/company_ids.py +0 -0
  145. {bumble-0.0.208 → bumble-0.0.210}/bumble/crypto.py +0 -0
  146. {bumble-0.0.208 → bumble-0.0.210}/bumble/decoder.py +0 -0
  147. {bumble-0.0.208 → bumble-0.0.210}/bumble/drivers/common.py +0 -0
  148. {bumble-0.0.208 → bumble-0.0.210}/bumble/drivers/intel.py +0 -0
  149. {bumble-0.0.208 → bumble-0.0.210}/bumble/drivers/rtk.py +0 -0
  150. {bumble-0.0.208 → bumble-0.0.210}/bumble/helpers.py +0 -0
  151. {bumble-0.0.208 → bumble-0.0.210}/bumble/pandora/config.py +0 -0
  152. {bumble-0.0.208 → bumble-0.0.210}/bumble/pandora/device.py +0 -0
  153. {bumble-0.0.208 → bumble-0.0.210}/bumble/pandora/py.typed +0 -0
  154. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/__init__.py +0 -0
  155. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/bap.py +0 -0
  156. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/battery_service.py +0 -0
  157. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/cap.py +0 -0
  158. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/device_information_service.py +0 -0
  159. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/gap.py +0 -0
  160. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/gmap.py +0 -0
  161. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/heart_rate_service.py +0 -0
  162. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/le_audio.py +0 -0
  163. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/py.typed +0 -0
  164. {bumble-0.0.208 → bumble-0.0.210}/bumble/profiles/tmap.py +0 -0
  165. {bumble-0.0.208 → bumble-0.0.210}/bumble/py.typed +0 -0
  166. {bumble-0.0.208 → bumble-0.0.210}/bumble/rtp.py +0 -0
  167. {bumble-0.0.208 → bumble-0.0.210}/bumble/snoop.py +0 -0
  168. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/__init__.py +0 -0
  169. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/emulated_bluetooth_device_pb2.py +0 -0
  170. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/emulated_bluetooth_device_pb2.pyi +0 -0
  171. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/emulated_bluetooth_device_pb2_grpc.py +0 -0
  172. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/emulated_bluetooth_packets_pb2.py +0 -0
  173. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/emulated_bluetooth_packets_pb2.pyi +0 -0
  174. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/emulated_bluetooth_packets_pb2_grpc.py +0 -0
  175. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/emulated_bluetooth_pb2.py +0 -0
  176. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/emulated_bluetooth_pb2.pyi +0 -0
  177. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/emulated_bluetooth_pb2_grpc.py +0 -0
  178. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/emulated_bluetooth_vhci_pb2.py +0 -0
  179. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/emulated_bluetooth_vhci_pb2.pyi +0 -0
  180. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/emulated_bluetooth_vhci_pb2_grpc.py +0 -0
  181. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/grpc_endpoint_description_pb2.py +0 -0
  182. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/grpc_endpoint_description_pb2.pyi +0 -0
  183. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/grpc_endpoint_description_pb2_grpc.py +0 -0
  184. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/__init__.py +0 -0
  185. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/common_pb2.py +0 -0
  186. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/common_pb2.pyi +0 -0
  187. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/common_pb2_grpc.py +0 -0
  188. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/hci_packet_pb2.py +0 -0
  189. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/hci_packet_pb2.pyi +0 -0
  190. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/hci_packet_pb2_grpc.py +0 -0
  191. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/model_pb2.py +0 -0
  192. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/model_pb2.pyi +0 -0
  193. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/model_pb2_grpc.py +0 -0
  194. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/packet_streamer_pb2.py +0 -0
  195. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/packet_streamer_pb2.pyi +0 -0
  196. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/packet_streamer_pb2_grpc.py +0 -0
  197. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/startup_pb2.py +0 -0
  198. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/startup_pb2.pyi +0 -0
  199. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/netsim/startup_pb2_grpc.py +0 -0
  200. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/rootcanal/__init__.py +0 -0
  201. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/rootcanal/configuration_pb2.py +0 -0
  202. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/rootcanal/configuration_pb2.pyi +0 -0
  203. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/grpc_protobuf/rootcanal/configuration_pb2_grpc.py +0 -0
  204. {bumble-0.0.208 → bumble-0.0.210}/bumble/transport/py.typed +0 -0
  205. {bumble-0.0.208 → bumble-0.0.210}/bumble/vendor/__init__.py +0 -0
  206. {bumble-0.0.208 → bumble-0.0.210}/bumble/vendor/android/__init__.py +0 -0
  207. {bumble-0.0.208 → bumble-0.0.210}/bumble/vendor/android/hci.py +0 -0
  208. {bumble-0.0.208 → bumble-0.0.210}/bumble/vendor/zephyr/__init__.py +0 -0
  209. {bumble-0.0.208 → bumble-0.0.210}/bumble/vendor/zephyr/hci.py +0 -0
  210. {bumble-0.0.208 → bumble-0.0.210}/bumble.egg-info/dependency_links.txt +0 -0
  211. {bumble-0.0.208 → bumble-0.0.210}/bumble.egg-info/entry_points.txt +0 -0
  212. {bumble-0.0.208 → bumble-0.0.210}/bumble.egg-info/requires.txt +0 -0
  213. {bumble-0.0.208 → bumble-0.0.210}/bumble.egg-info/top_level.txt +0 -0
  214. {bumble-0.0.208 → bumble-0.0.210}/docs/README.md +0 -0
  215. {bumble-0.0.208 → bumble-0.0.210}/docs/images/favicon.ico +0 -0
  216. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo.png +0 -0
  217. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo.svg +0 -0
  218. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo.vectornator/Artboard0.json +0 -0
  219. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo.vectornator/Document.json +0 -0
  220. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo.vectornator/Manifest.json +0 -0
  221. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo.vectornator/Thumbnail.png +0 -0
  222. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo.vectornator/UndoHistory.json +0 -0
  223. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo_framed.png +0 -0
  224. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo_framed.svg +0 -0
  225. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo_framed.vectornator/Artboard0.json +0 -0
  226. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo_framed.vectornator/Document.json +0 -0
  227. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo_framed.vectornator/Manifest.json +0 -0
  228. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo_framed.vectornator/Thumbnail.png +0 -0
  229. {bumble-0.0.208 → bumble-0.0.210}/docs/images/logo_framed.vectornator/UndoHistory.json +0 -0
  230. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/mkdocs.yml +0 -0
  231. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/requirements.txt +0 -0
  232. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/api/examples.md +0 -0
  233. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/api/guide.md +0 -0
  234. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/api/reference.md +0 -0
  235. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/apps_and_tools/bench.md +0 -0
  236. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/apps_and_tools/console.md +0 -0
  237. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/apps_and_tools/gatt_dump.md +0 -0
  238. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/apps_and_tools/gg_bridge.md +0 -0
  239. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/apps_and_tools/hci_bridge.md +0 -0
  240. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/apps_and_tools/index.md +0 -0
  241. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/apps_and_tools/link_relay.md +0 -0
  242. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/apps_and_tools/pair.md +0 -0
  243. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/apps_and_tools/show.md +0 -0
  244. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/apps_and_tools/speaker.md +0 -0
  245. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/apps_and_tools/unbond.md +0 -0
  246. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/apps_and_tools/usb_probe.md +0 -0
  247. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/components/controller.md +0 -0
  248. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/components/gatt.md +0 -0
  249. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/components/host.md +0 -0
  250. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/components/security_manager.md +0 -0
  251. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/development/code_style.md +0 -0
  252. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/development/contributing.md +0 -0
  253. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/development/python_environments.md +0 -0
  254. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/downloads/zephyr/hci_usb.zip +0 -0
  255. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/drivers/index.md +0 -0
  256. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/drivers/intel.md +0 -0
  257. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/drivers/realtek.md +0 -0
  258. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/examples/index.md +0 -0
  259. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/extras/android_bt_bench.md +0 -0
  260. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/extras/android_remote_hci.md +0 -0
  261. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/extras/index.md +0 -0
  262. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/getting_started.md +0 -0
  263. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hardware/index.md +0 -0
  264. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/index.md +0 -0
  265. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/index.toml +0 -0
  266. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/web/bumble.js +0 -0
  267. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/web/heart_rate_monitor/heart_rate_monitor.html +0 -0
  268. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/web/heart_rate_monitor/heart_rate_monitor.js +0 -0
  269. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/web/heart_rate_monitor/heart_rate_monitor.py +0 -0
  270. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/web/scanner/scanner.css +0 -0
  271. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/web/scanner/scanner.html +0 -0
  272. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/web/scanner/scanner.js +0 -0
  273. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/web/speaker/logo.svg +0 -0
  274. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/web/speaker/speaker.css +0 -0
  275. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/web/speaker/speaker.html +0 -0
  276. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/web/speaker/speaker.js +0 -0
  277. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/hive/web/ui.js +0 -0
  278. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/images/bumble_layers.svg +0 -0
  279. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/images/console_screenshot.png +0 -0
  280. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/images/favicon.ico +0 -0
  281. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/images/logo.png +0 -0
  282. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/images/logo_framed.png +0 -0
  283. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/images/speaker_screenshot.png +0 -0
  284. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/index.md +0 -0
  285. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/platforms/android.md +0 -0
  286. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/platforms/index.md +0 -0
  287. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/platforms/linux.md +0 -0
  288. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/platforms/macos.md +0 -0
  289. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/platforms/windows.md +0 -0
  290. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/platforms/winusb_driver.png +0 -0
  291. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/platforms/zephyr.md +0 -0
  292. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/transports/android_emulator.md +0 -0
  293. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/transports/file.md +0 -0
  294. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/transports/hci_socket.md +0 -0
  295. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/transports/index.md +0 -0
  296. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/transports/pty.md +0 -0
  297. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/transports/serial.md +0 -0
  298. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/transports/tcp_client.md +0 -0
  299. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/transports/tcp_server.md +0 -0
  300. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/transports/udp.md +0 -0
  301. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/transports/usb.md +0 -0
  302. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/transports/vhci.md +0 -0
  303. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/transports/ws_client.md +0 -0
  304. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/transports/ws_server.md +0 -0
  305. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/use_cases/index.md +0 -0
  306. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/use_cases/use_case_1.md +0 -0
  307. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/use_cases/use_case_2.md +0 -0
  308. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/use_cases/use_case_3.md +0 -0
  309. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/use_cases/use_case_4.md +0 -0
  310. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/use_cases/use_case_5.md +0 -0
  311. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/src/use_cases/use_case_6.md +0 -0
  312. {bumble-0.0.208 → bumble-0.0.210}/docs/mkdocs/theme/partials/footer.html +0 -0
  313. {bumble-0.0.208 → bumble-0.0.210}/environment.yml +0 -0
  314. {bumble-0.0.208 → bumble-0.0.210}/examples/README.md +0 -0
  315. {bumble-0.0.208 → bumble-0.0.210}/examples/a2dp_sink1.json +0 -0
  316. {bumble-0.0.208 → bumble-0.0.210}/examples/asha_sink.html +0 -0
  317. {bumble-0.0.208 → bumble-0.0.210}/examples/asha_sink1.json +0 -0
  318. {bumble-0.0.208 → bumble-0.0.210}/examples/asha_sink2.json +0 -0
  319. {bumble-0.0.208 → bumble-0.0.210}/examples/async_runner.py +0 -0
  320. {bumble-0.0.208 → bumble-0.0.210}/examples/avrcp_as_sink.html +0 -0
  321. {bumble-0.0.208 → bumble-0.0.210}/examples/battery_client.py +0 -0
  322. {bumble-0.0.208 → bumble-0.0.210}/examples/battery_server.py +0 -0
  323. {bumble-0.0.208 → bumble-0.0.210}/examples/classic1.json +0 -0
  324. {bumble-0.0.208 → bumble-0.0.210}/examples/classic2.json +0 -0
  325. {bumble-0.0.208 → bumble-0.0.210}/examples/cs_initiator.json +0 -0
  326. {bumble-0.0.208 → bumble-0.0.210}/examples/cs_reflector.json +0 -0
  327. {bumble-0.0.208 → bumble-0.0.210}/examples/device1.json +0 -0
  328. {bumble-0.0.208 → bumble-0.0.210}/examples/device2.json +0 -0
  329. {bumble-0.0.208 → bumble-0.0.210}/examples/device3.json +0 -0
  330. {bumble-0.0.208 → bumble-0.0.210}/examples/device_information_client.py +0 -0
  331. {bumble-0.0.208 → bumble-0.0.210}/examples/device_information_server.py +0 -0
  332. {bumble-0.0.208 → bumble-0.0.210}/examples/device_with_rpa.json +0 -0
  333. {bumble-0.0.208 → bumble-0.0.210}/examples/heart_rate_client.py +0 -0
  334. {bumble-0.0.208 → bumble-0.0.210}/examples/heart_rate_server.py +0 -0
  335. {bumble-0.0.208 → bumble-0.0.210}/examples/hfp_gateway.html +0 -0
  336. {bumble-0.0.208 → bumble-0.0.210}/examples/hfp_gateway.json +0 -0
  337. {bumble-0.0.208 → bumble-0.0.210}/examples/hfp_handsfree.html +0 -0
  338. {bumble-0.0.208 → bumble-0.0.210}/examples/hfp_handsfree.json +0 -0
  339. {bumble-0.0.208 → bumble-0.0.210}/examples/hid_key_map.py +0 -0
  340. {bumble-0.0.208 → bumble-0.0.210}/examples/hid_keyboard.json +0 -0
  341. {bumble-0.0.208 → bumble-0.0.210}/examples/hid_report_parser.py +0 -0
  342. {bumble-0.0.208 → bumble-0.0.210}/examples/keyboard.html +0 -0
  343. {bumble-0.0.208 → bumble-0.0.210}/examples/keyboard.json +0 -0
  344. {bumble-0.0.208 → bumble-0.0.210}/examples/keyboard.py +0 -0
  345. {bumble-0.0.208 → bumble-0.0.210}/examples/leaudio.json +0 -0
  346. {bumble-0.0.208 → bumble-0.0.210}/examples/leaudio_with_classic.json +0 -0
  347. {bumble-0.0.208 → bumble-0.0.210}/examples/mcp_server.html +0 -0
  348. {bumble-0.0.208 → bumble-0.0.210}/examples/mobly/bench/one_device_bench_test.py +0 -0
  349. {bumble-0.0.208 → bumble-0.0.210}/examples/mobly/bench/sample_config.yml +0 -0
  350. {bumble-0.0.208 → bumble-0.0.210}/examples/mobly/bench/two_devices_bench_test.py +0 -0
  351. {bumble-0.0.208 → bumble-0.0.210}/examples/run_advertiser.py +0 -0
  352. {bumble-0.0.208 → bumble-0.0.210}/examples/run_asha_sink.py +0 -0
  353. {bumble-0.0.208 → bumble-0.0.210}/examples/run_classic_discoverable.py +0 -0
  354. {bumble-0.0.208 → bumble-0.0.210}/examples/run_classic_discovery.py +0 -0
  355. {bumble-0.0.208 → bumble-0.0.210}/examples/run_connect_and_encrypt.py +0 -0
  356. {bumble-0.0.208 → bumble-0.0.210}/examples/run_controller.py +0 -0
  357. {bumble-0.0.208 → bumble-0.0.210}/examples/run_controller_with_scanner.py +0 -0
  358. {bumble-0.0.208 → bumble-0.0.210}/examples/run_csis_servers.py +0 -0
  359. {bumble-0.0.208 → bumble-0.0.210}/examples/run_device_with_snooper.py +0 -0
  360. {bumble-0.0.208 → bumble-0.0.210}/examples/run_extended_advertiser.py +0 -0
  361. {bumble-0.0.208 → bumble-0.0.210}/examples/run_extended_advertiser_2.py +0 -0
  362. {bumble-0.0.208 → bumble-0.0.210}/examples/run_gatt_client.py +0 -0
  363. {bumble-0.0.208 → bumble-0.0.210}/examples/run_gatt_client_and_server.py +0 -0
  364. {bumble-0.0.208 → bumble-0.0.210}/examples/run_gatt_server.py +0 -0
  365. {bumble-0.0.208 → bumble-0.0.210}/examples/run_gatt_with_adapters.py +0 -0
  366. {bumble-0.0.208 → bumble-0.0.210}/examples/run_hap_server.py +0 -0
  367. {bumble-0.0.208 → bumble-0.0.210}/examples/run_notifier.py +0 -0
  368. {bumble-0.0.208 → bumble-0.0.210}/examples/run_rfcomm_server.py +0 -0
  369. {bumble-0.0.208 → bumble-0.0.210}/examples/run_scanner.py +0 -0
  370. {bumble-0.0.208 → bumble-0.0.210}/examples/run_unicast_server.py +0 -0
  371. {bumble-0.0.208 → bumble-0.0.210}/examples/run_vcp_renderer.py +0 -0
  372. {bumble-0.0.208 → bumble-0.0.210}/examples/speaker.json +0 -0
  373. {bumble-0.0.208 → bumble-0.0.210}/examples/vcp_renderer.html +0 -0
  374. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/.gitignore +0 -0
  375. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/.gitignore +0 -0
  376. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/build.gradle.kts +0 -0
  377. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/proguard-rules.pro +0 -0
  378. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/AndroidManifest.xml +0 -0
  379. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/ic_launcher-playstore.png +0 -0
  380. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Advertiser.kt +0 -0
  381. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/AutomationSnippet.java +0 -0
  382. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Connection.kt +0 -0
  383. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Gatt.kt +0 -0
  384. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/GattClient.kt +0 -0
  385. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/GattServer.kt +0 -0
  386. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/IoClient.kt +0 -0
  387. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/L2capClient.kt +0 -0
  388. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/L2capServer.kt +0 -0
  389. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/MainActivity.kt +0 -0
  390. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Mode.kt +0 -0
  391. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Model.kt +0 -0
  392. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Packet.kt +0 -0
  393. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Pinger.kt +0 -0
  394. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Ponger.kt +0 -0
  395. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Receiver.kt +0 -0
  396. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/RfcommClient.kt +0 -0
  397. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/RfcommServer.kt +0 -0
  398. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Scan.kt +0 -0
  399. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Sender.kt +0 -0
  400. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/SocketClient.kt +0 -0
  401. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/SocketServer.kt +0 -0
  402. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/ui/theme/Color.kt +0 -0
  403. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/ui/theme/Theme.kt +0 -0
  404. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/ui/theme/Type.kt +0 -0
  405. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/drawable/ic_launcher_background.xml +0 -0
  406. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/drawable/ic_launcher_foreground.xml +0 -0
  407. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -0
  408. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -0
  409. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp +0 -0
  410. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  411. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp +0 -0
  412. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  413. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp +0 -0
  414. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  415. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp +0 -0
  416. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  417. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp +0 -0
  418. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  419. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/values/colors.xml +0 -0
  420. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/values/ic_launcher_background.xml +0 -0
  421. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/values/strings.xml +0 -0
  422. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/values/themes.xml +0 -0
  423. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/xml/backup_rules.xml +0 -0
  424. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/app/src/main/res/xml/data_extraction_rules.xml +0 -0
  425. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/build.gradle.kts +0 -0
  426. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/gradle/libs.versions.toml +0 -0
  427. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/gradle/wrapper/gradle-wrapper.jar +0 -0
  428. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/gradle/wrapper/gradle-wrapper.properties +0 -0
  429. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/gradle.properties +0 -0
  430. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/gradlew +0 -0
  431. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/gradlew.bat +0 -0
  432. {bumble-0.0.208 → bumble-0.0.210}/extras/android/BtBench/settings.gradle.kts +0 -0
  433. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/.gitignore +0 -0
  434. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/.gitignore +0 -0
  435. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/build.gradle.kts +0 -0
  436. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/proguard-rules.pro +0 -0
  437. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/AndroidManifest.xml +0 -0
  438. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/aidl/android/hardware/bluetooth/IBluetoothHci.aidl +0 -0
  439. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/aidl/android/hardware/bluetooth/IBluetoothHciCallbacks.aidl +0 -0
  440. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/aidl/android/hardware/bluetooth/Status.aidl +0 -0
  441. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/hidl/bluetooth/1.1/IBluetoothHci.hal +0 -0
  442. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/hidl/bluetooth/1.1/IBluetoothHciCallbacks.hal +0 -0
  443. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/ic_launcher-playstore.png +0 -0
  444. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/IBluetoothHci.java +0 -0
  445. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/IBluetoothHciCallbacks.java +0 -0
  446. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/Status.java +0 -0
  447. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/V1_0/IBluetoothHci.java +0 -0
  448. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/V1_0/IBluetoothHciCallbacks.java +0 -0
  449. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/V1_0/Status.java +0 -0
  450. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/V1_1/IBluetoothHci.java +0 -0
  451. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/V1_1/IBluetoothHciCallbacks.java +0 -0
  452. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/CommandLineInterface.kt +0 -0
  453. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/HciHal.java +0 -0
  454. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/HciHalCallback.java +0 -0
  455. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/HciPacket.java +0 -0
  456. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/HciParser.java +0 -0
  457. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/HciProxy.java +0 -0
  458. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/HciServer.java +0 -0
  459. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/MainActivity.kt +0 -0
  460. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/ui/theme/Color.kt +0 -0
  461. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/ui/theme/Theme.kt +0 -0
  462. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/ui/theme/Type.kt +0 -0
  463. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -0
  464. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -0
  465. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  466. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp +0 -0
  467. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  468. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  469. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp +0 -0
  470. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  471. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  472. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp +0 -0
  473. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  474. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  475. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp +0 -0
  476. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  477. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  478. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp +0 -0
  479. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  480. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/values/colors.xml +0 -0
  481. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/values/ic_launcher_background.xml +0 -0
  482. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/values/strings.xml +0 -0
  483. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/values/themes.xml +0 -0
  484. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/xml/backup_rules.xml +0 -0
  485. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/app/src/main/res/xml/data_extraction_rules.xml +0 -0
  486. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/build.gradle.kts +0 -0
  487. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/gradle/libs.versions.toml +0 -0
  488. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/gradle/wrapper/gradle-wrapper.jar +0 -0
  489. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/gradle/wrapper/gradle-wrapper.properties +0 -0
  490. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/gradle.properties +0 -0
  491. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/gradlew +0 -0
  492. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/gradlew.bat +0 -0
  493. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/.gitignore +0 -0
  494. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/build.gradle.kts +0 -0
  495. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/consumer-rules.pro +0 -0
  496. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/proguard-rules.pro +0 -0
  497. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/src/main/AndroidManifest.xml +0 -0
  498. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/src/main/java/android/internal/hidl/base/V1_0/DebugInfo.java +0 -0
  499. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/src/main/java/android/internal/hidl/base/V1_0/IBase.java +0 -0
  500. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/src/main/java/android/os/HidlSupport.java +0 -0
  501. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/src/main/java/android/os/HwBinder.java +0 -0
  502. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/src/main/java/android/os/HwBlob.java +0 -0
  503. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/src/main/java/android/os/HwParcel.java +0 -0
  504. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/src/main/java/android/os/IHwBinder.java +0 -0
  505. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/src/main/java/android/os/IHwInterface.java +0 -0
  506. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/src/main/java/android/os/NativeHandle.java +0 -0
  507. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/lib/src/main/java/android/os/ServiceManager.java +0 -0
  508. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/scripts/generate_java_from_aidl.sh +0 -0
  509. {bumble-0.0.208 → bumble-0.0.210}/extras/android/RemoteHCI/settings.gradle.kts +0 -0
  510. {bumble-0.0.208 → bumble-0.0.210}/noxfile.py +0 -0
  511. {bumble-0.0.208 → bumble-0.0.210}/pyproject.toml +0 -0
  512. {bumble-0.0.208 → bumble-0.0.210}/rust/.gitignore +0 -0
  513. {bumble-0.0.208 → bumble-0.0.210}/rust/CHANGELOG.md +0 -0
  514. {bumble-0.0.208 → bumble-0.0.210}/rust/Cargo.lock +0 -0
  515. {bumble-0.0.208 → bumble-0.0.210}/rust/Cargo.toml +0 -0
  516. {bumble-0.0.208 → bumble-0.0.210}/rust/README.md +0 -0
  517. {bumble-0.0.208 → bumble-0.0.210}/rust/examples/battery_client.rs +0 -0
  518. {bumble-0.0.208 → bumble-0.0.210}/rust/examples/broadcast.rs +0 -0
  519. {bumble-0.0.208 → bumble-0.0.210}/rust/examples/scanner.rs +0 -0
  520. {bumble-0.0.208 → bumble-0.0.210}/rust/pytests/assigned_numbers.rs +0 -0
  521. {bumble-0.0.208 → bumble-0.0.210}/rust/pytests/pytests.rs +0 -0
  522. {bumble-0.0.208 → bumble-0.0.210}/rust/pytests/wrapper/drivers.rs +0 -0
  523. {bumble-0.0.208 → bumble-0.0.210}/rust/pytests/wrapper/hci.rs +0 -0
  524. {bumble-0.0.208 → bumble-0.0.210}/rust/pytests/wrapper/mod.rs +0 -0
  525. {bumble-0.0.208 → bumble-0.0.210}/rust/pytests/wrapper/transport.rs +0 -0
  526. {bumble-0.0.208 → bumble-0.0.210}/rust/resources/test/firmware/realtek/README.md +0 -0
  527. {bumble-0.0.208 → bumble-0.0.210}/rust/resources/test/firmware/realtek/rtl8723b_fw_structure.bin +0 -0
  528. {bumble-0.0.208 → bumble-0.0.210}/rust/resources/test/firmware/realtek/rtl8761bu_fw_structure.bin +0 -0
  529. {bumble-0.0.208 → bumble-0.0.210}/rust/src/adv.rs +0 -0
  530. {bumble-0.0.208 → bumble-0.0.210}/rust/src/cli/firmware/mod.rs +0 -0
  531. {bumble-0.0.208 → bumble-0.0.210}/rust/src/cli/firmware/rtk.rs +0 -0
  532. {bumble-0.0.208 → bumble-0.0.210}/rust/src/cli/l2cap/client_bridge.rs +0 -0
  533. {bumble-0.0.208 → bumble-0.0.210}/rust/src/cli/l2cap/mod.rs +0 -0
  534. {bumble-0.0.208 → bumble-0.0.210}/rust/src/cli/l2cap/server_bridge.rs +0 -0
  535. {bumble-0.0.208 → bumble-0.0.210}/rust/src/cli/mod.rs +0 -0
  536. {bumble-0.0.208 → bumble-0.0.210}/rust/src/cli/usb/mod.rs +0 -0
  537. {bumble-0.0.208 → bumble-0.0.210}/rust/src/internal/drivers/mod.rs +0 -0
  538. {bumble-0.0.208 → bumble-0.0.210}/rust/src/internal/drivers/rtk.rs +0 -0
  539. {bumble-0.0.208 → bumble-0.0.210}/rust/src/internal/hci/mod.rs +0 -0
  540. {bumble-0.0.208 → bumble-0.0.210}/rust/src/internal/hci/packets.pdl +0 -0
  541. {bumble-0.0.208 → bumble-0.0.210}/rust/src/internal/hci/tests.rs +0 -0
  542. {bumble-0.0.208 → bumble-0.0.210}/rust/src/internal/mod.rs +0 -0
  543. {bumble-0.0.208 → bumble-0.0.210}/rust/src/lib.rs +0 -0
  544. {bumble-0.0.208 → bumble-0.0.210}/rust/src/main.rs +0 -0
  545. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/assigned_numbers/company_ids.rs +0 -0
  546. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/assigned_numbers/mod.rs +0 -0
  547. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/assigned_numbers/services.rs +0 -0
  548. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/common.rs +0 -0
  549. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/controller.rs +0 -0
  550. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/core.rs +0 -0
  551. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/device/mod.rs +0 -0
  552. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/device/tests.rs +0 -0
  553. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/drivers/mod.rs +0 -0
  554. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/drivers/rtk.rs +0 -0
  555. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/gatt_client.rs +0 -0
  556. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/hci.rs +0 -0
  557. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/host.rs +0 -0
  558. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/l2cap.rs +0 -0
  559. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/link.rs +0 -0
  560. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/logging.rs +0 -0
  561. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/mod.rs +0 -0
  562. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/profile.rs +0 -0
  563. {bumble-0.0.208 → bumble-0.0.210}/rust/src/wrapper/transport.rs +0 -0
  564. {bumble-0.0.208 → bumble-0.0.210}/rust/tools/file_header.rs +0 -0
  565. {bumble-0.0.208 → bumble-0.0.210}/rust/tools/gen_assigned_numbers.rs +0 -0
  566. {bumble-0.0.208 → bumble-0.0.210}/scripts/process_android_emulator_protos.sh +0 -0
  567. {bumble-0.0.208 → bumble-0.0.210}/scripts/process_android_netsim_protos.sh +0 -0
  568. {bumble-0.0.208 → bumble-0.0.210}/setup.cfg +0 -0
  569. {bumble-0.0.208 → bumble-0.0.210}/tasks.py +0 -0
  570. {bumble-0.0.208 → bumble-0.0.210}/tests/__init__.py +0 -0
  571. {bumble-0.0.208 → bumble-0.0.210}/tests/aics_test.py +0 -0
  572. {bumble-0.0.208 → bumble-0.0.210}/tests/asha_test.py +0 -0
  573. {bumble-0.0.208 → bumble-0.0.210}/tests/at_test.py +0 -0
  574. {bumble-0.0.208 → bumble-0.0.210}/tests/avdtp_test.py +0 -0
  575. {bumble-0.0.208 → bumble-0.0.210}/tests/bap_test.py +0 -0
  576. {bumble-0.0.208 → bumble-0.0.210}/tests/bass_test.py +0 -0
  577. {bumble-0.0.208 → bumble-0.0.210}/tests/cap_test.py +0 -0
  578. {bumble-0.0.208 → bumble-0.0.210}/tests/codecs_test.py +0 -0
  579. {bumble-0.0.208 → bumble-0.0.210}/tests/core_test.py +0 -0
  580. {bumble-0.0.208 → bumble-0.0.210}/tests/csip_test.py +0 -0
  581. {bumble-0.0.208 → bumble-0.0.210}/tests/decoder_test.py +0 -0
  582. {bumble-0.0.208 → bumble-0.0.210}/tests/g722_sample.g722 +0 -0
  583. {bumble-0.0.208 → bumble-0.0.210}/tests/gatt_service_test.py +0 -0
  584. {bumble-0.0.208 → bumble-0.0.210}/tests/gatt_test.py +0 -0
  585. {bumble-0.0.208 → bumble-0.0.210}/tests/gmap_test.py +0 -0
  586. {bumble-0.0.208 → bumble-0.0.210}/tests/hap_test.py +0 -0
  587. {bumble-0.0.208 → bumble-0.0.210}/tests/hci_data_001.bin +0 -0
  588. {bumble-0.0.208 → bumble-0.0.210}/tests/hci_test.py +0 -0
  589. {bumble-0.0.208 → bumble-0.0.210}/tests/host_test.py +0 -0
  590. {bumble-0.0.208 → bumble-0.0.210}/tests/import_test.py +0 -0
  591. {bumble-0.0.208 → bumble-0.0.210}/tests/keystore_test.py +0 -0
  592. {bumble-0.0.208 → bumble-0.0.210}/tests/l2cap_test.py +0 -0
  593. {bumble-0.0.208 → bumble-0.0.210}/tests/le_audio_test.py +0 -0
  594. {bumble-0.0.208 → bumble-0.0.210}/tests/mcp_test.py +0 -0
  595. {bumble-0.0.208 → bumble-0.0.210}/tests/pytest.ini +0 -0
  596. {bumble-0.0.208 → bumble-0.0.210}/tests/rfcomm_test.py +0 -0
  597. {bumble-0.0.208 → bumble-0.0.210}/tests/sdp_test.py +0 -0
  598. {bumble-0.0.208 → bumble-0.0.210}/tests/smp_test.py +0 -0
  599. {bumble-0.0.208 → bumble-0.0.210}/tests/test_utils.py +0 -0
  600. {bumble-0.0.208 → bumble-0.0.210}/tests/transport_tcp_server_test.py +0 -0
  601. {bumble-0.0.208 → bumble-0.0.210}/tests/transport_test.py +0 -0
  602. {bumble-0.0.208 → bumble-0.0.210}/tests/utils_test.py +0 -0
  603. {bumble-0.0.208 → bumble-0.0.210}/tests/vcp_test.py +0 -0
  604. {bumble-0.0.208 → bumble-0.0.210}/tests/vocs_test.py +0 -0
  605. {bumble-0.0.208 → bumble-0.0.210}/tools/__init__.py +0 -0
  606. {bumble-0.0.208 → bumble-0.0.210}/tools/generate_company_id_list.py +0 -0
  607. {bumble-0.0.208 → bumble-0.0.210}/tools/intel_fw_download.py +0 -0
  608. {bumble-0.0.208 → bumble-0.0.210}/tools/intel_util.py +0 -0
  609. {bumble-0.0.208 → bumble-0.0.210}/tools/rtk_fw_download.py +0 -0
  610. {bumble-0.0.208 → bumble-0.0.210}/tools/rtk_util.py +0 -0
  611. {bumble-0.0.208 → bumble-0.0.210}/web/.gitignore +0 -0
  612. {bumble-0.0.208 → bumble-0.0.210}/web/README.md +0 -0
  613. {bumble-0.0.208 → bumble-0.0.210}/web/bumble.js +0 -0
  614. {bumble-0.0.208 → bumble-0.0.210}/web/favicon.ico +0 -0
  615. {bumble-0.0.208 → bumble-0.0.210}/web/heart_rate_monitor/heart_rate_monitor.html +0 -0
  616. {bumble-0.0.208 → bumble-0.0.210}/web/heart_rate_monitor/heart_rate_monitor.js +0 -0
  617. {bumble-0.0.208 → bumble-0.0.210}/web/heart_rate_monitor/heart_rate_monitor.py +0 -0
  618. {bumble-0.0.208 → bumble-0.0.210}/web/scanner/scanner.css +0 -0
  619. {bumble-0.0.208 → bumble-0.0.210}/web/scanner/scanner.html +0 -0
  620. {bumble-0.0.208 → bumble-0.0.210}/web/scanner/scanner.js +0 -0
  621. {bumble-0.0.208 → bumble-0.0.210}/web/speaker/logo.svg +0 -0
  622. {bumble-0.0.208 → bumble-0.0.210}/web/speaker/speaker.css +0 -0
  623. {bumble-0.0.208 → bumble-0.0.210}/web/speaker/speaker.html +0 -0
  624. {bumble-0.0.208 → bumble-0.0.210}/web/speaker/speaker.js +0 -0
  625. {bumble-0.0.208 → bumble-0.0.210}/web/ui.js +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: bumble
3
- Version: 0.0.208
3
+ Version: 0.0.210
4
4
  Summary: Bluetooth Stack for Apps, Emulation, Test and Experimentation
5
5
  Author-email: Google <bumble-dev@google.com>
6
6
  Project-URL: Homepage, https://github.com/google/bumble
@@ -57,6 +57,7 @@ Requires-Dist: mkdocstrings[python]>=0.27.0; extra == "documentation"
57
57
  Provides-Extra: auracast
58
58
  Requires-Dist: lc3py>=1.1.3; (python_version >= "3.10" and ((platform_system == "Linux" and platform_machine == "x86_64") or (platform_system == "Darwin" and platform_machine == "arm64"))) and extra == "auracast"
59
59
  Requires-Dist: sounddevice>=0.5.1; extra == "auracast"
60
+ Dynamic: license-file
60
61
 
61
62
 
62
63
  _ _ _
@@ -18,7 +18,6 @@
18
18
  from __future__ import annotations
19
19
 
20
20
  import asyncio
21
- import asyncio.subprocess
22
21
  import collections
23
22
  import contextlib
24
23
  import dataclasses
@@ -36,7 +35,6 @@ from typing import (
36
35
  )
37
36
 
38
37
  import click
39
- import pyee
40
38
 
41
39
  try:
42
40
  import lc3 # type: ignore # pylint: disable=E0401
@@ -99,12 +97,31 @@ def codec_config_string(
99
97
  return '\n'.join(indent + line for line in lines)
100
98
 
101
99
 
100
+ def broadcast_code_bytes(broadcast_code: str) -> bytes:
101
+ """
102
+ Convert a broadcast code string to a 16-byte value.
103
+
104
+ If `broadcast_code` is `0x` followed by 32 hex characters, it is interpreted as a
105
+ raw 16-byte raw broadcast code in big-endian byte order.
106
+ Otherwise, `broadcast_code` is converted to a 16-byte value as specified in
107
+ BLUETOOTH CORE SPECIFICATION Version 6.0 | Vol 3, Part C , section 3.2.6.3
108
+ """
109
+ if broadcast_code.startswith("0x") and len(broadcast_code) == 34:
110
+ return bytes.fromhex(broadcast_code[2:])[::-1]
111
+
112
+ broadcast_code_utf8 = broadcast_code.encode("utf-8")
113
+ if len(broadcast_code_utf8) > 16:
114
+ raise ValueError("broadcast code must be <= 16 bytes in utf-8 encoding")
115
+ padding = bytes(16 - len(broadcast_code_utf8))
116
+ return broadcast_code_utf8 + padding
117
+
118
+
102
119
  # -----------------------------------------------------------------------------
103
120
  # Scan For Broadcasts
104
121
  # -----------------------------------------------------------------------------
105
- class BroadcastScanner(pyee.EventEmitter):
122
+ class BroadcastScanner(bumble.utils.EventEmitter):
106
123
  @dataclasses.dataclass
107
- class Broadcast(pyee.EventEmitter):
124
+ class Broadcast(bumble.utils.EventEmitter):
108
125
  name: str | None
109
126
  sync: bumble.device.PeriodicAdvertisingSync
110
127
  broadcast_id: int
@@ -234,22 +251,14 @@ class BroadcastScanner(pyee.EventEmitter):
234
251
 
235
252
  if self.biginfo:
236
253
  print(color(' BIG:', 'cyan'))
237
- print(
238
- color(' Number of BIS:', 'magenta'),
239
- self.biginfo.num_bis,
240
- )
241
- print(
242
- color(' PHY: ', 'magenta'),
243
- self.biginfo.phy.name,
244
- )
245
- print(
246
- color(' Framed: ', 'magenta'),
247
- self.biginfo.framed,
248
- )
249
- print(
250
- color(' Encrypted: ', 'magenta'),
251
- self.biginfo.encrypted,
252
- )
254
+ print(color(' Number of BIS:', 'magenta'), self.biginfo.num_bis)
255
+ print(color(' ISO Interval: ', 'magenta'), self.biginfo.iso_interval)
256
+ print(color(' Max PDU: ', 'magenta'), self.biginfo.max_pdu)
257
+ print(color(' SDU Interval: ', 'magenta'), self.biginfo.sdu_interval)
258
+ print(color(' Max SDU: ', 'magenta'), self.biginfo.max_sdu)
259
+ print(color(' PHY: ', 'magenta'), self.biginfo.phy.name)
260
+ print(color(' Framed: ', 'magenta'), self.biginfo.framed)
261
+ print(color(' Encrypted: ', 'magenta'), self.biginfo.encrypted)
253
262
 
254
263
  def on_sync_establishment(self) -> None:
255
264
  self.emit('sync_establishment')
@@ -365,7 +374,7 @@ class BroadcastScanner(pyee.EventEmitter):
365
374
  self.emit('broadcast_loss', broadcast)
366
375
 
367
376
 
368
- class PrintingBroadcastScanner(pyee.EventEmitter):
377
+ class PrintingBroadcastScanner(bumble.utils.EventEmitter):
369
378
  def __init__(
370
379
  self, device: bumble.device.Device, filter_duplicates: bool, sync_timeout: float
371
380
  ) -> None:
@@ -702,14 +711,13 @@ async def run_receive(
702
711
 
703
712
  def on_change() -> None:
704
713
  if (
705
- broadcast.basic_audio_announcement
706
- and not basic_audio_announcement_scanned.is_set()
707
- ):
714
+ broadcast.basic_audio_announcement and broadcast.biginfo
715
+ ) and not basic_audio_announcement_scanned.is_set():
708
716
  basic_audio_announcement_scanned.set()
709
717
 
710
718
  broadcast.on('change', on_change)
711
- if not broadcast.basic_audio_announcement:
712
- print('Wait for Basic Audio Announcement...')
719
+ if not broadcast.basic_audio_announcement or not broadcast.biginfo:
720
+ print('Wait for Basic Audio Announcement and BIG Info...')
713
721
  await basic_audio_announcement_scanned.wait()
714
722
  print('Basic Audio Announcement found')
715
723
  broadcast.print()
@@ -730,7 +738,7 @@ async def run_receive(
730
738
  big_sync_timeout=0x4000,
731
739
  bis=[bis.index for bis in subgroup.bis],
732
740
  broadcast_code=(
733
- bytes.fromhex(broadcast_code) if broadcast_code else None
741
+ broadcast_code_bytes(broadcast_code) if broadcast_code else None
734
742
  ),
735
743
  ),
736
744
  )
@@ -944,7 +952,7 @@ async def run_transmit(
944
952
  max_transport_latency=65,
945
953
  rtn=4,
946
954
  broadcast_code=(
947
- bytes.fromhex(broadcast_code) if broadcast_code else None
955
+ broadcast_code_bytes(broadcast_code) if broadcast_code else None
948
956
  ),
949
957
  ),
950
958
  )
@@ -1088,7 +1096,7 @@ def pair(ctx, transport, address):
1088
1096
  '--broadcast-code',
1089
1097
  metavar='BROADCAST_CODE',
1090
1098
  type=str,
1091
- help='Broadcast encryption code in hex format',
1099
+ help='Broadcast encryption code (string or raw hex format prefixed with 0x)',
1092
1100
  )
1093
1101
  @click.option(
1094
1102
  '--sync-timeout',
@@ -28,8 +28,7 @@ import click
28
28
 
29
29
  from bumble import l2cap
30
30
  from bumble.core import (
31
- BT_BR_EDR_TRANSPORT,
32
- BT_LE_TRANSPORT,
31
+ PhysicalTransport,
33
32
  BT_L2CAP_PROTOCOL_ID,
34
33
  BT_RFCOMM_PROTOCOL_ID,
35
34
  UUID,
@@ -42,8 +41,7 @@ from bumble.hci import (
42
41
  HCI_LE_1M_PHY,
43
42
  HCI_LE_2M_PHY,
44
43
  HCI_LE_CODED_PHY,
45
- HCI_CENTRAL_ROLE,
46
- HCI_PERIPHERAL_ROLE,
44
+ Role,
47
45
  HCI_Constant,
48
46
  HCI_Error,
49
47
  HCI_StatusError,
@@ -113,7 +111,7 @@ def print_connection_phy(phy):
113
111
 
114
112
  def print_connection(connection):
115
113
  params = []
116
- if connection.transport == BT_LE_TRANSPORT:
114
+ if connection.transport == PhysicalTransport.LE:
117
115
  params.append(
118
116
  'DL=('
119
117
  f'TX:{connection.data_length[0]}/{connection.data_length[1]},'
@@ -189,7 +187,7 @@ def log_stats(title, stats, precision=2):
189
187
 
190
188
 
191
189
  async def switch_roles(connection, role):
192
- target_role = HCI_CENTRAL_ROLE if role == "central" else HCI_PERIPHERAL_ROLE
190
+ target_role = Role.CENTRAL if role == "central" else Role.PERIPHERAL
193
191
  if connection.role != target_role:
194
192
  logging.info(f'{color("### Switching roles to:", "cyan")} {role}')
195
193
  try:
@@ -1275,7 +1273,11 @@ class Central(Connection.Listener):
1275
1273
  self.connection = await self.device.connect(
1276
1274
  self.peripheral_address,
1277
1275
  connection_parameters_preferences=self.connection_parameter_preferences,
1278
- transport=BT_BR_EDR_TRANSPORT if self.classic else BT_LE_TRANSPORT,
1276
+ transport=(
1277
+ PhysicalTransport.BR_EDR
1278
+ if self.classic
1279
+ else PhysicalTransport.LE
1280
+ ),
1279
1281
  )
1280
1282
  except CommandTimeoutError:
1281
1283
  logging.info(color('!!! Connection timed out', 'red'))
@@ -55,7 +55,7 @@ from prompt_toolkit.layout import (
55
55
  from bumble import __version__
56
56
  import bumble.core
57
57
  from bumble import colors
58
- from bumble.core import UUID, AdvertisingData, BT_LE_TRANSPORT
58
+ from bumble.core import UUID, AdvertisingData, PhysicalTransport
59
59
  from bumble.device import (
60
60
  ConnectionParametersPreferences,
61
61
  ConnectionPHY,
@@ -37,6 +37,7 @@ import click
37
37
  import aiohttp.web
38
38
 
39
39
  import bumble
40
+ from bumble import utils
40
41
  from bumble.core import AdvertisingData
41
42
  from bumble.colors import color
42
43
  from bumble.device import Device, DeviceConfiguration, AdvertisingParameters, CisLink
@@ -359,7 +360,9 @@ class Speaker:
359
360
  pcm = decoder.decode(
360
361
  pdu.iso_sdu_fragment, bit_depth=DEFAULT_PCM_BYTES_PER_SAMPLE * 8
361
362
  )
362
- self.device.abort_on('disconnection', self.ui_server.send_audio(pcm))
363
+ utils.cancel_on_event(
364
+ self.device, 'disconnection', self.ui_server.send_audio(pcm)
365
+ )
363
366
 
364
367
  def on_ase_state_change(ase: ascs.AseStateMachine) -> None:
365
368
  codec_config = ase.codec_specific_configuration
@@ -373,7 +376,8 @@ class Speaker:
373
376
  or codec_config.codec_frames_per_sdu is None
374
377
  ):
375
378
  return
376
- ase.cis_link.abort_on(
379
+ utils.cancel_on_event(
380
+ ase.cis_link,
377
381
  'disconnection',
378
382
  lc3_source_task(
379
383
  filename=self.lc3_input_file_path,
@@ -31,8 +31,7 @@ from bumble.keys import JsonKeyStore
31
31
  from bumble.core import (
32
32
  AdvertisingData,
33
33
  ProtocolError,
34
- BT_LE_TRANSPORT,
35
- BT_BR_EDR_TRANSPORT,
34
+ PhysicalTransport,
36
35
  )
37
36
  from bumble.gatt import (
38
37
  GATT_DEVICE_NAME_CHARACTERISTIC,
@@ -422,7 +421,9 @@ async def pair(
422
421
  print(color(f'=== Connecting to {address_or_name}...', 'green'))
423
422
  connection = await device.connect(
424
423
  address_or_name,
425
- transport=BT_LE_TRANSPORT if mode == 'le' else BT_BR_EDR_TRANSPORT,
424
+ transport=(
425
+ PhysicalTransport.LE if mode == 'le' else PhysicalTransport.BR_EDR
426
+ ),
426
427
  )
427
428
 
428
429
  if not request:
@@ -56,7 +56,7 @@ from bumble.core import (
56
56
  AdvertisingData,
57
57
  ConnectionError as BumbleConnectionError,
58
58
  DeviceClass,
59
- BT_BR_EDR_TRANSPORT,
59
+ PhysicalTransport,
60
60
  )
61
61
  from bumble.device import Connection, Device, DeviceConfiguration
62
62
  from bumble.hci import Address, HCI_CONNECTION_ALREADY_EXISTS_ERROR, HCI_Constant
@@ -286,7 +286,7 @@ class Player:
286
286
 
287
287
  async def connect(self, device: Device, address: str) -> Connection:
288
288
  print(color(f"Connecting to {address}...", "green"))
289
- connection = await device.connect(address, transport=BT_BR_EDR_TRANSPORT)
289
+ connection = await device.connect(address, transport=PhysicalTransport.BR_EDR)
290
290
 
291
291
  # Request authentication
292
292
  if self.authenticate:
@@ -402,7 +402,7 @@ class Player:
402
402
 
403
403
  async def pair(self, device: Device, address: str) -> None:
404
404
  print(color(f"Connecting to {address}...", "green"))
405
- connection = await device.connect(address, transport=BT_BR_EDR_TRANSPORT)
405
+ connection = await device.connect(address, transport=PhysicalTransport.BR_EDR)
406
406
 
407
407
  print(color("Pairing...", "magenta"))
408
408
  await connection.authenticate()
@@ -271,7 +271,7 @@ class ClientBridge:
271
271
  print(color(f"@@@ Connecting to Bluetooth {self.address}", "blue"))
272
272
  assert self.device
273
273
  self.connection = await self.device.connect(
274
- self.address, transport=core.BT_BR_EDR_TRANSPORT
274
+ self.address, transport=core.PhysicalTransport.BR_EDR
275
275
  )
276
276
  print(color(f"@@@ Bluetooth connection: {self.connection}", "blue"))
277
277
  self.connection.on("disconnection", self.on_disconnection)
@@ -34,7 +34,7 @@ from aiohttp import web
34
34
 
35
35
  import bumble
36
36
  from bumble.colors import color
37
- from bumble.core import BT_BR_EDR_TRANSPORT, CommandTimeoutError
37
+ from bumble.core import PhysicalTransport, CommandTimeoutError
38
38
  from bumble.device import Connection, Device, DeviceConfiguration
39
39
  from bumble.hci import HCI_StatusError
40
40
  from bumble.pairing import PairingConfig
@@ -568,7 +568,9 @@ class Speaker:
568
568
  async def connect(self, address):
569
569
  # Connect to the source
570
570
  print(f'=== Connecting to {address}...')
571
- connection = await self.device.connect(address, transport=BT_BR_EDR_TRANSPORT)
571
+ connection = await self.device.connect(
572
+ address, transport=PhysicalTransport.BR_EDR
573
+ )
572
574
  print(f'=== Connected to {connection.peer_address}')
573
575
 
574
576
  # Request authentication
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.0.208'
21
- __version_tuple__ = version_tuple = (0, 0, 208)
20
+ __version__ = version = '0.0.210'
21
+ __version_tuple__ = version_tuple = (0, 0, 210)
@@ -26,9 +26,9 @@ from typing import Awaitable, Callable
26
26
  from typing_extensions import ClassVar, Self
27
27
 
28
28
 
29
- from .codecs import AacAudioRtpPacket
30
- from .company_ids import COMPANY_IDENTIFIERS
31
- from .sdp import (
29
+ from bumble.codecs import AacAudioRtpPacket
30
+ from bumble.company_ids import COMPANY_IDENTIFIERS
31
+ from bumble.sdp import (
32
32
  DataElement,
33
33
  ServiceAttribute,
34
34
  SDP_PUBLIC_BROWSE_ROOT,
@@ -38,7 +38,7 @@ from .sdp import (
38
38
  SDP_PROTOCOL_DESCRIPTOR_LIST_ATTRIBUTE_ID,
39
39
  SDP_BLUETOOTH_PROFILE_DESCRIPTOR_LIST_ATTRIBUTE_ID,
40
40
  )
41
- from .core import (
41
+ from bumble.core import (
42
42
  BT_L2CAP_PROTOCOL_ID,
43
43
  BT_AUDIO_SOURCE_SERVICE,
44
44
  BT_AUDIO_SINK_SERVICE,
@@ -46,7 +46,7 @@ from .core import (
46
46
  BT_ADVANCED_AUDIO_DISTRIBUTION_SERVICE,
47
47
  name_or_number,
48
48
  )
49
- from .rtp import MediaPacket
49
+ from bumble.rtp import MediaPacket
50
50
 
51
51
 
52
52
  # -----------------------------------------------------------------------------
@@ -155,7 +155,7 @@ def flags_to_list(flags, values):
155
155
  # -----------------------------------------------------------------------------
156
156
  def make_audio_source_service_sdp_records(service_record_handle, version=(1, 3)):
157
157
  # pylint: disable=import-outside-toplevel
158
- from .avdtp import AVDTP_PSM
158
+ from bumble.avdtp import AVDTP_PSM
159
159
 
160
160
  version_int = version[0] << 8 | version[1]
161
161
  return [
@@ -209,7 +209,7 @@ def make_audio_source_service_sdp_records(service_record_handle, version=(1, 3))
209
209
  # -----------------------------------------------------------------------------
210
210
  def make_audio_sink_service_sdp_records(service_record_handle, version=(1, 3)):
211
211
  # pylint: disable=import-outside-toplevel
212
- from .avdtp import AVDTP_PSM
212
+ from bumble.avdtp import AVDTP_PSM
213
213
 
214
214
  version_int = version[0] << 8 | version[1]
215
215
  return [
@@ -41,7 +41,6 @@ from typing import (
41
41
  TYPE_CHECKING,
42
42
  )
43
43
 
44
- from pyee import EventEmitter
45
44
 
46
45
  from bumble import utils
47
46
  from bumble.core import UUID, name_or_number, InvalidOperationError, ProtocolError
@@ -223,7 +222,12 @@ UUID_2_FIELD_SPEC = lambda x, y: UUID.parse_uuid_2(x, y) # noqa: E731
223
222
  # Exceptions
224
223
  # -----------------------------------------------------------------------------
225
224
  class ATT_Error(ProtocolError):
226
- def __init__(self, error_code, att_handle=0x0000, message=''):
225
+ error_code: int
226
+ att_handle: int
227
+
228
+ def __init__(
229
+ self, error_code: int, att_handle: int = 0x0000, message: str = ''
230
+ ) -> None:
227
231
  super().__init__(
228
232
  error_code,
229
233
  error_namespace='att',
@@ -233,7 +237,10 @@ class ATT_Error(ProtocolError):
233
237
  self.message = message
234
238
 
235
239
  def __str__(self):
236
- return f'ATT_Error(error={self.error_name}, handle={self.att_handle:04X}): {self.message}'
240
+ return (
241
+ f'ATT_Error(error={self.error_name}, '
242
+ f'handle={self.att_handle:04X}): {self.message}'
243
+ )
237
244
 
238
245
 
239
246
  # -----------------------------------------------------------------------------
@@ -790,7 +797,7 @@ class AttributeValue(Generic[_T]):
790
797
 
791
798
 
792
799
  # -----------------------------------------------------------------------------
793
- class Attribute(EventEmitter, Generic[_T]):
800
+ class Attribute(utils.EventEmitter, Generic[_T]):
794
801
  class Permissions(enum.IntFlag):
795
802
  READABLE = 0x01
796
803
  WRITEABLE = 0x02
@@ -837,7 +844,7 @@ class Attribute(EventEmitter, Generic[_T]):
837
844
  permissions: Union[str, Attribute.Permissions],
838
845
  value: Union[AttributeValue[_T], _T, None] = None,
839
846
  ) -> None:
840
- EventEmitter.__init__(self)
847
+ utils.EventEmitter.__init__(self)
841
848
  self.handle = 0
842
849
  self.end_group_handle = 0
843
850
  if isinstance(permissions, str):
@@ -21,7 +21,7 @@ import struct
21
21
  from typing import Dict, Type, Union, Tuple
22
22
 
23
23
  from bumble import core
24
- from bumble.utils import OpenIntEnum
24
+ from bumble import utils
25
25
 
26
26
 
27
27
  # -----------------------------------------------------------------------------
@@ -43,7 +43,7 @@ class Frame:
43
43
  EXTENDED = 0x1E
44
44
  UNIT = 0x1F
45
45
 
46
- class OperationCode(OpenIntEnum):
46
+ class OperationCode(utils.OpenIntEnum):
47
47
  # 0x00 - 0x0F: Unit and subunit commands
48
48
  VENDOR_DEPENDENT = 0x00
49
49
  RESERVE = 0x01
@@ -204,7 +204,7 @@ class Frame:
204
204
 
205
205
  # -----------------------------------------------------------------------------
206
206
  class CommandFrame(Frame):
207
- class CommandType(OpenIntEnum):
207
+ class CommandType(utils.OpenIntEnum):
208
208
  # AV/C Digital Interface Command Set General Specification Version 4.1
209
209
  # Table 7.1
210
210
  CONTROL = 0x00
@@ -240,7 +240,7 @@ class CommandFrame(Frame):
240
240
 
241
241
  # -----------------------------------------------------------------------------
242
242
  class ResponseFrame(Frame):
243
- class ResponseCode(OpenIntEnum):
243
+ class ResponseCode(utils.OpenIntEnum):
244
244
  # AV/C Digital Interface Command Set General Specification Version 4.1
245
245
  # Table 7.2
246
246
  NOT_IMPLEMENTED = 0x08
@@ -368,7 +368,7 @@ class PassThroughFrame:
368
368
  PRESSED = 0
369
369
  RELEASED = 1
370
370
 
371
- class OperationId(OpenIntEnum):
371
+ class OperationId(utils.OpenIntEnum):
372
372
  SELECT = 0x00
373
373
  UP = 0x01
374
374
  DOWN = 0x01
@@ -37,16 +37,15 @@ from typing import (
37
37
  cast,
38
38
  )
39
39
 
40
- from pyee import EventEmitter
41
40
 
42
- from .core import (
41
+ from bumble.core import (
43
42
  BT_ADVANCED_AUDIO_DISTRIBUTION_SERVICE,
44
43
  InvalidStateError,
45
44
  ProtocolError,
46
45
  InvalidArgumentError,
47
46
  name_or_number,
48
47
  )
49
- from .a2dp import (
48
+ from bumble.a2dp import (
50
49
  A2DP_CODEC_TYPE_NAMES,
51
50
  A2DP_MPEG_2_4_AAC_CODEC_TYPE,
52
51
  A2DP_NON_A2DP_CODEC_TYPE,
@@ -56,9 +55,9 @@ from .a2dp import (
56
55
  SbcMediaCodecInformation,
57
56
  VendorSpecificMediaCodecInformation,
58
57
  )
59
- from .rtp import MediaPacket
60
- from . import sdp, device, l2cap
61
- from .colors import color
58
+ from bumble.rtp import MediaPacket
59
+ from bumble import sdp, device, l2cap, utils
60
+ from bumble.colors import color
62
61
 
63
62
 
64
63
  # -----------------------------------------------------------------------------
@@ -1194,7 +1193,7 @@ class DelayReport_Reject(Simple_Reject):
1194
1193
 
1195
1194
 
1196
1195
  # -----------------------------------------------------------------------------
1197
- class Protocol(EventEmitter):
1196
+ class Protocol(utils.EventEmitter):
1198
1197
  local_endpoints: List[LocalStreamEndPoint]
1199
1198
  remote_endpoints: Dict[int, DiscoveredStreamEndPoint]
1200
1199
  streams: Dict[int, Stream]
@@ -1680,7 +1679,7 @@ class Protocol(EventEmitter):
1680
1679
 
1681
1680
 
1682
1681
  # -----------------------------------------------------------------------------
1683
- class Listener(EventEmitter):
1682
+ class Listener(utils.EventEmitter):
1684
1683
  servers: Dict[int, Protocol]
1685
1684
 
1686
1685
  @staticmethod
@@ -2063,7 +2062,7 @@ class DiscoveredStreamEndPoint(StreamEndPoint, StreamEndPointProxy):
2063
2062
 
2064
2063
 
2065
2064
  # -----------------------------------------------------------------------------
2066
- class LocalStreamEndPoint(StreamEndPoint, EventEmitter):
2065
+ class LocalStreamEndPoint(StreamEndPoint, utils.EventEmitter):
2067
2066
  stream: Optional[Stream]
2068
2067
 
2069
2068
  def __init__(
@@ -2076,7 +2075,7 @@ class LocalStreamEndPoint(StreamEndPoint, EventEmitter):
2076
2075
  configuration: Optional[Iterable[ServiceCapabilities]] = None,
2077
2076
  ):
2078
2077
  StreamEndPoint.__init__(self, seid, media_type, tsep, 0, capabilities)
2079
- EventEmitter.__init__(self)
2078
+ utils.EventEmitter.__init__(self)
2080
2079
  self.protocol = protocol
2081
2080
  self.configuration = configuration if configuration is not None else []
2082
2081
  self.stream = None