pw_rpc: Rework the FakeChannelOutput classes

- Update Raw/NanopbFakeChannelOutput so it can be used for both client
  and service testing. Record all packets sent and support iterating
  over payloads by RPC. Store payloads in a single buffer rather than a
  list of fixed-size buffers to support different payload sizes with
  less memory.
- Allow encoding/decoding individual proto methods with NanopbSerde.
- Update tests to use the new FakeChannelOutput API.
- Adapt the test method contexts to use the new FakeChannelOutput. A
  test server class with improved functionality (and no macros) will be
  created in the future.

Requires: pigweed-internal:16580
Change-Id: I10eb11cdf8e7a3ee656d2a00d5a6517bc0179281
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/64962
Commit-Queue: Wyatt Hepler <hepler@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
23 files changed
tree: 28c6497a09c0418dd6ffa40f38a674dea8c0d884
  1. build_overrides/
  2. docker/
  3. docs/
  4. pw_allocator/
  5. pw_analog/
  6. pw_android_toolchain/
  7. pw_arduino_build/
  8. pw_assert/
  9. pw_assert_basic/
  10. pw_assert_log/
  11. pw_base64/
  12. pw_bloat/
  13. pw_blob_store/
  14. pw_bluetooth_hci/
  15. pw_boot/
  16. pw_boot_cortex_m/
  17. pw_build/
  18. pw_build_info/
  19. pw_build_mcuxpresso/
  20. pw_bytes/
  21. pw_checksum/
  22. pw_chrono/
  23. pw_chrono_embos/
  24. pw_chrono_freertos/
  25. pw_chrono_stl/
  26. pw_chrono_threadx/
  27. pw_cli/
  28. pw_console/
  29. pw_containers/
  30. pw_cpu_exception/
  31. pw_cpu_exception_cortex_m/
  32. pw_crypto/
  33. pw_docgen/
  34. pw_doctor/
  35. pw_env_setup/
  36. pw_file/
  37. pw_function/
  38. pw_fuzzer/
  39. pw_hdlc/
  40. pw_hex_dump/
  41. pw_i2c/
  42. pw_interrupt/
  43. pw_interrupt_cortex_m/
  44. pw_kvs/
  45. pw_libc/
  46. pw_log/
  47. pw_log_basic/
  48. pw_log_null/
  49. pw_log_rpc/
  50. pw_log_tokenized/
  51. pw_malloc/
  52. pw_malloc_freelist/
  53. pw_metric/
  54. pw_minimal_cpp_stdlib/
  55. pw_module/
  56. pw_multisink/
  57. pw_package/
  58. pw_persistent_ram/
  59. pw_polyfill/
  60. pw_preprocessor/
  61. pw_presubmit/
  62. pw_protobuf/
  63. pw_protobuf_compiler/
  64. pw_random/
  65. pw_result/
  66. pw_ring_buffer/
  67. pw_router/
  68. pw_rpc/
  69. pw_snapshot/
  70. pw_software_update/
  71. pw_span/
  72. pw_status/
  73. pw_stm32cube_build/
  74. pw_stream/
  75. pw_string/
  76. pw_symbolizer/
  77. pw_sync/
  78. pw_sync_baremetal/
  79. pw_sync_embos/
  80. pw_sync_freertos/
  81. pw_sync_stl/
  82. pw_sync_threadx/
  83. pw_sys_io/
  84. pw_sys_io_arduino/
  85. pw_sys_io_baremetal_lm3s6965evb/
  86. pw_sys_io_baremetal_stm32f429/
  87. pw_sys_io_stdio/
  88. pw_target_runner/
  89. pw_thread/
  90. pw_thread_embos/
  91. pw_thread_freertos/
  92. pw_thread_stl/
  93. pw_thread_threadx/
  94. pw_tls_client/
  95. pw_tls_client_boringssl/
  96. pw_tls_client_mbedtls/
  97. pw_tokenizer/
  98. pw_tool/
  99. pw_toolchain/
  100. pw_trace/
  101. pw_trace_tokenized/
  102. pw_transfer/
  103. pw_unit_test/
  104. pw_varint/
  105. pw_watch/
  106. pw_web_ui/
  107. pw_work_queue/
  108. targets/
  109. third_party/
  110. .bazelignore
  111. .bazelrc
  112. .clang-format
  113. .clang-tidy
  114. .eslintrc.json
  115. .gitattributes
  116. .gitignore
  117. .gn
  118. .prettierrc.js
  119. .pylintrc
  120. activate.bat
  121. AUTHORS
  122. bootstrap.bat
  123. bootstrap.sh
  124. BUILD.bazel
  125. BUILD.gn
  126. BUILDCONFIG.gn
  127. CMakeLists.txt
  128. LICENSE
  129. modules.gni
  130. OWNERS
  131. package.json
  132. PW_PLUGINS
  133. README.md
  134. tsconfig.json
  135. WORKSPACE
  136. yarn.lock
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