Repository navigation
feat(relay bench): Studio VLAN controls, simulated PTP GM and locked SV gmIdentity - #282
Conversation
…enters binary profile
…from operator profile
…AC epoch and fresh source
…de and host UTC epoch
…ench and follower frames
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. |
…input and reload regression
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: dcb040253c
ℹ️ 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".
| if (profile.value(QStringLiteral("benchGlobalGm")).toBool()) { | ||
| // Studio supplies a fresh host UTC epoch. The device then uses | ||
| // one EMAC IEEE1588 timebase for both PTP TX and SV sampling. | ||
| command += QStringLiteral(" 1 %1").arg(QDateTime::currentSecsSinceEpoch()); |
There was a problem hiding this comment.
Preserve subsecond time when seeding the simulated GM
When bench GM mode is enabled, currentSecsSinceEpoch() truncates the host timestamp to a whole second before the command is queued and transmitted. The firmware then treats command receipt as that second boundary and reconstructs nanoseconds only from subsequent board-monotonic elapsed time, so the advertised PTP clock can be offset from UTC by nearly one second plus transport latency while declaring within_1_us accuracy and time traceability. Send a seconds-plus-subseconds timestamp with a correlated monotonic sample, or downgrade the advertised accuracy/traceability.
AGENTS.md reference: AGENTS.md:L172-L180
Useful? React with 👍 / 👎.
| } else if (ptp_config.role == AR_PTP_ROLE_TIME_RECEIVER && | ||
| authority.source_selected) { | ||
| std::array<std::uint8_t, 8> identity{}; | ||
| std::copy_n(authority.selected_source_clock_identity, 8U, identity.begin()); | ||
| asdu.gm_identity = identity; |
There was a problem hiding this comment.
Keep gmIdentity out of legacy receiver frames
When the deployed stream is the built-in/default 9-2LE profile and PTP runs in RECEIVER mode with a selected source, this branch unconditionally adds the Ed.2.1 context tag 9 to the fixed legacy ASDU. RuntimePublisherProfile does not retain profile_family, so this path cannot enforce the preceding promise to keep legacy 9-2LE unchanged; strict legacy relay/test-set decoders can therefore reject the modified frames. Preserve the compiled profile family in the runtime profile and gate this field accordingly.
AGENTS.md reference: AGENTS.md:L174-L182
Useful? React with 👍 / 👎.
…e SV golden fixture
…oss-stream stale value
…y and GM identity
…ity after sample_payload
User target
ARStack Studio + ESP32-P4 shall operate as an isolated test-set Merging Unit plus PTP Grandmaster, or follow a selected external PTP source. SIPROTEC 5 subscriber must see matched PTP and SV time identity. No change to production main or stable release.
Changes
Verification gates
Run PTP, SV, ESP32-P4, Studio Qt, native Windows lifecycle and matched firmware installer workflows. Explicit pending physical relay interoperability: Pdelay exchange, GM selection, receiver offset/lock, smpSynch and measured currents/voltages, alarm state. Isolated relay test network only; this is simulated GNSS-like reference, not a traceable reference. Do not merge until reviewer acceptance.