pw_rpc: Prevent starting calls with channel ID 0

- Channel ID 0 (Channel::kUnassignedChannelID) cannot be used for calls,
  and any packets with channel ID 0 are already rejected by RPC
  endpoints. Add a PW_CHECK() that crashes if code attempts to start a
  call on channel 0.
- Add a test for invoking a call on an unknown channel. No test is added
  for starting calls on channel 0, since pw_unit_test does not support
  testing that assertions failed.

Change-Id: Idc4a21925694c6300daa507c160fbf6822a93244
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/127036
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Reviewed-by: Erik Gilling <konkers@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
3 files changed
tree: 87575a9d9251e2dd5d251ca09e96315af085117e
  1. .allstar/
  2. .vscode/
  3. build_overrides/
  4. docker/
  5. docs/
  6. pw_allocator/
  7. pw_analog/
  8. pw_android_toolchain/
  9. pw_arduino_build/
  10. pw_assert/
  11. pw_assert_basic/
  12. pw_assert_log/
  13. pw_assert_tokenized/
  14. pw_assert_zephyr/
  15. pw_async/
  16. pw_base64/
  17. pw_bloat/
  18. pw_blob_store/
  19. pw_bluetooth/
  20. pw_bluetooth_hci/
  21. pw_bluetooth_profiles/
  22. pw_boot/
  23. pw_boot_cortex_m/
  24. pw_build/
  25. pw_build_info/
  26. pw_build_mcuxpresso/
  27. pw_bytes/
  28. pw_checksum/
  29. pw_chrono/
  30. pw_chrono_embos/
  31. pw_chrono_freertos/
  32. pw_chrono_stl/
  33. pw_chrono_threadx/
  34. pw_chrono_zephyr/
  35. pw_cli/
  36. pw_compilation_testing/
  37. pw_console/
  38. pw_containers/
  39. pw_cpu_exception/
  40. pw_cpu_exception_cortex_m/
  41. pw_crypto/
  42. pw_digital_io/
  43. pw_docgen/
  44. pw_doctor/
  45. pw_env_setup/
  46. pw_file/
  47. pw_function/
  48. pw_fuzzer/
  49. pw_hdlc/
  50. pw_hex_dump/
  51. pw_i2c/
  52. pw_i2c_mcuxpresso/
  53. pw_ide/
  54. pw_interrupt/
  55. pw_interrupt_cortex_m/
  56. pw_interrupt_zephyr/
  57. pw_intrusive_ptr/
  58. pw_kvs/
  59. pw_libc/
  60. pw_log/
  61. pw_log_android/
  62. pw_log_basic/
  63. pw_log_null/
  64. pw_log_rpc/
  65. pw_log_string/
  66. pw_log_tokenized/
  67. pw_log_zephyr/
  68. pw_malloc/
  69. pw_malloc_freelist/
  70. pw_metric/
  71. pw_minimal_cpp_stdlib/
  72. pw_module/
  73. pw_multisink/
  74. pw_package/
  75. pw_perf_test/
  76. pw_persistent_ram/
  77. pw_polyfill/
  78. pw_preprocessor/
  79. pw_presubmit/
  80. pw_protobuf/
  81. pw_protobuf_compiler/
  82. pw_random/
  83. pw_result/
  84. pw_ring_buffer/
  85. pw_router/
  86. pw_rpc/
  87. pw_rust/
  88. pw_snapshot/
  89. pw_software_update/
  90. pw_span/
  91. pw_spi/
  92. pw_status/
  93. pw_stm32cube_build/
  94. pw_stream/
  95. pw_string/
  96. pw_symbolizer/
  97. pw_sync/
  98. pw_sync_baremetal/
  99. pw_sync_embos/
  100. pw_sync_freertos/
  101. pw_sync_stl/
  102. pw_sync_threadx/
  103. pw_sync_zephyr/
  104. pw_sys_io/
  105. pw_sys_io_arduino/
  106. pw_sys_io_baremetal_lm3s6965evb/
  107. pw_sys_io_baremetal_stm32f429/
  108. pw_sys_io_emcraft_sf2/
  109. pw_sys_io_mcuxpresso/
  110. pw_sys_io_pico/
  111. pw_sys_io_stdio/
  112. pw_sys_io_stm32cube/
  113. pw_sys_io_zephyr/
  114. pw_system/
  115. pw_target_runner/
  116. pw_thread/
  117. pw_thread_embos/
  118. pw_thread_freertos/
  119. pw_thread_stl/
  120. pw_thread_threadx/
  121. pw_tls_client/
  122. pw_tls_client_boringssl/
  123. pw_tls_client_mbedtls/
  124. pw_tokenizer/
  125. pw_tool/
  126. pw_toolchain/
  127. pw_trace/
  128. pw_trace_tokenized/
  129. pw_transfer/
  130. pw_unit_test/
  131. pw_varint/
  132. pw_watch/
  133. pw_web/
  134. pw_work_queue/
  135. seed/
  136. targets/
  137. third_party/
  138. ts/
  139. zephyr/
  140. .bazelignore
  141. .bazelrc
  142. .black.toml
  143. .clang-format
  144. .clang-tidy
  145. .eslintrc.json
  146. .git-blame-ignore-revs
  147. .gitattributes
  148. .gitignore
  149. .gn
  150. .mypy.ini
  151. .prettierrc.js
  152. .pw_ide.yaml
  153. .pylintrc
  154. activate.bat
  155. Android.bp
  156. AUTHORS
  157. bootstrap.bat
  158. bootstrap.sh
  159. BUILD.bazel
  160. BUILD.gn
  161. BUILDCONFIG.gn
  162. CMakeLists.txt
  163. jest.config.ts
  164. Kconfig.zephyr
  165. LICENSE
  166. modules.gni
  167. OWNERS
  168. package-lock.json
  169. package.json
  170. PIGWEED_MODULES
  171. PW_PLUGINS
  172. README.md
  173. rollup.config.js
  174. tsconfig.json
  175. WORKSPACE
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