Repository navigation
feat: v2.13.0 — Native Transport Rebuild: UDP/IP (Annex J) (§Phase 15 milestone 57) - #52
Merged
Merged
Conversation
… milestone 57) Rebuilds rcp/udp.hpp to carry real IEEE 1722 AVTPDU frames over UDP/IP, per ROADMAP.md milestone 57 and the Satellite Package Disposition table's entry for this file. The bespoke R/C-magic 16-byte Zone/Command/Response/Status frame this file used to carry (rcp/legacy_wire.hpp) is discarded outright, not adapted, matching the roadmap's own call that this transport "is the old wire format this whole roadmap replaces." udp::Frame/encode_frame/decode_frame compose rcp/avtp.hpp's NTSCF/TSCF header codec with rcp/acf.hpp's ACF_ABB/ACF_GBB message codec into one AVTPDU, carried as the UDP datagram payload unmodified — this implementation's own reading of IEEE 1722 Annex J's UDP/IP encapsulation, consistent with rcp/avtp.hpp's own note that its framing is transport-agnostic by design. udp::Server binds a UDP socket, decodes each inbound datagram, dispatches the carried ACF request to a caller-supplied Handler shaped to match rcp::mock::Server::dispatch's signature (v2.12.0), and answers the sender under the same NTSCF/TSCF header kind the request arrived under, assigning stable per-sender client ids. udp::Client connects to one server address and correlates each response by the (byte_bus_id, transaction_num) echo rule rcp/acf.hpp's make_response documents, rather than a locally invented request id. Neither class builds on rcp.hpp's Zone/Command/Controller/Registry model, per that file's own header comment that nothing new should. Grepping the tree for consumers of the old udp::ZoneServer/ udp::Controller/udp::Registry API found none beyond this file's own (now-deleted) test and rcp/tsn.hpp's doc comment — rcp/tsn.hpp itself only ever depended on the generic rcp::Controller interface plus a raw socket fd, never on udp:: types directly — so no legacy-shim split file was needed here, unlike rcp/mock.hpp's at v2.12.0; rcp/legacy_wire.hpp is deleted outright in the same change. New coverage lives in tests/test_udp.cpp (REQ-UDP-001..012, entirely rewritten under the same file/prefix identity as the discarded pre-replacement coverage, the same convention tests/test_sim.cpp's REQ-SIM-001..007 rewrite followed at v2.12.0), traced in .fusa-reqs.json. Full bit-for-bit conformance against other TC18/ Annex-J implementations is not claimed, same as the equivalent disclaimers in rcp/avtp.hpp, rcp/acf.hpp, and rcp/discovery.hpp. Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
Server/Client-based tests (REQ-UDP-007..012), including the BlackHole helper, only make sense on the POSIX build — on Windows both classes are the function_not_supported stub rcp/udp.hpp's own header comment documents. BlackHole was referenced outside its RCP_UDP_POSIX guard, breaking the Windows/MSVC build. Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
encode_frame/decode_frame are also the Windows stub (return {} / always
fail) per rcp/udp.hpp's own header comment, not just Server/Client — the
first Frame round-trip test indexed into the stub's empty return vector
and segfaulted under MSVC. Move the RCP_UDP_POSIX guard to wrap the
entire test body, and add a small Windows-only placeholder TEST_CASE
that exercises the function_not_supported stub surface directly, so the
binary registers at least one real assertion there instead of Catch2
reporting "No tests ran" (a ctest failure) when the guard elides every
other TEST_CASE.
Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
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.
Summary
rcp/udp.hppto carry real IEEE 1722 AVTPDU frames over UDP/IP, per ROADMAP.md milestone 57 ("Native Transport Rebuild — UDP/IP (Annex J)", v2.13.0) and the Satellite Package Disposition table's entry for this file.R/C-magic 16-byte Zone/Command/Response/Status frame this file used to carry (rcp/legacy_wire.hpp) is discarded outright, not adapted — matching the roadmap's own call that this transport "is the old wire format this whole roadmap replaces."rcp/legacy_wire.hppand its test are deleted in the same change; grepping the tree found no other consumer of the oldudp::ZoneServer/udp::Controller/udp::RegistryAPI (rcp/tsn.hpponly ever depended on the genericrcp::Controllerinterface plus a raw socket fd), so no legacy-shim split file was needed here.udp::Frame/encode_frame/decode_framecomposercp/avtp.hpp's NTSCF/TSCF header codec withrcp/acf.hpp's ACF_ABB/ACF_GBB message codec into one AVTPDU, carried as the UDP payload unmodified — this implementation's own reading of IEEE 1722 Annex J's UDP/IP encapsulation.udp::Serverbinds a UDP socket, decodes inbound datagrams, dispatches to a caller-suppliedHandlershaped to matchrcp::mock::Server::dispatch's signature (v2.12.0), and answers under the same NTSCF/TSCF header kind the request arrived under, with stable per-sender client ids.udp::Clientconnects to one server address and correlates responses by the(byte_bus_id, transaction_num)echo rulercp/acf.hpp'smake_responsedocuments.ROADMAP.mdmilestone 57 gets a "Done (v2.13.0)" note;README.md's header index andrcp/avtp.hpp's own header comment are updated to reflect the completed rebind.version.hpp/CMakeLists.txtbumped to 2.13.0.Test plan
tests/test_udp.cpp— 12 new tests (REQ-UDP-001..012, entirely rewritten under the same file/prefix identity as the discarded pre-replacement coverage, matching thetests/test_sim.cppprecedent at v2.12.0): pureFramecodec round-trips (NTSCF/TSCF/ACF_GBB) and malformed-input rejection, plus real-socketServer/Clientround trips over loopback (dispatch, default-Acknowledge, per-sender client ids, timeout, concurrent request correlation, idempotent close)..fusa-reqs.jsonupdated with the 12 rewrittenREQ-UDP-*requirement texts.cmake --build build) andctest --test-dir build --output-on-failure -j1— 60/60 tests pass.