Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bd034e9e61
ℹ️ 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".
| _integratedFatLaunch = launch; | ||
| _activeIoTestSessionController = launch.Session; | ||
| Interlocked.Exchange(ref _ioTestObservationSequence, DateTime.UtcNow.Ticks); | ||
| _runtime.PointUpdated += Runtime_IoTestPointUpdated; |
There was a problem hiding this comment.
Route integrated FAT evidence through the coalesced process image
When an integrated FAT session is running, this subscribes Runtime_IoTestPointUpdated, which forwards raw PointUpdated frames directly into the session controller. The existing physical-relay path explicitly detaches that callback because it runs before Engineering's process image is coalesced, and instead publishes evidence only after the corresponding LIVE rows are committed. Integrated sessions therefore can capture transient Value 1/Value 2 evidence that was never the settled value shown to the operator; use the same coalesced live-first evidence gate as the legacy FAT workspace.
Useful? React with 👍 / 👎.
| if (launch.Project.Sources.Count > 0 && | ||
| launch.Project.Sources.All(source => | ||
| source.Kind.Equals(IoFatSourceKinds.Scl, StringComparison.OrdinalIgnoreCase))) |
There was a problem hiding this comment.
Keep portable SCL packages on the legacy workspace path
This condition also matches projects restored by OpenPackageAsync whenever their packaged source descriptors are all SCL. That route does not call SynchronizeImportedSclFatWithEngineering, so opening such a portable package in a fresh Engineering window produces an integrated workspace with no matching Engineering IEDs and Session.Start fails because the IED is not loaded. Distinguish direct SCL imports from package launches rather than inferring the launch type solely from Project.Sources.
Useful? React with 👍 / 👎.
| _selectionChanged = selectionChanged; | ||
| Session.PropertyChanged += Session_PropertyChanged; | ||
| DataContext = this; | ||
| SelectedEngineeringIed = EngineeringIeds.FirstOrDefault(); |
There was a problem hiding this comment.
Preserve the active Engineering IED when constructing FAT
With multiple matching IEDs, assigning the first item here invokes _selectionChanged, which immediately changes MainWindow.SelectedDevice to that first IED. ShowIntegratedFatWorkspace only tries to synchronize the previously selected device after construction, by which time that selection has already been overwritten, so opening FAT while a later IED is active unexpectedly switches both workspaces to the first IED. Initialize from the current Engineering selection or suppress the callback during this default assignment.
Useful? React with 👍 / 👎.
bd034e9 to
eeb632e
Compare
eeb632e to
fecb22d
Compare
|
Closing as a stale stacked candidate. This branch targets the old #269 fascia branch and predates the field-accepted combined fixes now merged through #274. If the integrated FAT tab is resumed, recreate/rebase it from current |
Summary
Semantic phase fix
phsA/phsB/phsC/phsAB, prioritizing the live Engineering bindingA Phs A,A Phs B,Thd Phs A, andPPV Phs ABSafety and performance
Migration
This is intentionally stacked on #269 so its Windows build includes the corrected connection-state lamps. After #269 merges, this PR can target
mainwithout changing its FAT workspace behavior.Validation