pw_transfer: Fix integration test START packet issue

The proxy in pw_transfer's integration tests were receiving multiple
START packets, resulting in incorrect behavior in tests. This occurred
due to an assumption that all RPC packets contained transfer chunks and
attempting to decode them. An empty RPC payload resulted in a default
(zero-valued) chunk, which was interpreted as a START chunk for legacy
protocol compatibility.

This fixes the issue by only considering RPC packets which actually
have a payload.

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