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_datais_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_datais_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_datais_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_oflis_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