Repository navigation
feat: v2.1.0 — RC Server lifecycle & register-map model (milestone 45) - #38
Merged
Merged
Conversation
…lestone 45) Adds rcp/lifecycle.hpp (3-state HW_UNCONFIGURED/HW_CONFIGURED/RCP_CONFIGURED machine with forward-only transitions, HW_CFG_INCONSISTENT/RCP_CFG_INCONSISTENT plausibility checks, and generic/functional config-block locking) and rcp/regmap.hpp (the register-map data model: generic vs. functional endpoint config split, general bootstrap fields, HW pin-map/request-stream/EP-ID-mapping/ response-queue config, persistent sequencer-state storage, and EP0 — the RC Server pseudo-endpoint with whole-map read/write and root-client/per-endpoint write-access enforcement). Adds the four mandatory register-map error codes (UNAUTHORIZED_ACCESS, LOCKED_MEM_ACCESS, REQUEST_REJECTED, INVALID_PARAMETER) as rcp::regmap::RegMapErrc. New coverage in tests/test_lifecycle.cpp (REQ-LIFECYCLE-001..006) and tests/test_regmap.cpp (REQ-REGMAP-001..014), both traced in .fusa-reqs.json. rcp/rcp.hpp's pre-replacement Zone/Command/Controller/Registry model is left in place unmodified in behavior — only its header comment now points at this milestone's replacement headers — since roughly three dozen other headers still build against it and aren't rebound until their own later milestones (v2.9.0 onward per the Release Plan); see ROADMAP.md's Satellite Package Disposition table. Bumps version.hpp and the CMake project version to 2.1.0, and checks off ROADMAP.md milestone 45 with a "Done (v2.1.0)" note following the milestone 44 precedent. 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
Implements ROADMAP.md milestone 45, "RC Server Lifecycle & Register-Map Model (v2.1.0)" — the next item in Phase 13's TC18 protocol-replacement sequence, following milestone 44's wire-format core (v2.0.0).
include/rcp/lifecycle.hpp— the 3-state RC Server lifecycle machine (HW_UNCONFIGURED/HW_CONFIGURED/RCP_CONFIGURED), forward-only single-stepadvance()transitions, theHW_CFG_INCONSISTENT/RCP_CFG_INCONSISTENTplausibility checks gating each transition, an explicitdeconfigure()backward path, and independent generic/functional config-block locking queries.include/rcp/regmap.hpp— the register-map data model: the generic/functional endpoint config split, general bootstrap fields (magic, protocol version, vendor/device ID, endpoint count, stream/queue capacity,svr_implemented_options, and the five table pointer/capacity fields), HW pin-map config, request-stream config (including therx_wd_*/rx_safety_measurefields, present but intentionally inert until v2.6.0), the EP-ID/byte_bus_idmapping table (client-ordering risk flagged explicitly in comments), response/ack queue config, and persistent 8-bit sequencer-state storage — plusEp0, the RC Server pseudo-endpoint implementing whole-register-map read (unrestricted) and write (root-client-only), and per-endpoint write restriction for every other client.UNAUTHORIZED_ACCESS,LOCKED_MEM_ACCESS,REQUEST_REJECTED,INVALID_PARAMETER) asrcp::regmap::RegMapErrc.tests/test_lifecycle.cpp(REQ-LIFECYCLE-001..006) andtests/test_regmap.cpp(REQ-REGMAP-001..014), both traced in.fusa-reqs.json.version.hpp,CMakeLists.txt);ROADMAP.mdmilestone 45 checked off with a "Done (v2.1.0)" note following the milestone 44 precedent.rcp/wire.hppandrcp/legacy_wire.hppare untouched, per the milestone's own scope note.rcp/rcp.hpp's pre-replacement Zone/Command/Controller/Registry model is left in place, unmodified in behavior — only its header comment now points at the new replacement headers — since roughly three dozen other headers still build against it and aren't rebound until their own later milestones (v2.9.0 onward per the Release Plan); see the Satellite Package Disposition table. Full removal ofrcp.hpp's old model in one PR would have broken the whole tree for no benefit to this milestone's scope.Field widths, the register-map magic-number value, and locking policy are this implementation's own design choices for realizing the described behavior — no text from the source specification is reproduced anywhere in code or comments, consistent with
wire.hpp's existing conformance disclaimer.Test plan
cmake --build(Release + Debug, C++17 and C++20, AppleClang locally) — clean, no new warningsctest— all 44 suites pass, including the two new ones (43 + 77 assertions)relay conform --strictagainst the builtcpp-rcpCLI) — PASScpfusa check— 0 errorscpfusa lint— 0 errors (info/warning counts unchanged from baseline pattern)cpfusa cyber— 0 errorscpfusa trace --req-coverage 100— all new REQ-LIFECYCLE-/REQ-REGMAP- entries show impl:[✓] test:[✓]cpfusa verify— ctest evidence generated, 44/44 passed