bumble 0.0.202__tar.gz → 0.0.204__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 (610) hide show
  1. {bumble-0.0.202 → bumble-0.0.204}/PKG-INFO +2 -2
  2. {bumble-0.0.202 → bumble-0.0.204}/apps/auracast.py +22 -13
  3. {bumble-0.0.202 → bumble-0.0.204}/apps/bench.py +2 -1
  4. {bumble-0.0.202 → bumble-0.0.204}/apps/hci_bridge.py +1 -1
  5. {bumble-0.0.202 → bumble-0.0.204}/apps/lea_unicast/app.py +24 -6
  6. {bumble-0.0.202 → bumble-0.0.204}/apps/pair.py +13 -8
  7. {bumble-0.0.202 → bumble-0.0.204}/apps/show.py +6 -6
  8. {bumble-0.0.202 → bumble-0.0.204}/bumble/_version.py +2 -2
  9. {bumble-0.0.202 → bumble-0.0.204}/bumble/att.py +11 -15
  10. {bumble-0.0.202 → bumble-0.0.204}/bumble/controller.py +58 -2
  11. {bumble-0.0.202 → bumble-0.0.204}/bumble/device.py +454 -494
  12. {bumble-0.0.202 → bumble-0.0.204}/bumble/drivers/common.py +2 -0
  13. bumble-0.0.204/bumble/drivers/intel.py +671 -0
  14. {bumble-0.0.202 → bumble-0.0.204}/bumble/gatt.py +33 -7
  15. {bumble-0.0.202 → bumble-0.0.204}/bumble/gatt_client.py +3 -3
  16. {bumble-0.0.202 → bumble-0.0.204}/bumble/gatt_server.py +14 -3
  17. {bumble-0.0.202 → bumble-0.0.204}/bumble/hci.py +139 -56
  18. {bumble-0.0.202 → bumble-0.0.204}/bumble/hfp.py +20 -17
  19. {bumble-0.0.202 → bumble-0.0.204}/bumble/host.py +5 -2
  20. {bumble-0.0.202 → bumble-0.0.204}/bumble/l2cap.py +2 -8
  21. {bumble-0.0.202 → bumble-0.0.204}/bumble/pairing.py +3 -0
  22. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/aics.py +37 -53
  23. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/bap.py +114 -42
  24. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/bass.py +4 -7
  25. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/device_information_service.py +4 -1
  26. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/heart_rate_service.py +5 -6
  27. bumble-0.0.204/bumble/profiles/vocs.py +330 -0
  28. {bumble-0.0.202 → bumble-0.0.204}/bumble/sdp.py +1 -7
  29. {bumble-0.0.202 → bumble-0.0.204}/bumble/smp.py +9 -7
  30. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/usb.py +8 -2
  31. {bumble-0.0.202 → bumble-0.0.204}/bumble/utils.py +20 -5
  32. {bumble-0.0.202 → bumble-0.0.204}/bumble/vendor/android/hci.py +29 -4
  33. {bumble-0.0.202 → bumble-0.0.204}/bumble.egg-info/PKG-INFO +2 -2
  34. {bumble-0.0.202 → bumble-0.0.204}/bumble.egg-info/SOURCES.txt +6 -0
  35. {bumble-0.0.202 → bumble-0.0.204}/bumble.egg-info/entry_points.txt +2 -0
  36. {bumble-0.0.202 → bumble-0.0.204}/bumble.egg-info/requires.txt +1 -1
  37. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/drivers/index.md +2 -1
  38. bumble-0.0.204/docs/mkdocs/src/drivers/intel.md +73 -0
  39. {bumble-0.0.202 → bumble-0.0.204}/examples/keyboard.py +1 -1
  40. {bumble-0.0.202 → bumble-0.0.204}/examples/run_gatt_server.py +1 -1
  41. bumble-0.0.204/examples/run_gatt_with_adapters.py +319 -0
  42. {bumble-0.0.202 → bumble-0.0.204}/examples/run_hfp_gateway.py +8 -3
  43. {bumble-0.0.202 → bumble-0.0.204}/examples/run_unicast_server.py +7 -1
  44. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/hci.rs +1 -1
  45. {bumble-0.0.202 → bumble-0.0.204}/setup.cfg +3 -1
  46. {bumble-0.0.202 → bumble-0.0.204}/tests/aics_test.py +9 -3
  47. {bumble-0.0.202 → bumble-0.0.204}/tests/bap_test.py +52 -0
  48. {bumble-0.0.202 → bumble-0.0.204}/tests/device_test.py +55 -10
  49. {bumble-0.0.202 → bumble-0.0.204}/tests/gatt_test.py +72 -42
  50. {bumble-0.0.202 → bumble-0.0.204}/tests/hci_test.py +4 -4
  51. {bumble-0.0.202 → bumble-0.0.204}/tests/hfp_test.py +2 -2
  52. {bumble-0.0.202 → bumble-0.0.204}/tests/self_test.py +1 -1
  53. bumble-0.0.204/tests/vocs_test.py +184 -0
  54. bumble-0.0.204/tools/intel_fw_download.py +130 -0
  55. bumble-0.0.204/tools/intel_util.py +154 -0
  56. bumble-0.0.202/bumble/drivers/intel.py +0 -102
  57. {bumble-0.0.202 → bumble-0.0.204}/.devcontainer/devcontainer.json +0 -0
  58. {bumble-0.0.202 → bumble-0.0.204}/.git-blame-ignore-revs +0 -0
  59. {bumble-0.0.202 → bumble-0.0.204}/.github/workflows/code-check.yml +0 -0
  60. {bumble-0.0.202 → bumble-0.0.204}/.github/workflows/codeql-analysis.yml +0 -0
  61. {bumble-0.0.202 → bumble-0.0.204}/.github/workflows/python-avatar.yml +0 -0
  62. {bumble-0.0.202 → bumble-0.0.204}/.github/workflows/python-build-test.yml +0 -0
  63. {bumble-0.0.202 → bumble-0.0.204}/.github/workflows/python-publish.yml +0 -0
  64. {bumble-0.0.202 → bumble-0.0.204}/.gitignore +0 -0
  65. {bumble-0.0.202 → bumble-0.0.204}/.vscode/settings.json +0 -0
  66. {bumble-0.0.202 → bumble-0.0.204}/CONTRIBUTING.md +0 -0
  67. {bumble-0.0.202 → bumble-0.0.204}/LICENSE +0 -0
  68. {bumble-0.0.202 → bumble-0.0.204}/README.md +0 -0
  69. {bumble-0.0.202 → bumble-0.0.204}/apps/README.md +0 -0
  70. {bumble-0.0.202 → bumble-0.0.204}/apps/__init__.py +0 -0
  71. {bumble-0.0.202 → bumble-0.0.204}/apps/ble_rpa_tool.py +0 -0
  72. {bumble-0.0.202 → bumble-0.0.204}/apps/console.py +0 -0
  73. {bumble-0.0.202 → bumble-0.0.204}/apps/controller_info.py +0 -0
  74. {bumble-0.0.202 → bumble-0.0.204}/apps/controller_loopback.py +0 -0
  75. {bumble-0.0.202 → bumble-0.0.204}/apps/controllers.py +0 -0
  76. {bumble-0.0.202 → bumble-0.0.204}/apps/device_info.py +0 -0
  77. {bumble-0.0.202 → bumble-0.0.204}/apps/gatt_dump.py +0 -0
  78. {bumble-0.0.202 → bumble-0.0.204}/apps/gg_bridge.py +0 -0
  79. {bumble-0.0.202 → bumble-0.0.204}/apps/l2cap_bridge.py +0 -0
  80. {bumble-0.0.202 → bumble-0.0.204}/apps/lea_unicast/index.html +0 -0
  81. {bumble-0.0.202 → bumble-0.0.204}/apps/lea_unicast/liblc3.wasm +0 -0
  82. {bumble-0.0.202 → bumble-0.0.204}/apps/link_relay/__init__.py +0 -0
  83. {bumble-0.0.202 → bumble-0.0.204}/apps/link_relay/link_relay.py +0 -0
  84. {bumble-0.0.202 → bumble-0.0.204}/apps/link_relay/logging.yml +0 -0
  85. {bumble-0.0.202 → bumble-0.0.204}/apps/pandora_server.py +0 -0
  86. {bumble-0.0.202 → bumble-0.0.204}/apps/player/player.py +0 -0
  87. {bumble-0.0.202 → bumble-0.0.204}/apps/rfcomm_bridge.py +0 -0
  88. {bumble-0.0.202 → bumble-0.0.204}/apps/scan.py +0 -0
  89. {bumble-0.0.202 → bumble-0.0.204}/apps/speaker/__init__.py +0 -0
  90. {bumble-0.0.202 → bumble-0.0.204}/apps/speaker/logo.svg +0 -0
  91. {bumble-0.0.202 → bumble-0.0.204}/apps/speaker/speaker.css +0 -0
  92. {bumble-0.0.202 → bumble-0.0.204}/apps/speaker/speaker.html +0 -0
  93. {bumble-0.0.202 → bumble-0.0.204}/apps/speaker/speaker.js +0 -0
  94. {bumble-0.0.202 → bumble-0.0.204}/apps/speaker/speaker.py +0 -0
  95. {bumble-0.0.202 → bumble-0.0.204}/apps/unbond.py +0 -0
  96. {bumble-0.0.202 → bumble-0.0.204}/apps/usb_probe.py +0 -0
  97. {bumble-0.0.202 → bumble-0.0.204}/bumble/__init__.py +0 -0
  98. {bumble-0.0.202 → bumble-0.0.204}/bumble/a2dp.py +0 -0
  99. {bumble-0.0.202 → bumble-0.0.204}/bumble/at.py +0 -0
  100. {bumble-0.0.202 → bumble-0.0.204}/bumble/avc.py +0 -0
  101. {bumble-0.0.202 → bumble-0.0.204}/bumble/avctp.py +0 -0
  102. {bumble-0.0.202 → bumble-0.0.204}/bumble/avdtp.py +0 -0
  103. {bumble-0.0.202 → bumble-0.0.204}/bumble/avrcp.py +0 -0
  104. {bumble-0.0.202 → bumble-0.0.204}/bumble/bridge.py +0 -0
  105. {bumble-0.0.202 → bumble-0.0.204}/bumble/codecs.py +0 -0
  106. {bumble-0.0.202 → bumble-0.0.204}/bumble/colors.py +0 -0
  107. {bumble-0.0.202 → bumble-0.0.204}/bumble/company_ids.py +0 -0
  108. {bumble-0.0.202 → bumble-0.0.204}/bumble/core.py +0 -0
  109. {bumble-0.0.202 → bumble-0.0.204}/bumble/crypto.py +0 -0
  110. {bumble-0.0.202 → bumble-0.0.204}/bumble/decoder.py +0 -0
  111. {bumble-0.0.202 → bumble-0.0.204}/bumble/drivers/__init__.py +0 -0
  112. {bumble-0.0.202 → bumble-0.0.204}/bumble/drivers/rtk.py +0 -0
  113. {bumble-0.0.202 → bumble-0.0.204}/bumble/gap.py +0 -0
  114. {bumble-0.0.202 → bumble-0.0.204}/bumble/helpers.py +0 -0
  115. {bumble-0.0.202 → bumble-0.0.204}/bumble/hid.py +0 -0
  116. {bumble-0.0.202 → bumble-0.0.204}/bumble/keys.py +0 -0
  117. {bumble-0.0.202 → bumble-0.0.204}/bumble/link.py +0 -0
  118. {bumble-0.0.202 → bumble-0.0.204}/bumble/pandora/__init__.py +0 -0
  119. {bumble-0.0.202 → bumble-0.0.204}/bumble/pandora/config.py +0 -0
  120. {bumble-0.0.202 → bumble-0.0.204}/bumble/pandora/device.py +0 -0
  121. {bumble-0.0.202 → bumble-0.0.204}/bumble/pandora/host.py +1 -1
  122. {bumble-0.0.202 → bumble-0.0.204}/bumble/pandora/l2cap.py +0 -0
  123. {bumble-0.0.202 → bumble-0.0.204}/bumble/pandora/py.typed +0 -0
  124. {bumble-0.0.202 → bumble-0.0.204}/bumble/pandora/security.py +0 -0
  125. {bumble-0.0.202 → bumble-0.0.204}/bumble/pandora/utils.py +0 -0
  126. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/__init__.py +0 -0
  127. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/ascs.py +0 -0
  128. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/asha.py +0 -0
  129. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/battery_service.py +0 -0
  130. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/cap.py +0 -0
  131. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/csip.py +0 -0
  132. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/gap.py +0 -0
  133. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/hap.py +0 -0
  134. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/le_audio.py +0 -0
  135. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/mcp.py +0 -0
  136. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/pacs.py +0 -0
  137. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/pbp.py +0 -0
  138. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/py.typed +0 -0
  139. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/tmap.py +0 -0
  140. {bumble-0.0.202 → bumble-0.0.204}/bumble/profiles/vcp.py +0 -0
  141. {bumble-0.0.202 → bumble-0.0.204}/bumble/py.typed +0 -0
  142. {bumble-0.0.202 → bumble-0.0.204}/bumble/rfcomm.py +0 -0
  143. {bumble-0.0.202 → bumble-0.0.204}/bumble/rtp.py +0 -0
  144. {bumble-0.0.202 → bumble-0.0.204}/bumble/snoop.py +0 -0
  145. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/__init__.py +0 -0
  146. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/android_emulator.py +0 -0
  147. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/android_netsim.py +0 -0
  148. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/common.py +0 -0
  149. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/file.py +0 -0
  150. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/__init__.py +0 -0
  151. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/emulated_bluetooth_device_pb2.py +0 -0
  152. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/emulated_bluetooth_device_pb2.pyi +0 -0
  153. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/emulated_bluetooth_device_pb2_grpc.py +0 -0
  154. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/emulated_bluetooth_packets_pb2.py +0 -0
  155. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/emulated_bluetooth_packets_pb2.pyi +0 -0
  156. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/emulated_bluetooth_packets_pb2_grpc.py +0 -0
  157. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/emulated_bluetooth_pb2.py +0 -0
  158. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/emulated_bluetooth_pb2.pyi +0 -0
  159. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/emulated_bluetooth_pb2_grpc.py +0 -0
  160. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/emulated_bluetooth_vhci_pb2.py +0 -0
  161. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/emulated_bluetooth_vhci_pb2.pyi +0 -0
  162. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/emulated_bluetooth_vhci_pb2_grpc.py +0 -0
  163. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/grpc_endpoint_description_pb2.py +0 -0
  164. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/grpc_endpoint_description_pb2.pyi +0 -0
  165. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/grpc_endpoint_description_pb2_grpc.py +0 -0
  166. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/__init__.py +0 -0
  167. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/common_pb2.py +0 -0
  168. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/common_pb2.pyi +0 -0
  169. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/common_pb2_grpc.py +0 -0
  170. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/hci_packet_pb2.py +0 -0
  171. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/hci_packet_pb2.pyi +0 -0
  172. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/hci_packet_pb2_grpc.py +0 -0
  173. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/model_pb2.py +0 -0
  174. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/model_pb2.pyi +0 -0
  175. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/model_pb2_grpc.py +0 -0
  176. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/packet_streamer_pb2.py +0 -0
  177. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/packet_streamer_pb2.pyi +0 -0
  178. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/packet_streamer_pb2_grpc.py +0 -0
  179. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/startup_pb2.py +0 -0
  180. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/startup_pb2.pyi +0 -0
  181. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/netsim/startup_pb2_grpc.py +0 -0
  182. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/rootcanal/__init__.py +0 -0
  183. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/rootcanal/configuration_pb2.py +0 -0
  184. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/rootcanal/configuration_pb2.pyi +0 -0
  185. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/grpc_protobuf/rootcanal/configuration_pb2_grpc.py +0 -0
  186. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/hci_socket.py +0 -0
  187. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/pty.py +0 -0
  188. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/py.typed +0 -0
  189. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/pyusb.py +0 -0
  190. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/serial.py +0 -0
  191. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/tcp_client.py +0 -0
  192. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/tcp_server.py +0 -0
  193. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/udp.py +0 -0
  194. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/unix.py +0 -0
  195. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/vhci.py +0 -0
  196. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/ws_client.py +0 -0
  197. {bumble-0.0.202 → bumble-0.0.204}/bumble/transport/ws_server.py +0 -0
  198. {bumble-0.0.202 → bumble-0.0.204}/bumble/vendor/__init__.py +0 -0
  199. {bumble-0.0.202 → bumble-0.0.204}/bumble/vendor/android/__init__.py +0 -0
  200. {bumble-0.0.202 → bumble-0.0.204}/bumble/vendor/zephyr/__init__.py +0 -0
  201. {bumble-0.0.202 → bumble-0.0.204}/bumble/vendor/zephyr/hci.py +0 -0
  202. {bumble-0.0.202 → bumble-0.0.204}/bumble.egg-info/dependency_links.txt +0 -0
  203. {bumble-0.0.202 → bumble-0.0.204}/bumble.egg-info/top_level.txt +0 -0
  204. {bumble-0.0.202 → bumble-0.0.204}/docs/README.md +0 -0
  205. {bumble-0.0.202 → bumble-0.0.204}/docs/images/favicon.ico +0 -0
  206. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo.png +0 -0
  207. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo.svg +0 -0
  208. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo.vectornator/Artboard0.json +0 -0
  209. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo.vectornator/Document.json +0 -0
  210. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo.vectornator/Manifest.json +0 -0
  211. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo.vectornator/Thumbnail.png +0 -0
  212. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo.vectornator/UndoHistory.json +0 -0
  213. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo_framed.png +0 -0
  214. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo_framed.svg +0 -0
  215. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo_framed.vectornator/Artboard0.json +0 -0
  216. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo_framed.vectornator/Document.json +0 -0
  217. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo_framed.vectornator/Manifest.json +0 -0
  218. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo_framed.vectornator/Thumbnail.png +0 -0
  219. {bumble-0.0.202 → bumble-0.0.204}/docs/images/logo_framed.vectornator/UndoHistory.json +0 -0
  220. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/mkdocs.yml +0 -0
  221. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/requirements.txt +0 -0
  222. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/api/examples.md +0 -0
  223. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/api/guide.md +0 -0
  224. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/api/reference.md +0 -0
  225. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/apps_and_tools/bench.md +0 -0
  226. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/apps_and_tools/console.md +0 -0
  227. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/apps_and_tools/gatt_dump.md +0 -0
  228. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/apps_and_tools/gg_bridge.md +0 -0
  229. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/apps_and_tools/hci_bridge.md +0 -0
  230. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/apps_and_tools/index.md +0 -0
  231. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/apps_and_tools/link_relay.md +0 -0
  232. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/apps_and_tools/pair.md +0 -0
  233. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/apps_and_tools/show.md +0 -0
  234. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/apps_and_tools/speaker.md +0 -0
  235. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/apps_and_tools/unbond.md +0 -0
  236. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/apps_and_tools/usb_probe.md +0 -0
  237. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/components/controller.md +0 -0
  238. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/components/gatt.md +0 -0
  239. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/components/host.md +0 -0
  240. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/components/security_manager.md +0 -0
  241. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/development/code_style.md +0 -0
  242. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/development/contributing.md +0 -0
  243. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/development/python_environments.md +0 -0
  244. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/downloads/zephyr/hci_usb.zip +0 -0
  245. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/drivers/realtek.md +0 -0
  246. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/examples/index.md +0 -0
  247. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/extras/android_bt_bench.md +0 -0
  248. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/extras/android_remote_hci.md +0 -0
  249. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/extras/index.md +0 -0
  250. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/getting_started.md +0 -0
  251. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hardware/index.md +0 -0
  252. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/index.md +0 -0
  253. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/index.toml +0 -0
  254. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/bumble.js +0 -0
  255. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/heart_rate_monitor/heart_rate_monitor.html +0 -0
  256. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/heart_rate_monitor/heart_rate_monitor.js +0 -0
  257. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/heart_rate_monitor/heart_rate_monitor.py +0 -0
  258. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/scanner/scanner.css +0 -0
  259. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/scanner/scanner.html +0 -0
  260. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/scanner/scanner.js +0 -0
  261. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/scanner/scanner.py +0 -0
  262. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/speaker/logo.svg +0 -0
  263. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/speaker/speaker.css +0 -0
  264. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/speaker/speaker.html +0 -0
  265. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/speaker/speaker.js +0 -0
  266. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/speaker/speaker.py +0 -0
  267. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/hive/web/ui.js +0 -0
  268. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/images/bumble_layers.svg +0 -0
  269. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/images/console_screenshot.png +0 -0
  270. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/images/favicon.ico +0 -0
  271. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/images/logo.png +0 -0
  272. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/images/logo_framed.png +0 -0
  273. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/images/speaker_screenshot.png +0 -0
  274. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/index.md +0 -0
  275. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/platforms/android.md +0 -0
  276. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/platforms/index.md +0 -0
  277. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/platforms/linux.md +0 -0
  278. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/platforms/macos.md +0 -0
  279. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/platforms/windows.md +0 -0
  280. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/platforms/winusb_driver.png +0 -0
  281. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/platforms/zephyr.md +0 -0
  282. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/transports/android_emulator.md +0 -0
  283. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/transports/file.md +0 -0
  284. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/transports/hci_socket.md +0 -0
  285. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/transports/index.md +0 -0
  286. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/transports/pty.md +0 -0
  287. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/transports/serial.md +0 -0
  288. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/transports/tcp_client.md +0 -0
  289. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/transports/tcp_server.md +0 -0
  290. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/transports/udp.md +0 -0
  291. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/transports/usb.md +0 -0
  292. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/transports/vhci.md +0 -0
  293. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/transports/ws_client.md +0 -0
  294. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/transports/ws_server.md +0 -0
  295. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/use_cases/index.md +0 -0
  296. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/use_cases/use_case_1.md +0 -0
  297. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/use_cases/use_case_2.md +0 -0
  298. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/use_cases/use_case_3.md +0 -0
  299. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/use_cases/use_case_4.md +0 -0
  300. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/use_cases/use_case_5.md +0 -0
  301. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/src/use_cases/use_case_6.md +0 -0
  302. {bumble-0.0.202 → bumble-0.0.204}/docs/mkdocs/theme/partials/footer.html +0 -0
  303. {bumble-0.0.202 → bumble-0.0.204}/environment.yml +0 -0
  304. {bumble-0.0.202 → bumble-0.0.204}/examples/README.md +0 -0
  305. {bumble-0.0.202 → bumble-0.0.204}/examples/a2dp_sink1.json +0 -0
  306. {bumble-0.0.202 → bumble-0.0.204}/examples/asha_sink.html +0 -0
  307. {bumble-0.0.202 → bumble-0.0.204}/examples/asha_sink1.json +0 -0
  308. {bumble-0.0.202 → bumble-0.0.204}/examples/asha_sink2.json +0 -0
  309. {bumble-0.0.202 → bumble-0.0.204}/examples/async_runner.py +0 -0
  310. {bumble-0.0.202 → bumble-0.0.204}/examples/avrcp_as_sink.html +0 -0
  311. {bumble-0.0.202 → bumble-0.0.204}/examples/battery_client.py +0 -0
  312. {bumble-0.0.202 → bumble-0.0.204}/examples/battery_server.py +0 -0
  313. {bumble-0.0.202 → bumble-0.0.204}/examples/classic1.json +0 -0
  314. {bumble-0.0.202 → bumble-0.0.204}/examples/classic2.json +0 -0
  315. {bumble-0.0.202 → bumble-0.0.204}/examples/device1.json +0 -0
  316. {bumble-0.0.202 → bumble-0.0.204}/examples/device2.json +0 -0
  317. {bumble-0.0.202 → bumble-0.0.204}/examples/device3.json +0 -0
  318. {bumble-0.0.202 → bumble-0.0.204}/examples/device_information_client.py +0 -0
  319. {bumble-0.0.202 → bumble-0.0.204}/examples/device_information_server.py +0 -0
  320. {bumble-0.0.202 → bumble-0.0.204}/examples/device_with_rpa.json +0 -0
  321. {bumble-0.0.202 → bumble-0.0.204}/examples/heart_rate_client.py +0 -0
  322. {bumble-0.0.202 → bumble-0.0.204}/examples/heart_rate_server.py +0 -0
  323. {bumble-0.0.202 → bumble-0.0.204}/examples/hfp_gateway.html +0 -0
  324. {bumble-0.0.202 → bumble-0.0.204}/examples/hfp_gateway.json +0 -0
  325. {bumble-0.0.202 → bumble-0.0.204}/examples/hfp_handsfree.html +0 -0
  326. {bumble-0.0.202 → bumble-0.0.204}/examples/hfp_handsfree.json +0 -0
  327. {bumble-0.0.202 → bumble-0.0.204}/examples/hid_key_map.py +0 -0
  328. {bumble-0.0.202 → bumble-0.0.204}/examples/hid_keyboard.json +0 -0
  329. {bumble-0.0.202 → bumble-0.0.204}/examples/hid_report_parser.py +0 -0
  330. {bumble-0.0.202 → bumble-0.0.204}/examples/keyboard.html +0 -0
  331. {bumble-0.0.202 → bumble-0.0.204}/examples/keyboard.json +0 -0
  332. {bumble-0.0.202 → bumble-0.0.204}/examples/leaudio.json +0 -0
  333. {bumble-0.0.202 → bumble-0.0.204}/examples/leaudio_with_classic.json +0 -0
  334. {bumble-0.0.202 → bumble-0.0.204}/examples/mcp_server.html +0 -0
  335. {bumble-0.0.202 → bumble-0.0.204}/examples/mobly/bench/one_device_bench_test.py +0 -0
  336. {bumble-0.0.202 → bumble-0.0.204}/examples/mobly/bench/sample_config.yml +0 -0
  337. {bumble-0.0.202 → bumble-0.0.204}/examples/mobly/bench/two_devices_bench_test.py +0 -0
  338. {bumble-0.0.202 → bumble-0.0.204}/examples/run_a2dp_info.py +0 -0
  339. {bumble-0.0.202 → bumble-0.0.204}/examples/run_a2dp_sink.py +0 -0
  340. {bumble-0.0.202 → bumble-0.0.204}/examples/run_a2dp_source.py +0 -0
  341. {bumble-0.0.202 → bumble-0.0.204}/examples/run_advertiser.py +0 -0
  342. {bumble-0.0.202 → bumble-0.0.204}/examples/run_asha_sink.py +0 -0
  343. {bumble-0.0.202 → bumble-0.0.204}/examples/run_avrcp.py +0 -0
  344. {bumble-0.0.202 → bumble-0.0.204}/examples/run_cig_setup.py +0 -0
  345. {bumble-0.0.202 → bumble-0.0.204}/examples/run_classic_connect.py +0 -0
  346. {bumble-0.0.202 → bumble-0.0.204}/examples/run_classic_discoverable.py +0 -0
  347. {bumble-0.0.202 → bumble-0.0.204}/examples/run_classic_discovery.py +0 -0
  348. {bumble-0.0.202 → bumble-0.0.204}/examples/run_connect_and_encrypt.py +0 -0
  349. {bumble-0.0.202 → bumble-0.0.204}/examples/run_controller.py +0 -0
  350. {bumble-0.0.202 → bumble-0.0.204}/examples/run_controller_with_scanner.py +0 -0
  351. {bumble-0.0.202 → bumble-0.0.204}/examples/run_csis_servers.py +0 -0
  352. {bumble-0.0.202 → bumble-0.0.204}/examples/run_device_with_snooper.py +0 -0
  353. {bumble-0.0.202 → bumble-0.0.204}/examples/run_esco_connection.py +0 -0
  354. {bumble-0.0.202 → bumble-0.0.204}/examples/run_extended_advertiser.py +0 -0
  355. {bumble-0.0.202 → bumble-0.0.204}/examples/run_extended_advertiser_2.py +0 -0
  356. {bumble-0.0.202 → bumble-0.0.204}/examples/run_gatt_client.py +0 -0
  357. {bumble-0.0.202 → bumble-0.0.204}/examples/run_gatt_client_and_server.py +0 -0
  358. {bumble-0.0.202 → bumble-0.0.204}/examples/run_hap_server.py +0 -0
  359. {bumble-0.0.202 → bumble-0.0.204}/examples/run_hfp_handsfree.py +0 -0
  360. {bumble-0.0.202 → bumble-0.0.204}/examples/run_hid_device.py +0 -0
  361. {bumble-0.0.202 → bumble-0.0.204}/examples/run_hid_host.py +0 -0
  362. {bumble-0.0.202 → bumble-0.0.204}/examples/run_mcp_client.py +0 -0
  363. {bumble-0.0.202 → bumble-0.0.204}/examples/run_notifier.py +0 -0
  364. {bumble-0.0.202 → bumble-0.0.204}/examples/run_rfcomm_client.py +0 -0
  365. {bumble-0.0.202 → bumble-0.0.204}/examples/run_rfcomm_server.py +0 -0
  366. {bumble-0.0.202 → bumble-0.0.204}/examples/run_scanner.py +0 -0
  367. {bumble-0.0.202 → bumble-0.0.204}/examples/run_vcp_renderer.py +0 -0
  368. {bumble-0.0.202 → bumble-0.0.204}/examples/speaker.json +0 -0
  369. {bumble-0.0.202 → bumble-0.0.204}/examples/vcp_renderer.html +0 -0
  370. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/.gitignore +0 -0
  371. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/.gitignore +0 -0
  372. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/build.gradle.kts +0 -0
  373. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/proguard-rules.pro +0 -0
  374. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/AndroidManifest.xml +0 -0
  375. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/ic_launcher-playstore.png +0 -0
  376. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/AutomationSnippet.java +0 -0
  377. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/IoClient.kt +0 -0
  378. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/L2capClient.kt +0 -0
  379. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/L2capServer.kt +0 -0
  380. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/MainActivity.kt +0 -0
  381. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Mode.kt +0 -0
  382. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Model.kt +0 -0
  383. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Packet.kt +0 -0
  384. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Pinger.kt +0 -0
  385. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Ponger.kt +0 -0
  386. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Receiver.kt +0 -0
  387. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/RfcommClient.kt +0 -0
  388. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/RfcommServer.kt +0 -0
  389. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Scan.kt +0 -0
  390. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Sender.kt +0 -0
  391. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/SocketClient.kt +0 -0
  392. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/SocketServer.kt +0 -0
  393. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/ui/theme/Color.kt +0 -0
  394. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/ui/theme/Theme.kt +0 -0
  395. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/ui/theme/Type.kt +0 -0
  396. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/drawable/ic_launcher_background.xml +0 -0
  397. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/drawable/ic_launcher_foreground.xml +0 -0
  398. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -0
  399. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -0
  400. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp +0 -0
  401. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  402. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp +0 -0
  403. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  404. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp +0 -0
  405. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  406. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp +0 -0
  407. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  408. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp +0 -0
  409. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  410. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/values/colors.xml +0 -0
  411. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/values/ic_launcher_background.xml +0 -0
  412. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/values/strings.xml +0 -0
  413. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/values/themes.xml +0 -0
  414. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/xml/backup_rules.xml +0 -0
  415. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/app/src/main/res/xml/data_extraction_rules.xml +0 -0
  416. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/build.gradle.kts +0 -0
  417. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/gradle/libs.versions.toml +0 -0
  418. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/gradle/wrapper/gradle-wrapper.jar +0 -0
  419. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/gradle/wrapper/gradle-wrapper.properties +0 -0
  420. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/gradle.properties +0 -0
  421. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/gradlew +0 -0
  422. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/gradlew.bat +0 -0
  423. {bumble-0.0.202 → bumble-0.0.204}/extras/android/BtBench/settings.gradle.kts +0 -0
  424. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/.gitignore +0 -0
  425. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/.gitignore +0 -0
  426. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/build.gradle.kts +0 -0
  427. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/proguard-rules.pro +0 -0
  428. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/AndroidManifest.xml +0 -0
  429. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/aidl/android/hardware/bluetooth/IBluetoothHci.aidl +0 -0
  430. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/aidl/android/hardware/bluetooth/IBluetoothHciCallbacks.aidl +0 -0
  431. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/aidl/android/hardware/bluetooth/Status.aidl +0 -0
  432. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/hidl/bluetooth/1.1/IBluetoothHci.hal +0 -0
  433. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/hidl/bluetooth/1.1/IBluetoothHciCallbacks.hal +0 -0
  434. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/ic_launcher-playstore.png +0 -0
  435. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/IBluetoothHci.java +0 -0
  436. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/IBluetoothHciCallbacks.java +0 -0
  437. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/Status.java +0 -0
  438. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/V1_0/IBluetoothHci.java +0 -0
  439. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/V1_0/IBluetoothHciCallbacks.java +0 -0
  440. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/V1_0/Status.java +0 -0
  441. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/V1_1/IBluetoothHci.java +0 -0
  442. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/android/hardware/bluetooth/V1_1/IBluetoothHciCallbacks.java +0 -0
  443. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/CommandLineInterface.kt +0 -0
  444. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/HciHal.java +0 -0
  445. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/HciHalCallback.java +0 -0
  446. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/HciPacket.java +0 -0
  447. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/HciParser.java +0 -0
  448. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/HciProxy.java +0 -0
  449. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/HciServer.java +0 -0
  450. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/MainActivity.kt +0 -0
  451. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/ui/theme/Color.kt +0 -0
  452. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/ui/theme/Theme.kt +0 -0
  453. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/java/com/github/google/bumble/remotehci/ui/theme/Type.kt +0 -0
  454. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -0
  455. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -0
  456. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  457. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp +0 -0
  458. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  459. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  460. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp +0 -0
  461. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  462. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  463. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp +0 -0
  464. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  465. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  466. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp +0 -0
  467. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  468. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  469. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp +0 -0
  470. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  471. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/values/colors.xml +0 -0
  472. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/values/ic_launcher_background.xml +0 -0
  473. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/values/strings.xml +0 -0
  474. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/values/themes.xml +0 -0
  475. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/xml/backup_rules.xml +0 -0
  476. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/app/src/main/res/xml/data_extraction_rules.xml +0 -0
  477. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/build.gradle.kts +0 -0
  478. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/gradle/libs.versions.toml +0 -0
  479. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/gradle/wrapper/gradle-wrapper.jar +0 -0
  480. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/gradle/wrapper/gradle-wrapper.properties +0 -0
  481. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/gradle.properties +0 -0
  482. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/gradlew +0 -0
  483. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/gradlew.bat +0 -0
  484. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/.gitignore +0 -0
  485. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/build.gradle.kts +0 -0
  486. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/consumer-rules.pro +0 -0
  487. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/proguard-rules.pro +0 -0
  488. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/src/main/AndroidManifest.xml +0 -0
  489. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/src/main/java/android/internal/hidl/base/V1_0/DebugInfo.java +0 -0
  490. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/src/main/java/android/internal/hidl/base/V1_0/IBase.java +0 -0
  491. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/src/main/java/android/os/HidlSupport.java +0 -0
  492. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/src/main/java/android/os/HwBinder.java +0 -0
  493. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/src/main/java/android/os/HwBlob.java +0 -0
  494. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/src/main/java/android/os/HwParcel.java +0 -0
  495. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/src/main/java/android/os/IHwBinder.java +0 -0
  496. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/src/main/java/android/os/IHwInterface.java +0 -0
  497. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/src/main/java/android/os/NativeHandle.java +0 -0
  498. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/lib/src/main/java/android/os/ServiceManager.java +0 -0
  499. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/scripts/generate_java_from_aidl.sh +0 -0
  500. {bumble-0.0.202 → bumble-0.0.204}/extras/android/RemoteHCI/settings.gradle.kts +0 -0
  501. {bumble-0.0.202 → bumble-0.0.204}/noxfile.py +0 -0
  502. {bumble-0.0.202 → bumble-0.0.204}/pyproject.toml +0 -0
  503. {bumble-0.0.202 → bumble-0.0.204}/rust/.gitignore +0 -0
  504. {bumble-0.0.202 → bumble-0.0.204}/rust/CHANGELOG.md +0 -0
  505. {bumble-0.0.202 → bumble-0.0.204}/rust/Cargo.lock +0 -0
  506. {bumble-0.0.202 → bumble-0.0.204}/rust/Cargo.toml +0 -0
  507. {bumble-0.0.202 → bumble-0.0.204}/rust/README.md +0 -0
  508. {bumble-0.0.202 → bumble-0.0.204}/rust/examples/battery_client.rs +0 -0
  509. {bumble-0.0.202 → bumble-0.0.204}/rust/examples/broadcast.rs +0 -0
  510. {bumble-0.0.202 → bumble-0.0.204}/rust/examples/scanner.rs +0 -0
  511. {bumble-0.0.202 → bumble-0.0.204}/rust/pytests/assigned_numbers.rs +0 -0
  512. {bumble-0.0.202 → bumble-0.0.204}/rust/pytests/pytests.rs +0 -0
  513. {bumble-0.0.202 → bumble-0.0.204}/rust/pytests/wrapper/drivers.rs +0 -0
  514. {bumble-0.0.202 → bumble-0.0.204}/rust/pytests/wrapper/hci.rs +0 -0
  515. {bumble-0.0.202 → bumble-0.0.204}/rust/pytests/wrapper/mod.rs +0 -0
  516. {bumble-0.0.202 → bumble-0.0.204}/rust/pytests/wrapper/transport.rs +0 -0
  517. {bumble-0.0.202 → bumble-0.0.204}/rust/resources/test/firmware/realtek/README.md +0 -0
  518. {bumble-0.0.202 → bumble-0.0.204}/rust/resources/test/firmware/realtek/rtl8723b_fw_structure.bin +0 -0
  519. {bumble-0.0.202 → bumble-0.0.204}/rust/resources/test/firmware/realtek/rtl8761bu_fw_structure.bin +0 -0
  520. {bumble-0.0.202 → bumble-0.0.204}/rust/src/adv.rs +0 -0
  521. {bumble-0.0.202 → bumble-0.0.204}/rust/src/cli/firmware/mod.rs +0 -0
  522. {bumble-0.0.202 → bumble-0.0.204}/rust/src/cli/firmware/rtk.rs +0 -0
  523. {bumble-0.0.202 → bumble-0.0.204}/rust/src/cli/l2cap/client_bridge.rs +0 -0
  524. {bumble-0.0.202 → bumble-0.0.204}/rust/src/cli/l2cap/mod.rs +0 -0
  525. {bumble-0.0.202 → bumble-0.0.204}/rust/src/cli/l2cap/server_bridge.rs +0 -0
  526. {bumble-0.0.202 → bumble-0.0.204}/rust/src/cli/mod.rs +0 -0
  527. {bumble-0.0.202 → bumble-0.0.204}/rust/src/cli/usb/mod.rs +0 -0
  528. {bumble-0.0.202 → bumble-0.0.204}/rust/src/internal/drivers/mod.rs +0 -0
  529. {bumble-0.0.202 → bumble-0.0.204}/rust/src/internal/drivers/rtk.rs +0 -0
  530. {bumble-0.0.202 → bumble-0.0.204}/rust/src/internal/hci/mod.rs +0 -0
  531. {bumble-0.0.202 → bumble-0.0.204}/rust/src/internal/hci/packets.pdl +0 -0
  532. {bumble-0.0.202 → bumble-0.0.204}/rust/src/internal/hci/tests.rs +0 -0
  533. {bumble-0.0.202 → bumble-0.0.204}/rust/src/internal/mod.rs +0 -0
  534. {bumble-0.0.202 → bumble-0.0.204}/rust/src/lib.rs +0 -0
  535. {bumble-0.0.202 → bumble-0.0.204}/rust/src/main.rs +0 -0
  536. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/assigned_numbers/company_ids.rs +0 -0
  537. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/assigned_numbers/mod.rs +0 -0
  538. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/assigned_numbers/services.rs +0 -0
  539. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/common.rs +0 -0
  540. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/controller.rs +0 -0
  541. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/core.rs +0 -0
  542. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/device/mod.rs +0 -0
  543. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/device/tests.rs +0 -0
  544. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/drivers/mod.rs +0 -0
  545. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/drivers/rtk.rs +0 -0
  546. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/gatt_client.rs +0 -0
  547. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/host.rs +0 -0
  548. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/l2cap.rs +0 -0
  549. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/link.rs +0 -0
  550. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/logging.rs +0 -0
  551. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/mod.rs +0 -0
  552. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/profile.rs +0 -0
  553. {bumble-0.0.202 → bumble-0.0.204}/rust/src/wrapper/transport.rs +0 -0
  554. {bumble-0.0.202 → bumble-0.0.204}/rust/tools/file_header.rs +0 -0
  555. {bumble-0.0.202 → bumble-0.0.204}/rust/tools/gen_assigned_numbers.rs +0 -0
  556. {bumble-0.0.202 → bumble-0.0.204}/scripts/process_android_emulator_protos.sh +0 -0
  557. {bumble-0.0.202 → bumble-0.0.204}/scripts/process_android_netsim_protos.sh +0 -0
  558. {bumble-0.0.202 → bumble-0.0.204}/setup.py +0 -0
  559. {bumble-0.0.202 → bumble-0.0.204}/tasks.py +0 -0
  560. {bumble-0.0.202 → bumble-0.0.204}/tests/__init__.py +0 -0
  561. {bumble-0.0.202 → bumble-0.0.204}/tests/a2dp_test.py +0 -0
  562. {bumble-0.0.202 → bumble-0.0.204}/tests/asha_test.py +0 -0
  563. {bumble-0.0.202 → bumble-0.0.204}/tests/at_test.py +0 -0
  564. {bumble-0.0.202 → bumble-0.0.204}/tests/avdtp_test.py +0 -0
  565. {bumble-0.0.202 → bumble-0.0.204}/tests/avrcp_test.py +0 -0
  566. {bumble-0.0.202 → bumble-0.0.204}/tests/bass_test.py +0 -0
  567. {bumble-0.0.202 → bumble-0.0.204}/tests/cap_test.py +0 -0
  568. {bumble-0.0.202 → bumble-0.0.204}/tests/codecs_test.py +0 -0
  569. {bumble-0.0.202 → bumble-0.0.204}/tests/core_test.py +0 -0
  570. {bumble-0.0.202 → bumble-0.0.204}/tests/csip_test.py +0 -0
  571. {bumble-0.0.202 → bumble-0.0.204}/tests/decoder_test.py +0 -0
  572. {bumble-0.0.202 → bumble-0.0.204}/tests/g722_sample.g722 +0 -0
  573. {bumble-0.0.202 → bumble-0.0.204}/tests/hap_test.py +0 -0
  574. {bumble-0.0.202 → bumble-0.0.204}/tests/hci_data_001.bin +0 -0
  575. {bumble-0.0.202 → bumble-0.0.204}/tests/host_test.py +0 -0
  576. {bumble-0.0.202 → bumble-0.0.204}/tests/import_test.py +0 -0
  577. {bumble-0.0.202 → bumble-0.0.204}/tests/keystore_test.py +0 -0
  578. {bumble-0.0.202 → bumble-0.0.204}/tests/l2cap_test.py +0 -0
  579. {bumble-0.0.202 → bumble-0.0.204}/tests/le_audio_test.py +0 -0
  580. {bumble-0.0.202 → bumble-0.0.204}/tests/mcp_test.py +0 -0
  581. {bumble-0.0.202 → bumble-0.0.204}/tests/pytest.ini +0 -0
  582. {bumble-0.0.202 → bumble-0.0.204}/tests/rfcomm_test.py +0 -0
  583. {bumble-0.0.202 → bumble-0.0.204}/tests/sdp_test.py +0 -0
  584. {bumble-0.0.202 → bumble-0.0.204}/tests/smp_test.py +0 -0
  585. {bumble-0.0.202 → bumble-0.0.204}/tests/test_utils.py +0 -0
  586. {bumble-0.0.202 → bumble-0.0.204}/tests/transport_tcp_server_test.py +0 -0
  587. {bumble-0.0.202 → bumble-0.0.204}/tests/transport_test.py +0 -0
  588. {bumble-0.0.202 → bumble-0.0.204}/tests/utils_test.py +0 -0
  589. {bumble-0.0.202 → bumble-0.0.204}/tests/vcp_test.py +0 -0
  590. {bumble-0.0.202 → bumble-0.0.204}/tools/__init__.py +0 -0
  591. {bumble-0.0.202 → bumble-0.0.204}/tools/generate_company_id_list.py +0 -0
  592. {bumble-0.0.202 → bumble-0.0.204}/tools/rtk_fw_download.py +0 -0
  593. {bumble-0.0.202 → bumble-0.0.204}/tools/rtk_util.py +0 -0
  594. {bumble-0.0.202 → bumble-0.0.204}/web/.gitignore +0 -0
  595. {bumble-0.0.202 → bumble-0.0.204}/web/README.md +0 -0
  596. {bumble-0.0.202 → bumble-0.0.204}/web/bumble.js +0 -0
  597. {bumble-0.0.202 → bumble-0.0.204}/web/favicon.ico +0 -0
  598. {bumble-0.0.202 → bumble-0.0.204}/web/heart_rate_monitor/heart_rate_monitor.html +0 -0
  599. {bumble-0.0.202 → bumble-0.0.204}/web/heart_rate_monitor/heart_rate_monitor.js +0 -0
  600. {bumble-0.0.202 → bumble-0.0.204}/web/heart_rate_monitor/heart_rate_monitor.py +0 -0
  601. {bumble-0.0.202 → bumble-0.0.204}/web/scanner/scanner.css +0 -0
  602. {bumble-0.0.202 → bumble-0.0.204}/web/scanner/scanner.html +0 -0
  603. {bumble-0.0.202 → bumble-0.0.204}/web/scanner/scanner.js +0 -0
  604. {bumble-0.0.202 → bumble-0.0.204}/web/scanner/scanner.py +0 -0
  605. {bumble-0.0.202 → bumble-0.0.204}/web/speaker/logo.svg +0 -0
  606. {bumble-0.0.202 → bumble-0.0.204}/web/speaker/speaker.css +0 -0
  607. {bumble-0.0.202 → bumble-0.0.204}/web/speaker/speaker.html +0 -0
  608. {bumble-0.0.202 → bumble-0.0.204}/web/speaker/speaker.js +0 -0
  609. {bumble-0.0.202 → bumble-0.0.204}/web/speaker/speaker.py +0 -0
  610. {bumble-0.0.202 → bumble-0.0.204}/web/ui.js +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bumble
3
- Version: 0.0.202
3
+ Version: 0.0.204
4
4
  Summary: Bluetooth Stack for Apps, Emulation, Test and Experimentation
5
5
  Home-page: https://github.com/google/bumble
6
6
  Author: Google
@@ -25,7 +25,7 @@ Requires-Dist: pyee>=8.2.2
25
25
  Requires-Dist: pyserial-asyncio>=0.5; platform_system != "Emscripten"
26
26
  Requires-Dist: pyserial>=3.5; platform_system != "Emscripten"
27
27
  Requires-Dist: pyusb>=1.2; platform_system != "Emscripten"
28
- Requires-Dist: websockets>=12.0; platform_system != "Emscripten"
28
+ Requires-Dist: websockets==13.1; platform_system != "Emscripten"
29
29
  Provides-Extra: build
30
30
  Requires-Dist: build>=0.7; extra == "build"
31
31
  Provides-Extra: test
@@ -60,7 +60,7 @@ AURACAST_DEFAULT_ATT_MTU = 256
60
60
  class BroadcastScanner(pyee.EventEmitter):
61
61
  @dataclasses.dataclass
62
62
  class Broadcast(pyee.EventEmitter):
63
- name: str
63
+ name: str | None
64
64
  sync: bumble.device.PeriodicAdvertisingSync
65
65
  rssi: int = 0
66
66
  public_broadcast_announcement: Optional[
@@ -135,7 +135,8 @@ class BroadcastScanner(pyee.EventEmitter):
135
135
  self.sync.advertiser_address,
136
136
  color(self.sync.state.name, 'green'),
137
137
  )
138
- print(f' {color("Name", "cyan")}: {self.name}')
138
+ if self.name is not None:
139
+ print(f' {color("Name", "cyan")}: {self.name}')
139
140
  if self.appearance:
140
141
  print(f' {color("Appearance", "cyan")}: {str(self.appearance)}')
141
142
  print(f' {color("RSSI", "cyan")}: {self.rssi}')
@@ -174,7 +175,7 @@ class BroadcastScanner(pyee.EventEmitter):
174
175
  print(color(' Codec ID:', 'yellow'))
175
176
  print(
176
177
  color(' Coding Format: ', 'green'),
177
- subgroup.codec_id.coding_format.name,
178
+ subgroup.codec_id.codec_id.name,
178
179
  )
179
180
  print(
180
181
  color(' Company ID: ', 'green'),
@@ -274,13 +275,24 @@ class BroadcastScanner(pyee.EventEmitter):
274
275
  await self.device.stop_scanning()
275
276
 
276
277
  def on_advertisement(self, advertisement: bumble.device.Advertisement) -> None:
277
- if (
278
- broadcast_name := advertisement.data.get(
279
- bumble.core.AdvertisingData.BROADCAST_NAME
278
+ if not (
279
+ ads := advertisement.data.get_all(
280
+ bumble.core.AdvertisingData.SERVICE_DATA_16_BIT_UUID
280
281
  )
281
- ) is None:
282
+ ) or not (
283
+ any(
284
+ ad
285
+ for ad in ads
286
+ if isinstance(ad, tuple)
287
+ and ad[0] == bumble.gatt.GATT_BROADCAST_AUDIO_ANNOUNCEMENT_SERVICE
288
+ )
289
+ ):
282
290
  return
283
- assert isinstance(broadcast_name, str)
291
+
292
+ broadcast_name = advertisement.data.get(
293
+ bumble.core.AdvertisingData.BROADCAST_NAME
294
+ )
295
+ assert isinstance(broadcast_name, str) or broadcast_name is None
284
296
 
285
297
  if broadcast := self.broadcasts.get(advertisement.address):
286
298
  broadcast.update(advertisement)
@@ -291,7 +303,7 @@ class BroadcastScanner(pyee.EventEmitter):
291
303
  )
292
304
 
293
305
  async def on_new_broadcast(
294
- self, name: str, advertisement: bumble.device.Advertisement
306
+ self, name: str | None, advertisement: bumble.device.Advertisement
295
307
  ) -> None:
296
308
  periodic_advertising_sync = await self.device.create_periodic_advertising_sync(
297
309
  advertiser_address=advertisement.address,
@@ -299,10 +311,7 @@ class BroadcastScanner(pyee.EventEmitter):
299
311
  sync_timeout=self.sync_timeout,
300
312
  filter_duplicates=self.filter_duplicates,
301
313
  )
302
- broadcast = self.Broadcast(
303
- name,
304
- periodic_advertising_sync,
305
- )
314
+ broadcast = self.Broadcast(name, periodic_advertising_sync)
306
315
  broadcast.update(advertisement)
307
316
  self.broadcasts[advertisement.address] = broadcast
308
317
  periodic_advertising_sync.on('loss', lambda: self.on_broadcast_loss(broadcast))
@@ -199,7 +199,7 @@ def log_stats(title, stats, precision=2):
199
199
  stats_min = min(stats)
200
200
  stats_max = max(stats)
201
201
  stats_avg = statistics.mean(stats)
202
- stats_stdev = statistics.stdev(stats)
202
+ stats_stdev = statistics.stdev(stats) if len(stats) >= 2 else 0
203
203
  logging.info(
204
204
  color(
205
205
  (
@@ -468,6 +468,7 @@ class Ping:
468
468
 
469
469
  for run in range(self.repeat + 1):
470
470
  self.done.clear()
471
+ self.ping_times = []
471
472
 
472
473
  if run > 0 and self.repeat and self.repeat_delay:
473
474
  logging.info(color(f'*** Repeat delay: {self.repeat_delay}', 'green'))
@@ -83,7 +83,7 @@ async def async_main():
83
83
  return_parameters=bytes([hci.HCI_SUCCESS]),
84
84
  )
85
85
  # Return a packet with 'respond to sender' set to True
86
- return (response.to_bytes(), True)
86
+ return (bytes(response), True)
87
87
 
88
88
  return None
89
89
 
@@ -486,7 +486,12 @@ class Speaker:
486
486
 
487
487
  def on_pdu(pdu: HCI_IsoDataPacket, ase: ascs.AseStateMachine):
488
488
  codec_config = ase.codec_specific_configuration
489
- assert isinstance(codec_config, bap.CodecSpecificConfiguration)
489
+ if (
490
+ not isinstance(codec_config, bap.CodecSpecificConfiguration)
491
+ or codec_config.frame_duration is None
492
+ or codec_config.audio_channel_allocation is None
493
+ ):
494
+ return
490
495
  pcm = decode(
491
496
  codec_config.frame_duration.us,
492
497
  codec_config.audio_channel_allocation.channel_count,
@@ -495,11 +500,17 @@ class Speaker:
495
500
  self.device.abort_on('disconnection', self.ui_server.send_audio(pcm))
496
501
 
497
502
  def on_ase_state_change(ase: ascs.AseStateMachine) -> None:
503
+ codec_config = ase.codec_specific_configuration
498
504
  if ase.state == ascs.AseStateMachine.State.STREAMING:
499
- codec_config = ase.codec_specific_configuration
500
- assert isinstance(codec_config, bap.CodecSpecificConfiguration)
501
- assert ase.cis_link
502
505
  if ase.role == ascs.AudioRole.SOURCE:
506
+ if (
507
+ not isinstance(codec_config, bap.CodecSpecificConfiguration)
508
+ or ase.cis_link is None
509
+ or codec_config.octets_per_codec_frame is None
510
+ or codec_config.frame_duration is None
511
+ or codec_config.codec_frames_per_sdu is None
512
+ ):
513
+ return
503
514
  ase.cis_link.abort_on(
504
515
  'disconnection',
505
516
  lc3_source_task(
@@ -514,10 +525,17 @@ class Speaker:
514
525
  ),
515
526
  )
516
527
  else:
528
+ if not ase.cis_link:
529
+ return
517
530
  ase.cis_link.sink = functools.partial(on_pdu, ase=ase)
518
531
  elif ase.state == ascs.AseStateMachine.State.CODEC_CONFIGURED:
519
- codec_config = ase.codec_specific_configuration
520
- assert isinstance(codec_config, bap.CodecSpecificConfiguration)
532
+ if (
533
+ not isinstance(codec_config, bap.CodecSpecificConfiguration)
534
+ or codec_config.sampling_frequency is None
535
+ or codec_config.frame_duration is None
536
+ or codec_config.audio_channel_allocation is None
537
+ ):
538
+ return
521
539
  if ase.role == ascs.AudioRole.SOURCE:
522
540
  setup_encoders(
523
541
  codec_config.sampling_frequency.hz,
@@ -373,7 +373,9 @@ async def pair(
373
373
  shared_data = (
374
374
  None
375
375
  if oob == '-'
376
- else OobData.from_ad(AdvertisingData.from_bytes(bytes.fromhex(oob)))
376
+ else OobData.from_ad(
377
+ AdvertisingData.from_bytes(bytes.fromhex(oob))
378
+ ).shared_data
377
379
  )
378
380
  legacy_context = OobLegacyContext()
379
381
  oob_contexts = PairingConfig.OobConfig(
@@ -381,16 +383,19 @@ async def pair(
381
383
  peer_data=shared_data,
382
384
  legacy_context=legacy_context,
383
385
  )
384
- oob_data = OobData(
385
- address=device.random_address,
386
- shared_data=shared_data,
387
- legacy_context=legacy_context,
388
- )
389
386
  print(color('@@@-----------------------------------', 'yellow'))
390
387
  print(color('@@@ OOB Data:', 'yellow'))
391
- print(color(f'@@@ {our_oob_context.share()}', 'yellow'))
388
+ if shared_data is None:
389
+ oob_data = OobData(
390
+ address=device.random_address, shared_data=our_oob_context.share()
391
+ )
392
+ print(
393
+ color(
394
+ f'@@@ SHARE: {bytes(oob_data.to_ad()).hex()}',
395
+ 'yellow',
396
+ )
397
+ )
392
398
  print(color(f'@@@ TK={legacy_context.tk.hex()}', 'yellow'))
393
- print(color(f'@@@ HEX: ({bytes(oob_data.to_ad()).hex()})', 'yellow'))
394
399
  print(color('@@@-----------------------------------', 'yellow'))
395
400
  else:
396
401
  oob_contexts = None
@@ -144,18 +144,18 @@ class Printer:
144
144
  help='Format of the input file',
145
145
  )
146
146
  @click.option(
147
- '--vendors',
147
+ '--vendor',
148
148
  type=click.Choice(['android', 'zephyr']),
149
149
  multiple=True,
150
150
  help='Support vendor-specific commands (list one or more)',
151
151
  )
152
152
  @click.argument('filename')
153
153
  # pylint: disable=redefined-builtin
154
- def main(format, vendors, filename):
155
- for vendor in vendors:
156
- if vendor == 'android':
154
+ def main(format, vendor, filename):
155
+ for vendor_name in vendor:
156
+ if vendor_name == 'android':
157
157
  import bumble.vendor.android.hci
158
- elif vendor == 'zephyr':
158
+ elif vendor_name == 'zephyr':
159
159
  import bumble.vendor.zephyr.hci
160
160
 
161
161
  input = open(filename, 'rb')
@@ -180,7 +180,7 @@ def main(format, vendors, filename):
180
180
  else:
181
181
  printer.print(color("[TRUNCATED]", "red"))
182
182
  except Exception as error:
183
- logger.exception()
183
+ logger.exception('')
184
184
  print(color(f'!!! {error}', 'red'))
185
185
 
186
186
 
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.0.202'
16
- __version_tuple__ = version_tuple = (0, 0, 202)
15
+ __version__ = version = '0.0.204'
16
+ __version_tuple__ = version_tuple = (0, 0, 204)
@@ -57,6 +57,7 @@ if TYPE_CHECKING:
57
57
  # pylint: disable=line-too-long
58
58
 
59
59
  ATT_CID = 0x04
60
+ ATT_PSM = 0x001F
60
61
 
61
62
  ATT_ERROR_RESPONSE = 0x01
62
63
  ATT_EXCHANGE_MTU_REQUEST = 0x02
@@ -291,9 +292,6 @@ class ATT_PDU:
291
292
  def init_from_bytes(self, pdu, offset):
292
293
  return HCI_Object.init_from_bytes(self, pdu, offset, self.fields)
293
294
 
294
- def to_bytes(self):
295
- return self.pdu
296
-
297
295
  @property
298
296
  def is_command(self):
299
297
  return ((self.op_code >> 6) & 1) == 1
@@ -303,7 +301,7 @@ class ATT_PDU:
303
301
  return ((self.op_code >> 7) & 1) == 1
304
302
 
305
303
  def __bytes__(self):
306
- return self.to_bytes()
304
+ return self.pdu
307
305
 
308
306
  def __str__(self):
309
307
  result = color(self.name, 'yellow')
@@ -759,13 +757,13 @@ class AttributeValue:
759
757
  def __init__(
760
758
  self,
761
759
  read: Union[
762
- Callable[[Optional[Connection]], bytes],
763
- Callable[[Optional[Connection]], Awaitable[bytes]],
760
+ Callable[[Optional[Connection]], Any],
761
+ Callable[[Optional[Connection]], Awaitable[Any]],
764
762
  None,
765
763
  ] = None,
766
764
  write: Union[
767
- Callable[[Optional[Connection], bytes], None],
768
- Callable[[Optional[Connection], bytes], Awaitable[None]],
765
+ Callable[[Optional[Connection], Any], None],
766
+ Callable[[Optional[Connection], Any], Awaitable[None]],
769
767
  None,
770
768
  ] = None,
771
769
  ):
@@ -824,13 +822,13 @@ class Attribute(EventEmitter):
824
822
  READ_REQUIRES_AUTHORIZATION = Permissions.READ_REQUIRES_AUTHORIZATION
825
823
  WRITE_REQUIRES_AUTHORIZATION = Permissions.WRITE_REQUIRES_AUTHORIZATION
826
824
 
827
- value: Union[bytes, AttributeValue]
825
+ value: Any
828
826
 
829
827
  def __init__(
830
828
  self,
831
829
  attribute_type: Union[str, bytes, UUID],
832
830
  permissions: Union[str, Attribute.Permissions],
833
- value: Union[str, bytes, AttributeValue] = b'',
831
+ value: Any = b'',
834
832
  ) -> None:
835
833
  EventEmitter.__init__(self)
836
834
  self.handle = 0
@@ -848,11 +846,7 @@ class Attribute(EventEmitter):
848
846
  else:
849
847
  self.type = attribute_type
850
848
 
851
- # Convert the value to a byte array
852
- if isinstance(value, str):
853
- self.value = bytes(value, 'utf-8')
854
- else:
855
- self.value = value
849
+ self.value = value
856
850
 
857
851
  def encode_value(self, value: Any) -> bytes:
858
852
  return value
@@ -895,6 +889,8 @@ class Attribute(EventEmitter):
895
889
  else:
896
890
  value = self.value
897
891
 
892
+ self.emit('read', connection, value)
893
+
898
894
  return self.encode_value(value)
899
895
 
900
896
  async def write_value(self, connection: Connection, value_bytes: bytes) -> None:
@@ -314,7 +314,7 @@ class Controller:
314
314
  f'{color("CONTROLLER -> HOST", "green")}: {packet}'
315
315
  )
316
316
  if self.host:
317
- self.host.on_packet(packet.to_bytes())
317
+ self.host.on_packet(bytes(packet))
318
318
 
319
319
  # This method allows the controller to emulate the same API as a transport source
320
320
  async def wait_for_termination(self):
@@ -1192,7 +1192,7 @@ class Controller:
1192
1192
  See Bluetooth spec Vol 4, Part E - 7.4.6 Read BD_ADDR Command
1193
1193
  '''
1194
1194
  bd_addr = (
1195
- self._public_address.to_bytes()
1195
+ bytes(self._public_address)
1196
1196
  if self._public_address is not None
1197
1197
  else bytes(6)
1198
1198
  )
@@ -1543,6 +1543,41 @@ class Controller:
1543
1543
  }
1544
1544
  return bytes([HCI_SUCCESS])
1545
1545
 
1546
+ def on_hci_le_set_advertising_set_random_address_command(self, _command):
1547
+ '''
1548
+ See Bluetooth spec Vol 4, Part E - 7.8.52 LE Set Advertising Set Random Address
1549
+ Command
1550
+ '''
1551
+ return bytes([HCI_SUCCESS])
1552
+
1553
+ def on_hci_le_set_extended_advertising_parameters_command(self, _command):
1554
+ '''
1555
+ See Bluetooth spec Vol 4, Part E - 7.8.53 LE Set Extended Advertising Parameters
1556
+ Command
1557
+ '''
1558
+ return bytes([HCI_SUCCESS, 0])
1559
+
1560
+ def on_hci_le_set_extended_advertising_data_command(self, _command):
1561
+ '''
1562
+ See Bluetooth spec Vol 4, Part E - 7.8.54 LE Set Extended Advertising Data
1563
+ Command
1564
+ '''
1565
+ return bytes([HCI_SUCCESS])
1566
+
1567
+ def on_hci_le_set_extended_scan_response_data_command(self, _command):
1568
+ '''
1569
+ See Bluetooth spec Vol 4, Part E - 7.8.55 LE Set Extended Scan Response Data
1570
+ Command
1571
+ '''
1572
+ return bytes([HCI_SUCCESS])
1573
+
1574
+ def on_hci_le_set_extended_advertising_enable_command(self, _command):
1575
+ '''
1576
+ See Bluetooth spec Vol 4, Part E - 7.8.56 LE Set Extended Advertising Enable
1577
+ Command
1578
+ '''
1579
+ return bytes([HCI_SUCCESS])
1580
+
1546
1581
  def on_hci_le_read_maximum_advertising_data_length_command(self, _command):
1547
1582
  '''
1548
1583
  See Bluetooth spec Vol 4, Part E - 7.8.57 LE Read Maximum Advertising Data
@@ -1557,6 +1592,27 @@ class Controller:
1557
1592
  '''
1558
1593
  return struct.pack('<BB', HCI_SUCCESS, 0xF0)
1559
1594
 
1595
+ def on_hci_le_set_periodic_advertising_parameters_command(self, _command):
1596
+ '''
1597
+ See Bluetooth spec Vol 4, Part E - 7.8.61 LE Set Periodic Advertising Parameters
1598
+ Command
1599
+ '''
1600
+ return bytes([HCI_SUCCESS])
1601
+
1602
+ def on_hci_le_set_periodic_advertising_data_command(self, _command):
1603
+ '''
1604
+ See Bluetooth spec Vol 4, Part E - 7.8.62 LE Set Periodic Advertising Data
1605
+ Command
1606
+ '''
1607
+ return bytes([HCI_SUCCESS])
1608
+
1609
+ def on_hci_le_set_periodic_advertising_enable_command(self, _command):
1610
+ '''
1611
+ See Bluetooth spec Vol 4, Part E - 7.8.63 LE Set Periodic Advertising Enable
1612
+ Command
1613
+ '''
1614
+ return bytes([HCI_SUCCESS])
1615
+
1560
1616
  def on_hci_le_read_transmit_power_command(self, _command):
1561
1617
  '''
1562
1618
  See Bluetooth spec Vol 4, Part E - 7.8.74 LE Read Transmit Power Command