Open Lighting Embedded
Open Lighting Embedded (OLE) is an open source DMX512 / RDM stack for PIC32 microcontrollers. The software is developed as part of the Open Lighting Project.
Documentation
The OLE User Manual describes how to use an OLE device.
The OLE Developer Documentation, is targeted towards people who want to know more about the platform and how to modify it.
Licensing
The OLE codebase is licensed under the LGPL.
The unit-testing code & mocks are licenced under the GPL.
The hardware designs and the documentation is licensed under the Creative Commons BY-SA.
Directory Layout
βββ Bootloader # The DFU bootloader
β βββ firmware
β βββ Bootloader.X # Bootloader MPLAB X project
β βββ src # Bootloader source code
βββ boardcfg # Software configuration for each board
βββ common # Common code shared between the bootloader and application.
βββ firmware # The main DMX/RDM application
β βββ ja-rule.X
β βββ src
βββ linker # linker scripts for the bootloader & application
βββ tests # Unit tests
β βββ harmony # The mock Harmony modules
β βββ include # Test headers
β βββ mocks # Module mocks.
β βββ sim # A simple PIC32 simulator
β βββ tests # The unittests
βββ tools # tools to upgrade the firmware on the device.
βββ user_manual # The user manual
Getting Started
The firmware/ja-rule.X project can be opened in MPLAB X.
To run the unit tests, you'll need:
gmock / gtest should not be installed system-wide, see https://code.google.com/p/googletest/wiki/FAQ for the reasons.
The install-gmock.sh helper script will download and build gmock & gtest in the local directory.
Once gmock has been built, run:
autoreconf -i
./configure
make
make check
PLASA Identifiers & UIDs
The code by default uses the Open Lighting PLASA ID (0x7a70). This range is owned by the Open Lighting Project and at this time we do not sub-license ranges to anyone else. You may not ship product with the Open Lighting PLASA ID.
Per https://wiki.openlighting.org/index.php/Open_Lighting_Allocations the UIDs 7a70:fffffe00 to 7a70:fffffefe may be used for development (in house) purposes.
Dev Notes
A bulk-in transfer with a full 512 bytes of DMX data takes < 1ms on my mac laptop. Given this, I felt that a simple request / response model with a double buffer would suffice.
For DMX / RDM messages, the response message is sent when the transceiver completes the transaction, so the host received positive acknowledgement.