pw_bluetooth_proxy: Deregister & Close channels on proxy reset/dtor

 - Rename L2capChannelManager::ReleaseChannel() to DeregisterChannel().
 - Separate L2capChannel::Close() into InternalClose() which does not
   Deregister channels and thus does not need `channels_mutex_`, and
   Close() which Deregisters then calls Close().
 - Add L2capChannelManager::DeregisterAndCloseChannels() which is called
   on ProxyHost::Reset() and ProxyHost dtor.
 - Remove H4Storage::Reset() so H4Packets can only be released by their
   destructor.
 - Friend L2capChannelManager in L2capChannel and move InternalClose()
   and Undefine() into private/protected API.

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