Several open-source OpenLCB/LCC libraries are available to assist with Node Development.
C/C++ Libraries
The list below is in alphabetical order.
LibLCC
A C library implementing the LCC protocol. Designed to be agnostic to
the hardware that it is running on, it can be used on both MCUs
on either bare metal or Linux. Also available through the Arduino
Library Manager. Sub-project of my TrainUtils project, which contains
various utilities for Loconet and Cab Bus communications. https://github.com/rm5248/TrainUtils/tree/master/LCC
OpenLcbCLib
C library and examples to create an OpenLcb (NMRA LCC) compliant Node. It is written to be agnostic to what MCU/PC it is compiled against. It supports virtual nodes and is written such that implementing CAN/TCP or other physical layers should be easy to achieve. https://github.com/JimKueneman/OpenLcbCLib/tree/master
OpenLCB_Single_Thread
The oldest Arduino library, developed during the early days of OpenLCB prototyping, is available here: https://github.com/openlcb/OpenLCB_Single_Thread. It is still being maintained.
OpenMRN and OpenMRNLite
The OpenMRN library exists in two forms:
- OpenMRN library, which is based on FreeRTOS, is available here: https://github.com/bakerstu/openmrn
- OpenMRNLite, which has been adapted to run in the Arduino Environment, is available here: https://github.com/openmrn/OpenMRNLite
The full version of OpenMRN is used in the TCS products, including the LT-50 and LT-100 throttles, CS-105, and MRC’s Nexxt platform. However, building code with the full version requires Linux or a Mac (on Windows, you can use WSL with Ubuntu).
OpenMRN Documentation is available here: https://openlcb.github.io/OpenLCB_Technical_Introduction/title-page.html
A slide presentation introducing OpenMRNLite is available here: https://docs.google.com/presentation/d/1_g9B7z2QH9oO9RFB_pEbV1Ok-HAFlI29Pb4WuWfVP3A/edit?slide=id.g37a2070c7cf_0_0&pli=1#slide=id.g37a2070c7cf_0_0
A series of YouTube videos are available here: https://www.youtube.com/watch?v=n9zZwy4TjzE&list=PL2Mz1GBib5AueCSIC4eFR1ufDVSxo34-R
Java
Java implementation of OpenLCB / LCC protocols. This implementation operates inside JMRI, and can also be used inside Android apps: https://github.com/openlcb/OpenLCB_Java
Python
https://github.com/openlcb/OpenLCB_Python
Swift
A Swift implementation, used with SwiftUI to make the LccTools app:
