Ja Rule
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Bootloader/firmware Fix more typos May 30, 2018
boardcfg Fix a load more codespell errror May 29, 2018
config Fix a load more codespell errror May 29, 2018
data/rdm Add the standalone Stellascapes Number1 PID file Feb 17, 2016
doxygen More codespell fixes Feb 26, 2018
firmware Fix a final typo May 31, 2018
hardware/number1 Move the number1 design to a directory Sep 7, 2015
linker Fix the linker scripts for number8 Sep 5, 2015
scripts Add some more and skip some more linting Mar 7, 2016
tests Fix a load more codespell errror May 29, 2018
user_manual Fix some codespell errors Feb 26, 2018
.codespellignore Even more codespellignore May 30, 2018
.gitattributes Add the initial hardware designs Sep 6, 2015
.gitignore Ignore another generated binary Feb 12, 2017
.travis.yml Fix a typo Jul 31, 2018
Doxyfile Fix a typo Jul 31, 2018
Makefile.am Add instructions. Feb 28, 2016
README.md More fixes. Feb 28, 2016
aminclude.am Move autotools to the top level Sep 11, 2015
configure.ac Really fix the build Feb 22, 2018
install-gmock.sh Really fix the build Feb 22, 2018


Open Lighting Embedded

Build Status Coverity Scan Status Coverage Status

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.


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.


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
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.