How openlightingproject/ola works
OLA is a lighting-control distribution framework: client applications submit DMX or RDM control work to the olad daemon, which routes it through universes and ports to protocol or hardware plugins. Plugins abstract diverse network protocols and devices; the README also identifies protocol conversion and DMX-over-IP gateway use. The graph includes the client, daemon, plugin, web-control, and protocol layers. Runtime wiring beyond the sampled plugin manager and UI code is based on documented product roles and repository structure, not a complete source trace.
Main entry points: OlaServerServiceImpl.cpp RPC service · PluginAdaptor.cpp Plugin adaptor · ArtNetPlugin.cpp Protocol and hardware plugins · RDMAPI.cpp RDM control
Components 19
Clients and UI
- C++ client library
ola/OlaClient.cpp - Web control UI
javascript/ola/common/server.js
Daemon Core
- Client broker
olad/ClientBroker.cpp - RPC service
olad/OlaServerServiceImpl.cpp - Daemon server
olad/OlaServer.cpp - Plugin manager
olad/PluginManager.cpp - Universe routing
olad/plugin_api/Universe.cpp - Device management
olad/plugin_api/DeviceManager.cpp - Port API
olad/plugin_api/PortManager.cpp - RDM control
common/rdm/RDMAPI.cpp - HTTP server
olad/OladHTTPServer.cpp
Device Plugins
- Plugin adaptor
olad/plugin_api/PluginAdaptor.cpp - Protocol and hardware plugins
plugins/artnet/ArtNetPlugin.cpp
Lighting Protocols
- sACN transport
libs/acn/E131Sender.cpp - ACN protocol stack
libs/acn/E131Inflator.cpp - E1.33 RDMnet
libs/acn/E133Inflator.cpp
Other components
- Lighting operator
- Client application
- Lighting equipment
Connections 21
- Lighting operator → Client application: issues control
- Client application → C++ client library: uses library
- C++ client library → Client broker: RPC requests
- Web control UI → HTTP server: HTTP requests
- HTTP server → RPC service: dispatches
- Client broker → RPC service: dispatches
- Daemon server → RPC service: hosts
- Daemon server → Plugin manager: manages plugins
- Plugin manager → Plugin adaptor: configures plugins
- Plugin adaptor → Device management: registers devices
- RPC service → Universe routing: routes DMX
- Universe routing → Port API: selects ports
- Port API → Plugin adaptor: dispatches output
- Plugin adaptor → Protocol and hardware plugins: adapts plugin calls
- RPC service → RDM control: handles RDM
- RDM control → Protocol and hardware plugins: sends RDM
- Protocol and hardware plugins → sACN transport: uses transport
- sACN transport → ACN protocol stack: encodes packets
- Protocol and hardware plugins → Lighting equipment: controls devices
- ACN protocol stack → Lighting equipment: sends sACN
- RDM control → E1.33 RDMnet: RDMnet support