Skip to content

Commit 97227a8

Browse files
committed
Add smart live injection and resizable Qt dock shell
1 parent ab7704a commit 97227a8

41 files changed

Lines changed: 2034 additions & 508 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎apps/arstack_studio/CMakeLists.txt‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,42 @@ qt_add_qml_module(arstack_studio
3333
qml/StudioTheme.qml
3434
qml/SurfacePanel.qml
3535
qml/DockFrame.qml
36+
qml/DarkToolButton.qml
3637
qml/TelemetryDock.qml
3738
qml/WorkflowBar.qml
3839
qml/CalmButton.qml
3940
qml/NumericField.qml
4041
qml/StateBadge.qml
4142
qml/ProfileInspector.qml
43+
qml/ConfigurationHub.qml
44+
qml/PtpExpertPanel.qml
45+
qml/DeviceExpertPanel.qml
46+
qml/WaveformExpertPanel.qml
4247
qml/SignalMatrix.qml
4348
qml/QualityEditor.qml
4449
qml/SignalPreview.qml
4550
qml/StatusToast.qml
4651
RESOURCES
4752
assets/InterVariable.ttf
4853
assets/INTER_LICENSE.txt
54+
assets/LUCIDE_LICENSE.txt
55+
assets/lucide/x.svg
56+
assets/lucide/external-link.svg
57+
assets/lucide/chevron-up.svg
58+
assets/lucide/chevron-down.svg
59+
assets/lucide/radio-tower.svg
60+
assets/lucide/scale.svg
61+
assets/lucide/circle-off.svg
62+
assets/lucide/activity.svg
63+
assets/lucide/circle-check.svg
64+
assets/lucide/settings-2.svg
65+
assets/lucide/upload.svg
66+
assets/lucide/square.svg
67+
assets/lucide/play.svg
68+
assets/lucide/panels-top-left.svg
69+
assets/lucide/folder-open.svg
70+
assets/lucide/scan-search.svg
71+
assets/lucide/clock-3.svg
4972
)
5073

5174
target_link_libraries(arstack_studio PRIVATE

‎apps/arstack_studio/README.md‎

Lines changed: 57 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,20 @@ The Qt application is a presentation and control plane. The PC is not the 4000/4
3232
- profile identity: svID, data set, destination MAC, APPID, VLAN/PCP, confRev, publisher rate and counter modulus;
3333
- optional DataSet / SampleRate ASDU-field flags already supported by the current device bridge;
3434
- native serial 115200 8N1 control using Qt SerialPort;
35-
- live magnitude, phase, frequency, enable and quality controls;
35+
- smart USB discovery with firmware-handshake verification and sequential
36+
read-only fallback probing when Windows exposes only generic COM metadata;
37+
- explicit `IDENTIFY` device identity backed by the ESP32-P4 factory MAC, so
38+
the normal workflow never asks the operator to choose a COM port;
39+
- live magnitude, phase, editable AC frequency, DC, enable and quality controls;
40+
- mandatory live apply after verified connection; no mode switch can leave the
41+
operator editing a stale local copy while output is running;
42+
- an ARSVIN-compatible CT-saturation test shape with bounded DC offset,
43+
harmonic, order, and clip controls in Expert mode;
3644
- START / STOP / ZERO / SHOW and runtime telemetry;
3745
- keyboard-first 4I + 4V matrix navigation;
3846
- 3-phase linkage;
3947
- persistent generated phasor and waveform preview;
48+
- PTP Lab TX status, bounded runtime configuration, start/stop, and counters;
4049
- serial diagnostics surface.
4150

4251
The current deployment gate intentionally accepts only the embedded layout already supported by the ESP32-P4 runtime. Broader SCL structures may parse correctly while remaining `unsupported-layout`; the GUI does not guess them into the firmware profile.
@@ -45,6 +54,9 @@ The current deployment gate intentionally accepts only the embedded layout alrea
4554

4655
The phasor and waveform are **generated setpoint previews**. They visualize the configured engineering state. They are not independent Ethernet on-wire evidence.
4756

57+
CT Saturation is a deterministic test-waveform approximation, not a calibrated
58+
electromagnetic CT model. Its preview and parameters are labeled accordingly.
59+
4860
A later Process Bus monitor can add an observed trace and generated-vs-observed comparison without changing this distinction.
4961

5062
`smpSynch` remains an embedded timing/synchronization truth. The GUI must not claim synchronized output until the runtime has measured synchronization evidence.
@@ -79,32 +91,50 @@ Use `-NoLaunch` for a build-only verification. The launcher discovers the
7991
installed Visual Studio C++ toolchain with `vswhere`, reuses its bundled Ninja,
8092
and does not modify the user's global `PATH`.
8193

82-
## P2 fast-workflow command deck
83-
84-
The fixed command deck carries ARSVIN's short operator loop into the native Qt
85-
surface without copying its visual styling:
94+
## P2 fast-workflow ribbon
8695

87-
1. Source shows whether an engineering file or development profile is active.
88-
2. Device shows the serial connection state.
89-
3. Output shows the authoritative runtime gate (`OFFLINE`, `ARMED`, `RUNNING`,
90-
`PROFILE CHANGED`, or `PROFILE BLOCKED`).
96+
The compact Home / View / Engineering ribbon carries ARSVIN's short operator
97+
loop into the native Qt surface without copying its visual styling. Home keeps
98+
Balanced, Zero, Check, Configure, Deploy, Start, and Stop one action away. View
99+
owns dock visibility and detachment; Engineering owns SCL, smart discovery,
100+
PTP refresh, and diagnostics. Device and output state stay in the header/footer
101+
instead of being repeated as large workflow cards.
91102

92-
Open SCL, Balanced, Zero, Check, Deploy, Start, and Stop remain visible above
93-
the three-column workspace. Keyboard operators can use `Ctrl+O`, `Ctrl+B`,
94-
`Ctrl+0`, `Ctrl+K`, `Ctrl+D`, `F5`, and `F6`. Check reports readiness through
95-
the existing non-modal status surface; it does not bypass the deployment gate.
103+
Keyboard operators can use `Ctrl+O`, `Ctrl+B`, `Ctrl+0`, `Ctrl+K`, `Ctrl+D`,
104+
`F5`, and `F6`. Check reports readiness through the existing non-modal status
105+
surface; it does not bypass the deployment gate.
96106

97107
## P2 dock shell
98108

99109
The main window now behaves as a compact engineering shell rather than a fixed
100-
form. Signal Preview is a right-side dock that can be hidden or detached into a
101-
real secondary Qt window. Status History and Output Monitor share a collapsible
102-
bottom dock so runtime evidence stays visible without displacing the manual
103-
injection grid. The Views menu restores closed panels and detaches Preview.
104-
105-
This first dock phase intentionally keeps the safety-critical editor fixed in
106-
the center. Arbitrary panel dragging and layout persistence remain follow-up
107-
work; detaching a view must never move or duplicate the output controls.
110+
form. Engineering source, profile, scaling, quick setup, and runtime details
111+
live in a dedicated Smart / Expert Configuration window instead of consuming
112+
permanent space beside the injector. Phasor View and Waveform View are separate
113+
right-side docks; each can be hidden or detached into its own real Qt window.
114+
Status History and Output Monitor share a bottom dock that starts collapsed.
115+
The View ribbon restores closed panels, detaches either plot, and expands the
116+
bottom monitor.
117+
118+
The shell uses nested draggable splitters: editor vs preview docks, Phasor vs
119+
Waveform, and workspace vs bottom monitor. Every pane keeps a protective
120+
minimum size, while its split can be resized directly like an engineering MDI
121+
shell. The complete monitor header is clickable for smooth expand/collapse.
122+
123+
Smart mode is the default and guides device recognition, PTP inspection, and SV
124+
profile selection. Expert mode exposes the detailed SV profile compiler plus
125+
bounded PTP domain, transportSpecific, VLAN, interval, and peer-delay controls.
126+
Deploy and Start remain disabled until the serial response proves the connected
127+
port is the ARStack ESP32-P4 injector.
128+
129+
PTP remains explicitly labeled as a laboratory timing companion. The firmware
130+
serial surface now supports `PTP SHOW`, `PTP START`, `PTP STOP`, and bounded
131+
`PTP CONFIG`; none of these claims external grandmaster lock or changes the
132+
truthful `smpSynch` boundary.
133+
134+
The safety-critical editor remains the stable center pane. Split sizes are
135+
operator-adjustable, while arbitrary drag-reordering and layout persistence
136+
remain follow-up work; detaching a view must never move or duplicate the output
137+
controls.
108138

109139
For redistribution, package the required dynamically linked Qt runtime libraries with the normal Qt deployment tooling and review the applicable Qt/LGPL distribution obligations for the chosen module set.
110140

@@ -123,19 +153,23 @@ A green desktop CI proves that the application builds and QML instantiates in th
123153

124154
Before this desktop GUI is treated as a proven replacement for the current bench surface, retain hardware evidence for at least:
125155

126-
1. native serial connect and SHOW/PROFILE SHOW;
156+
1. native serial `IDENTIFY`, SHOW, and PROFILE SHOW using updated firmware;
127157
2. development 4000 fps START/STOP and live SET/FREQ/ENABLE/QUALITY updates;
128158
3. SCL Class-A profile deployment followed by PROFILE committed/armed confirmation;
129159
4. 4800 fps profile deployment and observed ~4800 fps with the expected smpCnt cycle;
130160
5. live magnitude/phase changes without unintended counter restart;
131-
6. generated-vs-on-wire identity comparison using a trusted capture path.
161+
6. DC and CT-saturation SHAPE commands with observed on-wire sample values;
162+
7. PTP Lab TX configuration/counters and explicit non-lock truth labeling;
163+
8. generated-vs-on-wire identity comparison using a trusted capture path.
132164

133165
## UI direction
134166

135167
The desktop visual target is a calm premium engineering instrument:
136168

137169
- Inter Variable is bundled under the SIL Open Font License and used for all
138170
interface, numeric, status, and plot-label text; no monospace family is used;
171+
- compact Lucide SVG icons are bundled with upstream license notices for the
172+
ribbon and dock controls;
139173
- Current and Voltage are the primary working matrices;
140174
- SCL/profile information stays available without dominating the work surface;
141175
- phasor and waveform remain persistent;
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
ISC License
2+
3+
Copyright (c) 2026 Lucide Icons and Contributors
4+
5+
Permission to use, copy, modify, and/or distribute this software for any
6+
purpose with or without fee is hereby granted, provided that the above
7+
copyright notice and this permission notice appear in all copies.
8+
9+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16+
17+
---
18+
19+
Some Lucide icons are derived from the Feather project and remain covered by
20+
the MIT License.
21+
22+
Copyright (c) 2013-present Cole Bemis
23+
24+
Permission is hereby granted, free of charge, to any person obtaining a copy
25+
of this software and associated documentation files (the "Software"), to deal
26+
in the Software without restriction, including without limitation the rights
27+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
28+
copies of the Software, and to permit persons to whom the Software is
29+
furnished to do so, subject to the following conditions:
30+
31+
The above copyright notice and this permission notice shall be included in all
32+
copies or substantial portions of the Software.
33+
34+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
35+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
36+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
37+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
38+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
39+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
40+
SOFTWARE.
Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading

0 commit comments

Comments
 (0)