Repository navigation
feat(M4-P0D3): per-MU atomic scenario, readback and shared-grid TX gates - #342
Conversation
…ack and isolation tests
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: be01dfb245
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| M4ThreeSvSignalBanks banks{}; | ||
| std::array<std::uint32_t, 3> sent{}; | ||
| std::array<std::uint16_t, 3> last_sample{}; | ||
| for (std::uint32_t tick = 0U; tick < 4050U; ++tick) { |
There was a problem hiding this comment.
Reset the stream gate before the shared-grid simulation
The preceding gate checks leave the mask at 0x03, so MU3 remains disabled throughout this loop and sent[2] stays zero. Consequently, the new test always fails at line 212 instead of validating late rejoin, breaking the registered CTest target. I reproduced this by compiling and running tests/test_m4_three_sv_signals.cpp with g++ -std=c++20 -Iinclude. Reset the gate to all-enabled before starting the simulation.
Useful? React with 👍 / 👎.
| std::uint32_t evidence_session = 0U; | ||
| std::uint32_t fault_generation_before = 0U; | ||
| if (epoch_armed && g_sample_clock_context.phase_enabled && | ||
| if (send_primary && epoch_armed && g_sample_clock_context.phase_enabled && |
There was a problem hiding this comment.
Collect group timing evidence from an enabled MU
With hardware egress timestamping and AUTO synchronization enabled, SVSTREAM 1 STOP now disables the only path that records MAC timing evidence, even while MU2 and MU3 continue transmitting. SvLocalSyncEvidenceGate::qualified() and qualified_source_fast() expire that evidence after kMaxEvidenceAgeEpochs, and the phase observer subsequently clears the group's synchronization qualification, making the remaining streams advertise unsynchronized samples despite their unchanged shared clock. Select an enabled stream for descriptor timestamping, with an appropriate evidence-baseline handoff, so muting MU1 does not prevent the other MUs from acquiring or retaining synchronization.
Useful? React with 👍 / 👎.
Implemented
SvScenarioTransactionindependently for MU1/MU2/MU3: complete eight-channel staging, hash, generation, timeout and explicit readback viaSVSTREAM <slot> CFG ....SVSTREAM <slot> START|STOPTX enable gate sampled once on each shared 250-us publisher iteration, while preserving DDS phase progression and groupsmpCntfor late rejoin.MULTISV COMMITTEDlog output; document engineer protocol and limitations.CI & physical proof
Require C++ GCC/Clang/MSVC, ESP32-P4 firmware build, Studio native preview, and all repository checks GREEN before merge. No claim of measured physical 12kfps, 250us deadline, packet skew, or PTP phase from CI.
Next
P0E native Studio roster/pages/deploy/readback. P0F paired builds and physical Ethernet 3×4000fps capture. Tracks #333.