pw_bluetooth_proxy: Avoid running drain if already running

This avoids H4 release during ACL send from triggering another drain. In
later CL this will allow us to keep mutex for entire drain to ensure
proper ordering.

Bug: 420703142
Bug: 421249712
Test: CQ, local msan, downstream tsan in CQ
Test: Tested in upcoming http://pwrev.dev/c/317139
Change-Id: I431e13ccac34e5af129205be64dabc3e52dca4a2
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/295175
Docs-Not-Needed: David Rees <drees@google.com>
Tests-Not-Needed: David Rees <drees@google.com>
Reviewed-by: Ben Lawson <benlawson@google.com>
Commit-Queue: David Rees <drees@google.com>
Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Austin Foxley <afoxley@google.com>
Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com>
2 files changed
tree: ca7db4952b5379eee6aa740d924116af5ab5e7fe
  1. .allstar/
  2. .gemini/
  3. .github/
  4. .vscode/
  5. build_overrides/
  6. docker/
  7. docs/
  8. kudzu/
  9. pw_alignment/
  10. pw_allocator/
  11. pw_analog/
  12. pw_android_toolchain/
  13. pw_arduino_build/
  14. pw_assert/
  15. pw_assert_basic/
  16. pw_assert_fuchsia/
  17. pw_assert_log/
  18. pw_assert_tokenized/
  19. pw_assert_trap/
  20. pw_assert_zephyr/
  21. pw_async/
  22. pw_async2/
  23. pw_async2_basic/
  24. pw_async2_epoll/
  25. pw_async_basic/
  26. pw_async_fuchsia/
  27. pw_atomic/
  28. pw_base64/
  29. pw_bloat/
  30. pw_blob_store/
  31. pw_bluetooth/
  32. pw_bluetooth_hci/
  33. pw_bluetooth_profiles/
  34. pw_bluetooth_proxy/
  35. pw_bluetooth_sapphire/
  36. pw_boot/
  37. pw_boot_cortex_m/
  38. pw_build/
  39. pw_build_android/
  40. pw_build_info/
  41. pw_build_mcuxpresso/
  42. pw_bytes/
  43. pw_change/
  44. pw_channel/
  45. pw_checksum/
  46. pw_chre/
  47. pw_chrono/
  48. pw_chrono_embos/
  49. pw_chrono_freertos/
  50. pw_chrono_rp2040/
  51. pw_chrono_stl/
  52. pw_chrono_threadx/
  53. pw_chrono_zephyr/
  54. pw_cli/
  55. pw_cli_analytics/
  56. pw_clock_tree/
  57. pw_clock_tree_mcuxpresso/
  58. pw_compilation_testing/
  59. pw_config_loader/
  60. pw_console/
  61. pw_containers/
  62. pw_cpu_exception/
  63. pw_cpu_exception_cortex_m/
  64. pw_cpu_exception_risc_v/
  65. pw_crypto/
  66. pw_digital_io/
  67. pw_digital_io_linux/
  68. pw_digital_io_mcuxpresso/
  69. pw_digital_io_rp2040/
  70. pw_digital_io_zephyr/
  71. pw_display/
  72. pw_dma_mcuxpresso/
  73. pw_docgen/
  74. pw_doctor/
  75. pw_elf/
  76. pw_emu/
  77. pw_env_setup/
  78. pw_env_setup_zephyr/
  79. pw_file/
  80. pw_flatbuffers/
  81. pw_format/
  82. pw_function/
  83. pw_fuzzer/
  84. pw_grpc/
  85. pw_hdlc/
  86. pw_hex_dump/
  87. pw_i2c/
  88. pw_i2c_linux/
  89. pw_i2c_mcuxpresso/
  90. pw_i2c_rp2040/
  91. pw_i2c_zephyr/
  92. pw_ide/
  93. pw_interrupt/
  94. pw_interrupt_cortex_m/
  95. pw_interrupt_freertos/
  96. pw_interrupt_zephyr/
  97. pw_intrusive_ptr/
  98. pw_json/
  99. pw_kernel/
  100. pw_kvs/
  101. pw_libc/
  102. pw_libcxx/
  103. pw_log/
  104. pw_log_android/
  105. pw_log_basic/
  106. pw_log_fuchsia/
  107. pw_log_null/
  108. pw_log_rpc/
  109. pw_log_string/
  110. pw_log_tokenized/
  111. pw_log_zephyr/
  112. pw_malloc/
  113. pw_malloc_freelist/
  114. pw_malloc_freertos/
  115. pw_metric/
  116. pw_minimal_cpp_stdlib/
  117. pw_module/
  118. pw_multibuf/
  119. pw_multisink/
  120. pw_numeric/
  121. pw_package/
  122. pw_perf_test/
  123. pw_persistent_ram/
  124. pw_polyfill/
  125. pw_preprocessor/
  126. pw_presubmit/
  127. pw_protobuf/
  128. pw_protobuf_compiler/
  129. pw_random/
  130. pw_random_fuchsia/
  131. pw_result/
  132. pw_ring_buffer/
  133. pw_router/
  134. pw_rpc/
  135. pw_rpc_transport/
  136. pw_rust/
  137. pw_sensor/
  138. pw_snapshot/
  139. pw_software_update/
  140. pw_span/
  141. pw_spi/
  142. pw_spi_linux/
  143. pw_spi_mcuxpresso/
  144. pw_spi_rp2040/
  145. pw_status/
  146. pw_stm32cube_build/
  147. pw_stream/
  148. pw_stream_shmem_mcuxpresso/
  149. pw_stream_uart_linux/
  150. pw_stream_uart_mcuxpresso/
  151. pw_string/
  152. pw_symbolizer/
  153. pw_sync/
  154. pw_sync_baremetal/
  155. pw_sync_embos/
  156. pw_sync_freertos/
  157. pw_sync_stl/
  158. pw_sync_threadx/
  159. pw_sync_zephyr/
  160. pw_sys_io/
  161. pw_sys_io_ambiq_sdk/
  162. pw_sys_io_arduino/
  163. pw_sys_io_baremetal_lm3s6965evb/
  164. pw_sys_io_baremetal_stm32f429/
  165. pw_sys_io_emcraft_sf2/
  166. pw_sys_io_mcuxpresso/
  167. pw_sys_io_rp2040/
  168. pw_sys_io_stdio/
  169. pw_sys_io_stm32cube/
  170. pw_sys_io_zephyr/
  171. pw_system/
  172. pw_target_runner/
  173. pw_thread/
  174. pw_thread_embos/
  175. pw_thread_freertos/
  176. pw_thread_stl/
  177. pw_thread_threadx/
  178. pw_thread_zephyr/
  179. pw_tls_client/
  180. pw_tls_client_boringssl/
  181. pw_tls_client_mbedtls/
  182. pw_tokenizer/
  183. pw_toolchain/
  184. pw_trace/
  185. pw_trace_tokenized/
  186. pw_transfer/
  187. pw_uart/
  188. pw_uart_mcuxpresso/
  189. pw_unit_test/
  190. pw_uuid/
  191. pw_varint/
  192. pw_watch/
  193. pw_web/
  194. pw_work_queue/
  195. seed/
  196. targets/
  197. third_party/
  198. ts/
  199. zephyr/
  200. .bazelignore
  201. .bazelrc
  202. .bazelversion
  203. .black.toml
  204. .clang-format
  205. .clang-tidy
  206. .eslintrc.cjs
  207. .git-blame-ignore-revs
  208. .gitattributes
  209. .gitignore
  210. .gn
  211. .mypy.ini
  212. .prettierignore
  213. .prettierrc.cjs
  214. .pw_ide.yaml
  215. .pylintrc
  216. .ruff.toml
  217. activate.bat
  218. Android.bp
  219. AUTHORS
  220. bootstrap.bat
  221. bootstrap.fish
  222. bootstrap.sh
  223. BUILD.bazel
  224. BUILD.gn
  225. BUILDCONFIG.gn
  226. CMakeLists.txt
  227. GEMINI.md
  228. go.mod
  229. go.sum
  230. jest.config.ts
  231. Kconfig.zephyr
  232. LICENSE
  233. MODULE.bazel
  234. MODULE.bazel.lock
  235. modules.gni
  236. OWNERS
  237. package-lock.json
  238. package.json
  239. pigweed.json
  240. PIGWEED_MODULES
  241. pnpm-lock.yaml
  242. pw
  243. README.md
  244. REPO.bazel
  245. rollup-protos.config.js
  246. rollup.config.js
  247. rustfmt.toml
  248. tsconfig.json
  249. workflows.json
  250. WORKSPACE
  251. WORKSPACE_OWNERS
README.md

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/.

Links