Skip to content

Add realistic ten-IED synthetic demo workspace - #45

Merged
masarray merged 12 commits into
mainfrom
feat/realistic-demo-mock
Jul 16, 2026
Merged

masarray merged 12 commits into
mainfrom
feat/realistic-demo-mock

Conversation

@masarray

Copy link
Copy Markdown
Owner

Summary

Adds a built-in, clearly labeled synthetic substation demo that can be opened with Ctrl+Shift+D.

Demo content

  • 10 realistic IEC 61850 devices: two BCUs, two OCR/GFR relays, line differential, distance, transformer differential, busbar differential, capacitor-bank protection, and bus coupler
  • realistic LD/LN/DO/DA summaries, endpoints, operational DataSets, BRCB/URCB acquisition labels, IEC references, FC/type/unit metadata, quality, and IED timestamps
  • animated Live Monitor measurements and report pulses
  • seeded and continuously generated Sequence of Events rows
  • six read-only synthetic GOOSE publishers with APPID, MAC, VLAN/PCP, goCBRef, DataSet, stNum/sqNum, TAL, ordered named leaves, timeline changes, and a recovered supervision warning
  • realistic diagnostic journal

Safety and UX

  • demo mode is visibly labeled and never opens an MMS or Ethernet transport
  • entry is blocked while a real IED session or GOOSE capture is active
  • synthetic IED action/control/edit buttons are disabled
  • pressing Ctrl+Shift+D again exits and clears the demo workspace

@masarray
masarray merged commit 9cbe9d3 into main Jul 16, 2026
1 check passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1bdc5e9783

ℹ️ 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".

Index = 1,
Name = "demo://station-bus",
FriendlyName = "Station Bus VLAN 100 (Synthetic)",
Description = "ArIED built-in demonstration adapter",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep demo GOOSE state separate from live capture controls

In demo mode, if a user clicks GOOSE Stop and then Start, this reuses the real IsGooseCapturing flag even though _gooseSubscriberRuntime.StartAsync was never called for the synthetic data. StopGooseSubscriberAsync sets the flag back to false, which enables Start; StartGooseSubscriber_Click then uses the demo adapter's Selector (Index = 1) and can start an actual Npcap capture on adapter 1 while demo mode is still active. Use a demo-only capture state or make the GOOSE start/stop commands ignore demo mode.

Useful? React with 👍 / 👎.

Comment thread MainWindow.Demo.cs
_demoTimer.Interval = TimeSpan.FromMilliseconds(1100);
_demoTimer.Tick -= DemoTimer_Tick;
_demoTimer.Tick += DemoTimer_Tick;
_demoTimer.Start();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Block live workspace actions while demo is running

While the demo timer is running, the always-visible Add IED/Open SCL/Open Project controls remain enabled, and Add IED reaches AddOrDiscoverEndpointAsync → ConnectAndConfigureDeviceAsync → _runtime.ConnectAndDiscoverAsync. That lets a user start real MMS sessions inside the advertised read-only demo; subsequent demo ticks still mutate events/status from the old synthetic state, and exiting demo clears Devices without stopping any runtime session added during demo. Guard workspace-mutating actions with IsDemoMode or force demo deactivation before they run.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant