Skip to content
Closed
Changes from 1 commit
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
373b3d5
feat: add coherent live SV signal state
masarray Aug 10, 2026
1b3d451
test: cover live SV signal generations
masarray Aug 10, 2026
01f16d9
feat: add embedded live SV control interface
masarray Aug 10, 2026
6ae45e3
feat: add bench live SV control task
masarray Aug 10, 2026
9cb345e
build: include live SV control task
masarray Aug 10, 2026
6709dbe
feat: make ESP32-P4 SV values live-updatable while running
masarray Aug 10, 2026
c4c5e29
docs: define live SV injection workflow
masarray Aug 10, 2026
0555d75
docs: record live injection state machine
masarray Aug 10, 2026
f558fd2
docs: add bench live control command reference
masarray Aug 10, 2026
626a097
test: add live SV signal runtime regression target
masarray Aug 10, 2026
c716380
merge: preserve current main build targets with live SV regression
masarray Aug 10, 2026
384db1e
merge: update live SV runtime onto current main
masarray Aug 10, 2026
af32f5d
fix: make live SV snapshots data-race-free with triple buffering
masarray Aug 10, 2026
3606f62
Bind BRCB delivery to owner and defer commit
masarray Aug 11, 2026
7b927ef
Enforce owner-bound two-phase BRCB delivery
masarray Aug 11, 2026
233dc79
Prove owner-bound two-phase BRCB delivery
masarray Aug 11, 2026
8f2a013
Close MMS runtime on every terminal server session path
masarray Aug 11, 2026
22812f7
Prove terminal server session closes established association
masarray Aug 11, 2026
76563ab
Recover BRCB checkpoint from surviving A/B bank
masarray Aug 11, 2026
22eef13
Add one-bank BRCB checkpoint recovery regression
masarray Aug 11, 2026
907f516
Extend BRCB hard profile safety regressions
masarray Aug 11, 2026
b39a688
Isolate static MMS server from legacy core
masarray Aug 11, 2026
48efffd
Ignore POSIX SIGPIPE in static server host process
masarray Aug 11, 2026
f47017c
Wire host SIGPIPE guard into static server
masarray Aug 11, 2026
79d6fb0
Reauthorize owner on BRCB delivery commit
masarray Aug 11, 2026
e5c6303
Harden ESP32-P4 bench serial command input
masarray Aug 11, 2026
fe7e24e
Fix interactive serial line assembly
masarray Aug 11, 2026
dbc5ced
Fix BRCB two-phase commit authorization signature
masarray Aug 11, 2026
c753f66
Update BRCB delivery smoke for owner-bound commit API
masarray Aug 11, 2026
3ea48e4
feat: add browser SMV injector control GUI shell
masarray Aug 11, 2026
2041e0d
feat: style SMV injector control GUI
masarray Aug 11, 2026
424b88e
feat: wire SMV GUI to serial live-control protocol
masarray Aug 11, 2026
44a22ec
feat: add one-click local GUI launcher
masarray Aug 11, 2026
dd72e62
docs: document SMV injector GUI bench workflow
masarray Aug 11, 2026
07cd7fd
ci: add SMV injector GUI smoke checks
masarray Aug 11, 2026
a9e4470
fix: serve SMV GUI from launcher directory
masarray Aug 11, 2026
040829c
fix(gui): make injector workspace responsive
masarray Aug 11, 2026
2835bfd
fix(gui): keep connection controls visible on narrow windows
masarray Aug 11, 2026
263fc4e
feat: converge GUI with SCL-driven SV profile engine
masarray Aug 11, 2026
216af6a
feat: add SCL-driven SV profile inspection tool
masarray Aug 11, 2026
f072855
build(gui): add focused host profile compiler target
masarray Aug 11, 2026
bc09fe2
feat(gui): serve smart SCL profile inspection locally
masarray Aug 11, 2026
5db08d9
feat(gui): launch smart SCL profile backend
masarray Aug 11, 2026
926f9c8
feat(embedded): add immutable runtime SV profile state
masarray Aug 11, 2026
334db43
feat(embedded): implement runtime SV profile commit boundary
masarray Aug 11, 2026
f2baaab
build(embedded): include runtime SV profile state
masarray Aug 11, 2026
5f997b3
feat(embedded): add machine profile control interface
masarray Aug 11, 2026
ab4c1fd
feat(embedded): stage and commit validated SV profiles
masarray Aug 11, 2026
23f3f1a
build(embedded): include profile control transport
masarray Aug 11, 2026
d6681ab
feat(embedded): wake publisher on GUI control transitions
masarray Aug 11, 2026
91689bd
feat(embedded): route GUI profile commands and publisher wakes
masarray Aug 11, 2026
0c766f8
feat(embedded): expose publisher fail-closed stop
masarray Aug 11, 2026
2042614
feat(embedded): arm SCL-driven profiles with rational realtime schedu…
masarray Aug 11, 2026
006e89f
feat(gui): connect SCL compiler to profile deployment workflow
masarray Aug 11, 2026
55030c0
style(gui): add SCL profile compiler and deploy states
masarray Aug 11, 2026
5549459
feat(gui): load smart SCL profile bridge
masarray Aug 11, 2026
18b0908
ci(gui): validate smart SCL profile bridge
masarray Aug 11, 2026
ff66b64
docs(gui): document SCL compile and device deploy workflow
masarray Aug 11, 2026
366aa56
docs: keep embedded roadmap vendor-neutral
masarray Aug 11, 2026
1b37afa
docs: remove legacy vendor-specific embedded roadmap
masarray Aug 11, 2026
94822e7
fix(embedded): fail closed when publisher arm fails
masarray Aug 11, 2026
ff3688a
fix(gui): make C++ SCL engine the only import authority
masarray Aug 11, 2026
61ad066
fix(gui): route SCL import only through smart profile engine
masarray Aug 11, 2026
1377f05
ci(gui): cover smart SCL import bootstrap
masarray Aug 11, 2026
f54ddf8
fix(gui): select native Windows host compiler from ESP-IDF shell
masarray Aug 11, 2026
58a37db
ci(gui): exercise Windows host-tool launcher
masarray Aug 11, 2026
5a58cd8
fix(gui): discover installed Visual Studio generically
masarray Aug 11, 2026
5780daf
fix(gui): self-heal missing host build scaffold
masarray Aug 11, 2026
9bd7451
test(gui): cover missing host scaffold recovery
masarray Aug 11, 2026
bcbd749
fix(gui): self-heal missing tracked runtime assets
masarray Aug 11, 2026
ffc7949
docs: record SMV injector completion boundary and bench evidence
masarray Aug 11, 2026
8ea7ec6
docs: update GUI README with completed SCL-driven injector workflow
masarray Aug 11, 2026
9775184
docs: promote ESP32-P4 injector README to SCL-driven runtime status
masarray Aug 11, 2026
3186756
docs: update SMV architecture after SCL-driven injector acceptance
masarray Aug 11, 2026
ba0d31f
Add native Qt ARStack Studio build scaffold
masarray Aug 11, 2026
f2a10bb
Add Qt SCL profile model interface
masarray Aug 11, 2026
f05116d
Implement direct C++ SCL compilation for Qt
masarray Aug 11, 2026
73795a1
Add Qt application entry point
masarray Aug 11, 2026
25fb843
Add premium Qt Quick SMV injection workspace
masarray Aug 11, 2026
ec547ff
Simplify native Qt premium injection workspace
masarray Aug 11, 2026
36204cf
Align Qt build scaffold with Qt 6 CMake guidance
masarray Aug 11, 2026
bbb4001
Merge SMV live deterministic signal control
masarray Aug 11, 2026
09cf094
Merge SMV injector operator GUI
masarray Aug 11, 2026
056c6a7
Merge SCL-driven SMV injector profile bridge
masarray Aug 11, 2026
98fef69
Share ESP32-P4 SV profile support classification
masarray Aug 11, 2026
32be3e3
Add native Qt serial device controller
masarray Aug 11, 2026
ec3ee6b
Implement native Qt serial SMV control transport
masarray Aug 11, 2026
720d1af
Use shared ESP32 profile gate in Qt SCL model
masarray Aug 11, 2026
dada745
Link native Qt serial transport
masarray Aug 11, 2026
681d8f3
Expose native serial controller to QML
masarray Aug 11, 2026
f581827
Wire latest SMV profile and live controls into Qt UX
masarray Aug 11, 2026
ca6b9e9
Add native Qt Studio build and launch smoke CI
masarray Aug 11, 2026
22ab078
Reuse shared ESP32 profile support gate in inspector
masarray Aug 11, 2026
24d3273
Retain native Qt build logs on CI failures
masarray Aug 11, 2026
ceca8cd
Fix Qt QML syntax and streamline native injector workspace
masarray Aug 11, 2026
fd64c67
Document native Qt SMV Injector scope and workflow
masarray Aug 11, 2026
b2d2337
Allow Qt QML wrapper for SCL profile model
masarray Aug 11, 2026
387308e
Allow Qt QML wrapper for native device controller
masarray Aug 11, 2026
f67bba8
Merge current main into server consolidation
masarray Aug 11, 2026
7635fb7
Restore current-main live signal test in merged CMake
masarray Aug 11, 2026
35fe7ab
Track negotiated peer response limits
masarray Aug 11, 2026
68b0189
Enforce negotiated COTP and MMS response limits
masarray Aug 11, 2026
988eae0
Fail closed on negotiated peer limit overflow
masarray Aug 11, 2026
bd9a581
Expose BRCB peer-limit result
masarray Aug 11, 2026
a228dde
Enforce negotiated limits on BRCB delivery
masarray Aug 11, 2026
5f8ead9
Add negotiated response limit regression
masarray Aug 11, 2026
f4328d4
Run negotiated response limit smoke in embedded profile
masarray Aug 11, 2026
29e4996
Run negotiated limit regression through public server core
masarray Aug 11, 2026
7c17778
Prove negotiated limits under BRCB hard profile
masarray Aug 11, 2026
40bcc3f
Fix static server smoke command and capability scope
masarray Aug 11, 2026
42073d5
Fix negotiated limit smoke span view
masarray Aug 11, 2026
ec47fed
Advertise only implemented MMS services
masarray Aug 11, 2026
b6fe0b4
Remove duplicated ACSE external decode branch
masarray Aug 11, 2026
25831b4
Add confirmed-request Reject PDU encoder
masarray Aug 11, 2026
e060588
Encode bounded MMS confirmed-request Reject PDU
masarray Aug 11, 2026
7726e58
Return MMS RejectPDU for unsupported confirmed requests
masarray Aug 11, 2026
6e7ac5b
Make static server socket waits interruptible
masarray Aug 11, 2026
fe4c8cb
Assert narrow MMS service advertisement
masarray Aug 11, 2026
0c7512a
Update MMS PDU smoke for narrow services and RejectPDU
masarray Aug 11, 2026
eeebca8
Expect RejectPDU for unsupported confirmed request
masarray Aug 11, 2026
a77758a
Polish Qt injector P0 live workflow
masarray Aug 11, 2026
b3940d9
Fix Qt P0 state badge color
masarray Aug 11, 2026
655d9d5
Polish Qt SMV Injector P1 UX
masarray Aug 11, 2026
e7742eb
PTP-P1: hardware-timestamped lab timing companion and analyzer core
masarray Aug 11, 2026
68c933f
PTP-P1.5: complete portable runtime and ESP control bridge
masarray Aug 11, 2026
d041391
Merge remote-tracking branch 'origin/main' into main-qt-premium-phase2
masarray Aug 11, 2026
ab7704a
Add premium Qt workflow and dock shell
masarray Aug 11, 2026
f000772
Port ARIEC61850 server discovery and wire parity (#61)
masarray Aug 11, 2026
97227a8
Add smart live injection and resizable Qt dock shell
masarray Aug 11, 2026
05b64e6
Honor negotiated MMS server limits (#67)
masarray Aug 11, 2026
ec7daef
Fix CT waveform int64 portability
masarray Aug 11, 2026
3adc52c
Return ConfirmedError for missing MMS objects
masarray Aug 11, 2026
acaca94
Regress strict missing-object ConfirmedError
masarray Aug 11, 2026
0ffce10
Keep strict ConfirmedError inside bounded runtime
masarray Aug 11, 2026
472b3fc
Harden Qt live injection safety gates
masarray Aug 11, 2026
46e1165
Merge PR #65: smart live SMV Qt Studio
masarray Aug 11, 2026
8a189fa
Merge current main PTP runtime into server consolidation
masarray Aug 11, 2026
3839587
Merge latest main ARStack Studio updates into server consolidation
masarray Aug 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
docs: define live SV injection workflow
  • Loading branch information
masarray committed Aug 10, 2026
commit c4c5e29d83098ed4762db45ec44aff1d25c401e0
129 changes: 129 additions & 0 deletions docs/LIVE_INJECTION_WORKFLOW.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
# Live Sampled Values Injection Workflow

ARStack61850 targets an instrument workflow in which engineering intent is imported once, validated into a deterministic runtime profile, and signal values can then be changed while the publisher is running without rebuilding firmware or changing the canonical stream identity.

## User workflow

```text
Import SCL / CID / SCD / IID
|
v
Select and validate an SV stream
|
v
Resolve Class-A publisher profile
|
v
Configure initial signal values
|
v
Deploy profile to dedicated hardware
|
v
START
|
+---- live value / phase / frequency changes
|
+---- quality/state changes
|
+---- scenario transitions
|
v
STOP
```

The desktop/host side is the engineering and control plane. The ESP32-P4 is the deterministic realtime execution plane.

## Separation of immutable and mutable state

A running stream has two categories of state.

### Immutable while armed/running

These values define the stream/profile and are not edited in the per-sample hot path:

- destination MAC;
- APPID;
- VLAN / PCP;
- svID and DataSet field-presence policy;
- confRev;
- nofASDU;
- sample-rate / sample-mode policy;
- validated sample-counter policy;
- ordered wire layout and payload widths;
- optional ASDU field policy.

Changing an immutable property requires STOP -> validate/rebuild template -> ARM/START. This prevents half-updated frames.

### Mutable while running

These values are intentionally live:

- per-channel magnitude or raw wire-count target;
- per-channel phase;
- signal frequency where supported by the active signal model;
- quality values;
- scenario/fault state;
- waveform source selector and transition state.

A mutable update must become visible atomically at a sample boundary. The realtime task never parses text/XML, allocates memory, takes a host-facing mutex, or rebuilds BER structures.

## Runtime state machine

```text
EMPTY
-> PROFILE_VALIDATED
-> ARMED
-> RUNNING
-> STOPPED

RUNNING --live signal update--> RUNNING
RUNNING --profile change------> reject; STOP required
```

`START` begins deterministic publication from a validated/armed profile. `STOP` stops canonical publication without destroying the profile. Live signal updates are accepted during RUNNING and committed as one coherent generation.

## Coherent live update model

The host/control task writes a complete next signal state into an inactive bank and then publishes a generation/index atomically. The realtime publisher copies one coherent generation at the start of a sample and uses only that snapshot for the whole payload.

```text
control task realtime publisher
------------ ------------------
copy active state
edit inactive bank
validate values
publish generation ----atomic----> copy coherent generation
synthesize one sample
patch prebuilt frame
transmit
```

This prevents mixed-channel updates such as Ia from a new command while Ib/Ic still belong to an older command.

## Signal synthesis

The first live engine uses a fixed-point phase accumulator plus a precomputed sine lookup table. Floating-point initialization is outside the realtime sample path; the sample hot path uses bounded integer work.

A continuous phase accumulator allows magnitude, phase and frequency changes without restarting `smpCnt`. Frequency changes alter the next phase increment while preserving phase continuity. If realtime notifications are missed, both sample-count state and signal phase advance by the missed-slot count rather than replaying stale samples.

The first bench control surface uses the serial console for direct hardware testing. It is a development transport only. The product control plane will use a versioned bounded command protocol and the same live-state semantics.

## Safety and interoperability

- canonical profile identity is never changed by a live signal-value command;
- profile changes require explicit stop/re-arm;
- `smpSynch` remains evidence-driven and is never promoted by a user value edit;
- SCL/profile scaling and semantic mapping stay host/profile responsibilities; raw wire-count control remains available for exact interoperability testing;
- unsupported channel semantics are rejected rather than guessed;
- diagnostic streams remain separate from canonical output.

## Acceptance path

1. Load a vendor-neutral SCL regression profile and resolve it to Class A.
2. Configure initial 4I+4V values.
3. Start the ESP32-P4 publisher and verify canonical identity/layout.
4. Change Ia/Uc/phase/frequency while RUNNING.
5. Verify the next coherent generation is visible on wire without sequence reset, malformed payload, or mixed-generation channels.
6. Verify STOP suppresses canonical TX and START resumes according to the runtime policy.
7. Repeat for 4000 and 4800 events/s profile families once compiled-device profiles are integrated.