Conversation
|
✅Static analysis result - no issues found! ✅ |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces two new ESPP components—cdr (Common Data Representation helpers) and rtps (an RTPS discovery + temporary UInt32 data scaffold)—and wires them into documentation and CI, including a pure-stdlib Python host harness for discovery and smoke testing.
Changes:
- Add
components/cdrwith CDR/PL_CDR reader/writer utilities plus an example and docs pages. - Add
components/rtpswith SPDP/SEDP discovery framing, participant/endpoint tracking, and a temporaryUInt32user-data path, plus an ESP example and docs pages. - Extend documentation tooling (Mermaid support) and CI matrices to build/upload the new components.
Reviewed changes
Copilot reviewed 36 out of 36 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| python/rtps_host.py | New pure-stdlib RTPS discovery + temporary UInt32 host harness. |
| python/README.md | Document the new RTPS host harness and example invocations. |
| docker_build_docs.sh | Install doc Python requirements inside the docs build container before building. |
| doc/requirements.txt | Add sphinxcontrib-mermaid for Mermaid diagram support. |
| doc/en/rtsp.rst | Add “How RTSP Works” explanation and Mermaid diagrams/spec links. |
| doc/en/rtps.rst | New RTPS component documentation page (scope, flow, specs, example link). |
| doc/en/rtps_example.md | Include RTPS example README into docs. |
| doc/en/index.rst | Add cdr and rtps pages to the docs toctree. |
| doc/en/cdr.rst | New CDR component documentation page. |
| doc/en/cdr_example.md | Include CDR example README into docs. |
| doc/Doxyfile | Add CDR/RTPS headers + examples to Doxygen inputs/example paths. |
| doc/conf_common.py | Enable Mermaid Sphinx extension and set Mermaid configuration. |
| components/rtps/src/rtps.cpp | Implement RTPS message framing/parsing, discovery, and temporary UInt32 data path. |
| components/rtps/README.md | RTPS component overview, expected compatibility, and feature status. |
| components/rtps/include/rtps.hpp | Public RTPS API: types, config, discovery, and temp UInt32 helpers. |
| components/rtps/idf_component.yml | RTPS component manager manifest + dependencies. |
| components/rtps/example/sdkconfig.defaults | RTPS example default config (partition table, task stacks). |
| components/rtps/example/README.md | RTPS two-board initiator/responder smoke-test instructions. |
| components/rtps/example/partitions.csv | Custom partition table for RTPS example. |
| components/rtps/example/main/rtps_example.cpp | RTPS example app: Wi-Fi STA + discovery + request/response loop. |
| components/rtps/example/main/Kconfig.projbuild | Menuconfig options for role/domain/participant/topics/Wi-Fi. |
| components/rtps/example/main/CMakeLists.txt | Example main component registration + dependencies. |
| components/rtps/example/CMakeLists.txt | RTPS example project setup and component list. |
| components/rtps/CMakeLists.txt | RTPS component build registration and requirements. |
| components/cdr/src/cdr.cpp | CDR translation unit (header-only-ish implementation anchor). |
| components/cdr/README.md | CDR component overview and example description. |
| components/cdr/include/cdr.hpp | CDR/PL_CDR encapsulation + reader/writer APIs and helpers. |
| components/cdr/idf_component.yml | CDR component manager manifest. |
| components/cdr/example/sdkconfig.defaults | Minimal defaults for the CDR example. |
| components/cdr/example/README.md | CDR example usage and expected output. |
| components/cdr/example/main/CMakeLists.txt | CDR example main component registration. |
| components/cdr/example/main/cdr_example.cpp | CDR example app: serialize/deserialize primitives, strings, sequences. |
| components/cdr/example/CMakeLists.txt | CDR example project setup and component list. |
| components/cdr/CMakeLists.txt | CDR component build registration. |
| .github/workflows/upload_components.yml | Add cdr and rtps to the upload list. |
| .github/workflows/build.yml | Add CI builds for cdr/example and rtps/example. |
…add initial support for user data multicast
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 37 out of 37 changed files in this pull request and generated 4 comments.
Comments suppressed due to low confidence (1)
python/rtps_host.py:1
- RTPS submessages can legally use a length of 0 to mean “extends to end of message”. With the current loop,
length == 0causesoffsetnot to advance (after the header), leading to an infinite loop. Additionally, the code unconditionally interprets the length as little-endian without checking the submessage endianness flag. Fix by treatinglength == 0aslen(packet) - offset(after reading the submessage header), and either reject non-little-endian submessages or decode fields according to the endianness bit.
Copilot stopped reviewing on behalf of
finger563 due to an error
June 16, 2026 21:14
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR adds the initial
cdrandrtpscomponents and wires them into the repo, examples, docs, CI, and host-side test tooling.Highlights:
cdrcomponent for reusable CDR / PL_CDR payload handlingrtpscomponent built onsocket/taskwith:UInt32user-data publish/receive supportrtpsto use the sharedcdrcomponent for parameter-body and payload CDR handlingcdrandrtpspython/rtps_host.pycdr,rtps, andrtsp, including protocol explanations, Mermaid diagrams, compatibility/status tables, and spec referencesMotivation and Context
This change starts the DDS / ROS 2 interoperability foundation in ESPP by introducing:
The immediate goal is to support standards-shaped RTPS discovery and a simple host/device validation path while keeping the architecture manageable:
cdrowns byte layout, encapsulation, alignment, strings, arrays, and sequencesrtpsowns discovery, transport, GUIDs, locators, and temporary user-data exchangeThis PR also improves the docs/test story so the new components are understandable and usable from both ESP targets and a PC host.
How has this been tested?
source ~/esp/esp-idf/export.sh && cd components/cdr/example && idf.py buildsource ~/esp/esp-idf/export.sh && cd components/rtps/example && rm -f sdkconfig && idf.py buildrtpsbuilds after being updated to depend on and usecdrcdrandrtpspublic header documentation changes still compile cleanly via the example buildspython3 -m py_compile python/rtps_host.pyrtps_host.pyprocesses:espp/rtps_example/requestespp/rtps_example/responsesamplesScreenshots (if appropriate, e.g. schematic, board, console logs, lab pictures):
Showing
initiatoron qtpy esp32s3responderon qtpy esp32s3Responder:

Initiator:

Types of changes
Checklist:
Software
.github/workflows/build.ymlfile to add my new test to the automated cloud build github action.