APIC – System Layout

Live, graphical view of your streams.json topology, data flow, rates, and errors

Overview

System Layout is a standalone desktop application that reads a project's streams.json and draws its devices and their interactions graphically, at runtime, against a live CoreEngine instance. It shows data flow, rates, and errors in and out of every device as they happen.

1. Layout & Grouping

System Layout converts the flat stream definitions in streams.json into a diagram automatically — no manual layout is required:

  • CoreEngine is placed at the center of the diagram.
  • Streams that share the same driver and IP address (remoteIP/IP) are grouped into one Device box, arranged clockwise around CoreEngine.
  • Streams with no IP address (e.g. local/file/serial drivers) each get their own dedicated Device box.
  • Within a Device box, each stream appears as its own node, connected back to CoreEngine.
Grouping by IP means one physical target machine running several streams shows up as a single device on the diagram, instead of one box per stream — mirroring how the streams are physically deployed.

2. Data Flow Visualization

A connecting line runs between CoreEngine and every stream node, direction depending on the stream's block direction:

  • A block with direction out flows CoreEngine → stream.
  • A block with direction in flows stream → CoreEngine.
  • A stream with no declared blocks is treated as bidirectional.

Each line animates live from the block's message counter in shared memory, so you can see traffic actually moving, not just a static diagram:

  • Green arrow — data is flowing normally; the animation speed reflects the live message rate.
  • Red arrow — the block's error counter has incremented since the last update.

3. Interacting with the Layout

Right-click any node in the diagram for a context menu:

  • Activate — activate that state/stream.
  • Show Properties — opens the Stream Monitor window for that stream.
  • Move — relocate the node within its device group.

Right-clicking a Device box shows Show Properties for the device's state controller.

A Device box has its own context menu, separate from the per-stream one above:

  • Delete — remove the Device box from the layout.
  • Move — drag one or more of its interfaces onto another Device box, merging several interfaces into a single device when you want a different grouping than the automatic driver/IP grouping.

4. Stream Monitor Window

Opening Show Properties on a stream shows everything about that connection in one place:

SectionShows
DriverThe driver name and its full configuration, flattened out field by field (matches the driver's entry in streams.json).
BlocksEvery block on the stream, with its direction (in/out), live message count, and error count.
RateA live rate readout in the window title (e.g. "50 Hz · 20 ms"), updated as messages arrive.
A block with a non-zero error count is highlighted in red in the block list, so a failing connection is immediately obvious without leaving the window.

5. Toolbar & Diagnostics

The toolbar includes a SimEng picker to attach to a running CoreEngine (local or reflected), plus three buttons that open the same shared diagnostic windows used by DIPanel: