Getting started

Everything in the tree builds from one CMake project: the four GUI apps, every node, the libraries and their tests. This page gets you from a clone to a dashboard on screen and a passing test run.

Prerequisites

   
CMake 3.16 or newer
Compiler C++23: recent clang or GCC
Qt 6 Core, Gui, Widgets, Svg, Multimedia, GuiPrivate, ShaderTools
FFmpeg libavcodec and libavutil, found through pkg-config
OpenSSL, zlib the Apple MFi and CarPlay stack, and compressed tiles
Rust toolchain cargo; the zenoh transport is a Rust crate built during the CMake step
pkg-config, git  

On macOS with Homebrew:

brew install cmake qt@6 ffmpeg openssl pkg-config rustup
rustup-init -y

Every other dependency (capnproto, zenoh, spdlog, yaml-cpp, nlohmann/json, cxxopts, libusb, hidapi, exprtk, mcap, sqlite3, and the rest) is fetched and built by CMake. The full list with versions and licences is on the third-party page.

Build

git clone https://github.com/redline-labs/digital_dashboard.git
cd digital_dashboard
cmake -S . -B build
cmake --build build -j8

The first configure fetches the third-party sources and builds the zenoh crate, so it takes a while. After that a rebuild is incremental.

Binaries land in build/ mirroring the source tree: build/apps/dashboard/dashboard, build/apps/scope/scope, build/nodes/inspect/inspect, and so on. On macOS the editor is an app bundle, build/apps/editor/editor.app.

Run a demo layout

./build/apps/dashboard/dashboard -c configs/dashboard/mercedes_190e_dash.yaml

The gauges sit at rest because nothing is publishing. Put some data on the bus from a second terminal:

./build/mock_data/test_data_publisher

configs/dashboard/ holds the other layouts (two MoTeC clusters, a CarPlay window, a map). They are all the same binary with a different file.

Run the tests

ctest --test-dir build -L unit          # fast and deterministic; run this always
ctest --test-dir build -L gui           # constructs Qt widgets, forced offscreen
ctest --test-dir build -LE slow         # everything that finishes quickly

-DBUILD_TESTING=OFF at configure time drops the test targets out of the default build.

Where next

  • Running the cluster, editing a layout, watching signals: Apps.
  • Putting a piece of hardware on the bus: Nodes.
  • Driving the apps headless from an agent: Agent control.
  • The runtime environment variables and data directories: Runtime environment.

This site uses Just the Docs, a documentation theme for Jekyll.