Skip to content

v2.0.0 — TC18 wire format core

Choose a tag to compare

@SoundMatt SoundMatt released this 28 Jul 14:57
· 135 commits to main since this release
aabdcb2

v2.0.0 — TC18 wire format core (Phase 13 milestone 44)

First milestone of the full OPEN Alliance TC18 Remote Control Protocol replacement (see ROADMAP.md). Breaking: rcp/wire.hpp's wire format is entirely replaced.

What changed

  • rcp/wire.hpp is rebuilt from scratch as an IEEE 1722 AVTPDU/ACF codec:
    • NTSCF and TSCF AVTPDU headers (encode/decode, subtype validation)
    • ACF_ABB (0x0E, no timestamp) and ACF_GBB (0x0D, 64-bit message_timestamp) message framing
    • The shared byte_message_info fields: acf_msg_type, acf_msg_length, pad, mtv, byte_bus_id, evt (ack + 3-bit sub-opcode), hs, cs, transaction_num, op, rsp, err, ms, and the dual-purpose read_size/segment_num field
    • StreamId (MAC + locally-assigned suffix) and byte_bus_id addressing, with make_response() structurally enforcing the "echo byte_bus_id/transaction_num back unchanged" rule
    • The mandatory standard request kind and the four response semantic types (acknowledge / write / read / error)
    • avtp_timestamp/message_timestamp with an explicit fallback rule (effective_timestamp) returning std::nullopt rather than defaulting to zero
    • No dependency on rcp.hpp's Zone/Command/Controller/Registry model; no transport assumption (Ethernet, IEEE1722-over-UDP/IP, or CAN all supported later)
  • The old 16-byte frame codec is preserved byte-for-byte as rcp/legacy_wire.hpp so rcp/udp.hpp keeps building/working until its own v2.13.0 rebuild.
  • New REQ-WIRE-001..014 requirements (.fusa-reqs.json), tested in tests/test_wire.cpp; old REQ-UDP-* tests moved unchanged to tests/test_legacy_wire.cpp.

Scope note

Per ROADMAP.md, this is a pure wire-codec milestone: no RC Server lifecycle, register-map, discovery, or endpoint behavior is included (those are v2.1.0+), and full bit-for-bit conformance against other TC18 implementations isn't claimed until v2.6.0.

Verification

42/42 ctest suites pass (clang/gcc, Debug/Release); all 20 CI checks green (full build matrix across Linux/macOS/Windows × clang/gcc/msvc, clang-tidy, coverage, relay conform, and the full cpp-FuSa safety/security/traceability lifecycle including 100% requirement coverage).

Full diff: v1.2.0...v2.0.0