Skip to content

Repository Layout

Subprojects

The Repository for Marvin Light Control consists of six different subprojects which each serve their own specific use case.

  • Directorymarvin_light_control
    • Directorymlc_communication/
    • Directorymlc_data/
    • Directorymlc_interface/
    • Directorymlc_ofl/
    • Directorymlc_server/
    • Directorymlc_site/

mlc_communication

This Rust library contains all common networking related code. MLC uses the remoc Crate to allow function based communication between the server and interface.

Specs:

depends_on:
- mlc_data
is_used_by:
- mlc_server
- mlc_interface

mlc_data

This Rust library contains all the common data types and functionality which is needed across the backend and frontend. Examples are the blueprint representation of Fixtures or helper Types such as BoundedValue<MIN, MAX, _>

Specs:

depends_on:
is_used_by:
- mlc_communication
- mlc_interface
- mlc_server

mlc_interface

The interface contains an Dioxus project targeting Desktop platforms. It holds as the name suggests the inetrface which connects to the server to control its functionality. It is the primary way of creating and controling projects on the server.

Specs:

depends_on:
- mlc_communication
- mlc_data
is_used_by:

mlc_ofl

The Rust ofl project acts as both a library and an executable, for integrating with the Open Fixture Library. It mainly contains parsing functionality to convert fixture blueprints from OFLs json format, into MLCs FixtureBlueprint type. Even though both data formats have a lot in common and MLCs FixtureBlueprint was based on OFLs json, due to the need of a very rigid data format, some variable defined aspects need to be streamlined by the parser. Even though MLCs goal is to be able to import 100% of OFLs library, it is not the goal to use all the features OFl captures.

Specs:

depends_on:
- mlc_data
is_used_by:
- mlc_server

mlc_server

The Server is the heart of all action it runs as a dedicated headless program which exposes control functionality via the mlc_communication Api. It’s machine is responsible for communicating to endpoints running effects and maintaining project data. To leverage it’s highly multithreaded architecture it is generally advised to run it on a maschine with at least eight logical processors.

Specs:

depends_on:
- mlc_communication
- mlc_data
- mlc_ofl
is_used_by:

mlc_site

This is the Astro Site you are currently on and contains all the source of the main MLC Website at marvinlightcontrol.de