pw_bluetooth_proxy: Emit updates for new L2CAP channels during recovery

Conditionally emit state update notifications when registering L2CAP
channels during the offload recovery window. Channels restored from a
snapshot continue to suppress notifications to avoid duplicate records,
while newly acquired channels not present in the snapshot emit an
initial state update so the container tracks active channels.

Update L2capRecoveryTest.SnapshotUnmatchedChannelRegistration to verify
both notification suppression for restored channels and notification
emission for newly acquired Basic and Credit-Based channels during
recovery.

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