ATTENTION

The Light Program parser is not present.
This means that you are most likely trying to run a source file meant for development rather than the actual "configurator.html" program.
 
You can obtain the correct "configurator.html" at https://github.com/laneboysrc/rc-light-controller/blob/master/mk4-tlc5940-lpc812/mk4-download-me.zip
 
To fix this error during development, change to the "tools/light-program-assembler/" directory and run "make".

RC Light Controller configuration tool

Configurator version: 2025-05-01
Firmware version:
This tool is part of the LANE Boys RC Light Controller documented at https://github.com/laneboysrc/rc-light-controller.
For more information please refer to the user manual:
Mk4 Light Controller documentation (PDF)
Mk4 Light Controller Anleitung (Deutsch, PDF)

Quick start

Using the menu on the left you can adjust the configuration to suit your vehicle and RC system.
After you are done, you can save the firmware image, which will have the selected configuration embedded. The firmware will be stored in the download folder of your web browser.
Flash the firmware into the light controller as described in the light controller user manual.
You can also save the configuration into a text file, which can be loaded at a later point in time; for example to make further tweaks.
It is advisable that you always save a copy of the configuration for future reference. While it is possible to retrieve all settings from a firmware image, some data like variable names and comments in Light Programs are lost as they are not stored into the firmware.

Operating mode

The light controller reads servo signals from the receiver. The steering signal must be connected to input ST/Rx on the light controller, the throttle signal to TH/Tx and the Channel 3 (AUX) signal to the CH3 input.
In this mode, the light controller does not read servo signals directly, but from a Pre-Processor. The Pre-Processor is a small, separate circuit board that connects to the receiver and converts the servo signals into a serial data stream. The light controller can be connected to the Pre-Processor with a single servo extension cable. This simplifies wiring of a RC car, especially when the light controller resides on the body while the receiver is mounted on the chassis.
The Light output from the Pre-Processor must be connected to the ST/Rx input of the light controller.
In this mode, the light controller does not read servo signals directly, but from a Pre-Processor. This particular mode requires the 5-channel Pre-Processor circuit board, which is capable of reading up to five servo channels from a receiver. The 5-channel Pre-Processor combines the servo signals into a serial data stream so that the light controller can be connected with a single servo extension cable.
The Light output from the 5-channel Pre-Processor must be connected to the ST/Rx input of the light controller.
In this mode, the light controller reads servo signals from a receiver an i-Bus output.
The i-Bus output of the receiver must be connected to the ST/Rx input of the light controller.
i-Bus channel 1 and 2 are mapped to ST and TH. The AUX channels can be mapped below.
In this mode, the light controller reads servo signals from a receiver an S.Bus output.
Important: S.Bus is only supported on Mk4P Rev3 (or later) hardware!
The S.Bus output of the receiver must be connected to the ST/Rx input of the light controller.
The Baudrate must be set 100000. When using a Slave light controller, please also configure the Slave for this Baudrate.
Note that Testing function of the configurator can not be used when S.Bus is enabled.
S.Bus channel 1 and 2 are mapped to ST and TH. The AUX channels can be mapped below.
Some receiver have a CPPM output, which encodes information of all servos in a single electrical signal. The light controller can read this signal, so only a single cable needs to be connected from the receiver to the light controller.
Please consult your the instructions of your RC system to check whether your receiver has a CPPM output.
In case more than 16 LEDs are required, it is possible to daisy-chain two light controllers. One needs to be configured as Master and have the Slave output activated, the other one must be configured as Slave, for a total of 32 LEDs.
The output from the Master must be fed into the ST/Rx input on the Slave.
The Master controls the light functions of both light controllers. Ensure that the baudrate of both Master and Slave match.
The light controller can operate without any RC system being connected. This is useful for non-RC applications such as lighting up doll-houses or model railways.
In this mode you would either program the light controller for automatic operation using the Light Programs, and/or use a push-button connected to the CH3 input.
Choosing this mode creates a firmware that is suitable for flashing into the Pre-Processor.
Choosing this mode creates a firmware that is suitable for flashing into the 5-channel Pre-Processor.
Choosing this mode creates a firmware that is suitable for flashing into the 5-channel Pre-Processor with integrated switching outputs.
Important: In most cases you will want to configure the light controller output in the Output functions tab either for Slave output or Pre-Processor output.
Generates a firmware image suitable for hardware test. As soon as power is applied, the LEDs flash in test sequence.

i-BusS.Bus channel to AUX channel mapping


You can map any i-BusS.Bus channel between 3 and 911 to the AUX channel. AUX2 to AUX6 are always mapped sequentially after the AUX channel.
  • i-BusS.Bus channel maps to light controller AUX
  • i-BusS.Bus channel maps to light controller AUX2
  • i-BusS.Bus channel maps to light controller AUX3
  • i-BusS.Bus channel maps to light controller AUX4
  • i-BusS.Bus channel maps to light controller AUX5
  • i-BusS.Bus channel maps to light controller AUX6
Note: AUX4, AUX5 and AUX6 can only be used for custom functions in light programs.

Baudrate


The baudrate for serial input/output functions. This setting applies to the Pre-Processor input and output, i-Bus and S.Bus input, and the Slave input and output.
Ensure that Master and Slave are using the same baudrate.
Use 115200 Baud for Pre-Processor and i-Bus.
Use 100000 Baud only for S.Bus.

ESC type


After going forward, the ESC allows going in reverse when the throttle has been in neutral for a certain amount of time.
Examples: HPI SC-15WP, HobbyKing HK-SENS-60A

After going forward, the first push backwards on the throttle is always engagin the brake function, regardless whether the throttle has been in neutral for a long time. The second push on the throttle engages reverse function. Note: the timeout can be adjusted in the advanced configuration section below.
Examples: Tamiya TEU-104BK, TEU-105BK.

Forward and reverse engage immediately when the throttle is moved to the corresponding position. Many ESC call this behaviour a "crawler mode"

For racing purpose some ESC can be configured to disable reverse.

CH3/AUX type


The CH3/AUX function on the transmitter is either a two-position switch, or a toggle button that moves the servo between two endpoints.
Examples: FlySky GT3 series, HobbyKing HK310

The CH3/AUX function on the transmitter has two positions that are selected with two buttons on the transmitter. Pressing the down button moves to position 1, pressing the up button moves to position 2.
Selecting this option requires to always press the down button first before entering the desired number of clicks
Examples: HobbyKing X3S, Tactic TTX300

The CH3/AUX function on the transmitter is a push button that moves the servo to the opposite endpoint while the button is pushed, but moves the servo back to the original position once the button is released.
Examples: Futaba 4PL

A push button directly connected to the light controller's CH3 input (i.e. a physical button, not a servo signal from the receiver). Useful for 2-channel radios.

AUX configuration




Not used: Use this setting if you want to use this AUX input within a Light Program, instead of one of the pre-defined functions.

Multi-function: 1-click is "more lights"; 2-clicks is "less lights"; 3-clicks is "toggle lights on/off"; 4-clicks is "hazard lights on/off" ...

Servo control: Control a servo connected to the light controller output from this AUX channel. Note that the servo end points, center position and reversing can be adjusted using 8-clicks on a Multi-function control.
This function is only applicable when (no output function) is selected as Servo output function in the Output functions tab.

Indicators: Manually control the indicators. Disables the automatic indicator functionality of the light controller.

Hazard lights on/off: Manually control hazard lights.

Light switch: Control the virtual light switch, as configured in the LED configuration tab, directly from an AUX channel. Your AUX channel should have at least as many positions as you have light switch positions in use.

Disable outputs: When the corresponding AUX channel outputs a servo pulse longer than 1.75 ms then all light outputs are turned off. This allows you to disable all manual and automatic light functions from the transmitter.

Push button on the light controller


This function allows users to connect a push button directly to the light controller's CH3 input. The push button behaves as Multi-function control as described above.
You can also use the CH3 input of the light controller as digital input in light programs. In that case disable the push button functionality.

AUX configuration


Not used: Use this setting if you want to use this AUX input within a Light Program, instead of one of the pre-defined functions.

Multi-function: 1-click is "more lights"; 2-clicks is "less lights"; 3-clicks is "toggle lights on/off"; 4-clicks is "hazard lights on/off" ...

Servo control: Control a servo connected to the light controller output from this AUX channel. Note that the servo end points, center position and reversing can be adjusted using 8-clicks.
This function is only applicable when Steering wheel servo ouput is enabled in the Output functions tab.

Indicators: Manually control the indicators. Disables the automatic indicator functionality of the light controller.

Hazard lights on/off: Manually control hazard lights.

Light switch: Control the virtual light switch, as configured in the LED configuration tab, directly from an AUX channel. Your AUX channel should have at least as many positions as you have light switch positions in use.

Disable outputs: When the corresponding AUX channel outputs a servo pulse longer than 1.75 ms then all light outputs are turned off. This allows you to disable all manual and automatic light functions from the transmitter.

Channel reversing

Note that steering and throttle reversing can also be configured from the transmitter once the light controller is installed, by entering 8-clicks on CH3/AUX. For more details please refer to the Mk4 Light Controller documentation (PDF).

OUT15S control

The switched light output OUT15S follows LED output OUT15. When OUT15 is on, OUT15S is on as well, which means that the output pin is pulled to GND (supply minus).
When this checkbox is enabled, the operation of OUT15S is inverted. This means when OUT15 is on at any brightness, then OUT15S will be now off. But when OUT15 is off (value 0), then OUT15S will be on (pin pulled to GND).
This can be useful to control an external DC/DC converter with an enable pin.

Pin assignment

When a Pre-Processor is used, the TH/Tx pin is available as second output of the light controller. The light controller can output one servo signal, and one UART signal (serial port; for example to connect a Slave light controller).
You can choose which of the pins receives the Servo signal. Functionality-wise it makes no difference, but it may make wiring easier.

Output function on pin OUT/ISP

Servo output function


The light controller does not output a servo signal on pin OUT/ISP. on the pin assigned to the servo function.

The light controller can be connected to a servo, that moves the steering wheel in the cabin of the car. The output follows the steering input, but the endpoints and direction can be configured independently of the steering function of the car.

When enabled, a servo signal is generated that allows control of a two-speed or three-speed gearbox.


When enabled, the gearbox can be controlled from Light Programs only, and not via 1- or 2-clicks on CH3.

This function can be useful to control sequences of servo positions, or for example to randomize head movements of a figure.

UART output function


No signal on the pin assigned to the UART function.

By using a second light controller configured as Slave a total of 32 LEDs can be controlled. A single cable must be run between the Master OUT/ISP pin pin on the Master assigned to the UART function and the Slave ST/Rx pin.
When this option is selected, a second set of LED configuration becomes visible below.

When enabled, the light controller outputs the steering, throttle and CH3/AUX signals as serial data stream. This function can be useful for connecting custom hardware to the light controller.

LED configuration

Click on a field in the table to set the LED brighness value in percent for a particular function.
Click on the icon to configure advanced parameters for simulating incandescent bulbs and weak ground connections. The background of the icon turns orange when advanced features are in use.
You can configure car functions and light up LEDs for diagnostics purpose, for example when there is no signal being received. Use the arrow symbols next to car functions or diagnostics to change between them.
Instead of using the table, you can also write Light Programs that define the light output for the diagnostics. Note that Light Programs have priority over table-driven diagnostics.
Hover the mouse over individual items to see an explaination about their function.
Use the clear button to reset all LED configurations to off. Warning: this can not be undone; save your configuration before clearing!

Master

Car functionsDiagnostics
Always on Light switch position Indicator Reversing Servo output
LED 0 1 2 3 4 5 6 7 8 Tail Brake Reverse left right Initializing No signal steering throttle left centre right

Slave

Car functionsDiagnostics
Always on Light switch position Indicator Reversing Servo output
LED 0 1 2 3 4 5 6 7 8 Tail Brake Reverse left right Initializing No signal steering throttle left centre right

Light programs

Light programs are small scripts that can perform custom light sequences. See light-programs.md for an details on the programming language.
Press F11 to toggle fullscreen mode within your browser window. The keybindings are similar to the Sublime Text editor.
Use the Check... button below the editor to perform a syntax check on the Light Programs.
Light programs correct!
        

Advanced settings

Note: all timing values have a resolution of 20 ms.

Initial light switch position

When the car is turned on, the virtual light switch is set to the given position. This allows to turn the car lights on by default, but still be able to turn them off on demand using CH3.

Automatic brake lights

If enabled, the light controller turns on the brake lights for a random amount of time every time the throttle input goes from forward driving to neutral.
This provides a realistic brake light effect since often the brake function is not engaged in scale driving, but rather we return the throttle to neutral and let the car coast to a stop.
If enabled, the light controller turns on the brake lights for a random amount of time every time the throttle goes to neutral after reversing. This setting only takes effect when the ESC mode is set to Forward/Brake/Reverse or Forward/Reverse.

ESC brake function

This setting deterimes the time how long the throttle has to be in neutral before the ESC allows going into reverse. It only applies if the ESC type is Forward/Brake/Reverse (with timeout).

Reversing light extension

After driving the car in reverse, the light controller keeps the reversing lights on for a random time between the specified min/max after the throttle has returned to neutral. This adds realism as drivers usually take a short time until they disengage reverse gear.
The reversing lights are immediately turned off when the car drives forward.
This function applies only to ESC with a forward/reverse/brake or forward/reverse function.

Indicators

This value sets the frequency of the indicators and hazard lights. For most countries the indicator blink frequency is 1.5 Hz, which means the half-period time should be 333 ms. Enter different numbers for the bright and dark blink period when needed, e.g. for old US cars.
When enabled, setting values for tail, brake and indicator for a particular LED enables US-style indicators. When this flag is enabled then the indicators have priority over the brake lights (= correct setting for US cars). When the flag is disabled the brake lights have priority (= behavior of early light controller versions).
By default (when this checkbox is off), the indicators can only be engaged when both steering and throttle are in neutral for one second, and then you turn the steering wheel.
When this checkbox is checked the indicators can be enagaged regardless off the throttle position by just turning the steering wheel.
In order to prevent the indicators coming on unintentionally during driving, the throttle and steering must be in center for a specified time before the indicators can be engaged by turning the steering.
When the indicators are engaged and steering is returned to neutral, the indicators continue to blink for the specified amount of time.
The indicators can be turned off immediately by turning the steering in the opposite direction.
The steering wheel must be turned for at least the specified percentage of steering lock before the indicators turn on.

Click behaviour

In order to be able to perform multiple functions on a single CH3/AUX input, a method of multiple clicks -- similar to the concept used on computers -- is employed.
The timeout value determines how quickly the light controller reacts to CH3/AUX. A low value means you must switch CH3/AUX quickly, but also that the reaction of the function engages quickly. a high value means you must wait longer until the light controller accepts the input. 300 ms works well for the LANE Boys.
If enabled, the user has to input an additional click. So for more lights, the user has to enter 2-clicks (instead of 1 click), and so on. 1-click has no function when the checkbox is checked.
Use-case: Traxxas TRX-4 where the gearbox and light controller share the same channel. Then the user can switch "slow" to change the gear, and fast (2 or more clicks) to operate the lights.
If enabled, 3-clicks turns all lights off -- unless the lights are already off, in which case the lights will be switched on to the highest used light switch position.
By default (checkbox off), 3-clicks will switch to the highest used light switch position -- except when the light switch is already at that highes position, in which case the lights will be switched off (light switch position 0)
For 3 channel use, by default CH3/AUX is assumed to be multi-function control for lights and hazard lights.
If this setting is enabled, you can configure the CH3/AUX channel for a custom function.

Servo input

The light controller features automatic detection of center and endpoint for both steering and throttle.
This value determines how much the initial endpoint left and right is set from the center value after power up.
A servo pulse is usually between 1000 and 2000 µs, with 1500 µs being the centre. Dual-rate and end-point adjustments in the transmitter change the minimum and maximum received pulse duration.
A good value for the initial endpoint is 250 µs, which corresponds to 50% of nominal servo travel. If the light controller sees a signal larger than that, it automatically adjusts its endpoint.
If you set this value too small the lights may flicker after power on until you perform steering and throttle inputs, which adjust the endpoints to your transmitter.
If you set this value too large steering and brake signals may not engage properly.
In order to prevent flickering due to mis-detection of steering and throttle inputs, a threshold is applied before steering and throttle are detected as being engaged.
When the steering/throttle is in the center, it first has to be engaged past the high percent mark before the light controller accepts the input.
When returning to center, the steering/throttle value has to go below the low threshold before it is recognized as being in center.
Good values depend mostly on the throttle and ESC of your car. If the values are set to high the car may be driving already long before the light controller recognizes the car as being moving. If the values are set too low then brake and reverse lights may flicker when driving at very slow speeds.
When using a 5-channel Pre-Processor, this value determines the switching point and hysteresis for 2-position AUX functions (e.g. multi-function control, hazard lights on/off)
Valid range: -100..+100
When using a 5-channel Pre-Processor, this value determines the switching point and hysteresis for the left-to-centre and centre-to-right transition of 3-position AUX functions (e.g. manual indicators on/off).
Valid range: -100..+100
Important: the values for left-to-centre must be lower than centre-to-right.
Servo signals have a nominal pulse width of 1.5 ms when in center, and 1.0 / 2.0 ms when at the end points. In reality servo pulses can go below 0.9 ms and above 2.3 ms when features like end-point adjustment and sub-trim are applied.
The values above define what minimum and maxium pulse width a servo signal is allowed to have in order to consider it valid. This setting only applies to servo reader configurations.
This value applies to servo reader configurations. After power on, the light controller waits for the first servo pulse to arrive. The time given in this field determines how long the light controller waits after the first servo pulse until it in itializes neutral points of steering and throtte, and starts its normal operation.
If no servo signal is received within the given time, for example because the transmitter is out of range, then the light controller sets the no-signal flag internally, which can be used in light programs to perform a certain function.
Note that most likely this will not work well on modern digital transmitters, because the failsafe function will output valid servo signals even if the transmitter is out of range.

Shelf queen mode

If enabled, the light controller simulates driving behavior and turns lights on and off when the "no servo signal" condition applies for more than 5 seconds.
If this setting is disabled, you can still manually control shelf queen mode from a Light Program.

Servo output

Servo signals have a nominal pulse width of 1.5 ms when in center, and 1.0 / 2.0 ms when at the end points. For special uses cases it may be required to change these values for a servo that is connected to the light controller.
Please consult the documentation of your servo before changing these values. Using wrong values may physically damage the servo.

Gearbox servo output

The value determines how long the gearbox servo is activated (= receives servo pulses) after a gear has changed or the idle time (see below) expires.
The value determines for how long the gearbox servo stays idle (= servo pulses are turned off) when there is no gear change. This prevents the servo from being damaged due to the servo constantly pushing against mechanical stops of the gearbox.
Setting the value to 0 keeps the gearbox servo active at all times.

Gamma correction

The current flowing through an LED determines its light output. However, the human perception is not linear to the amount of light. The light controller therefore offers a gamma correction so that if you set a light value of 50%, it should be roughly perceived has half as bright as the same LED set to 100%.
Useful values are between 1.8 and 2.2.

This programming function only works with the WebUSB programmer shown below.

When using the USB-to-Serial adapter, please use the LPC81x_ISP tool described in the light controller manual.

Important

t Run this program from https://laneboysrc.github.io/rc-light-controller
WebUSB does not work on http: protocol (except when running on localhost)
For local testing just load the Configurator from disk.
This web browser does not support the required WebUSB function. A list of compatible browsers can be found at https://caniuse.com/#search=webusb
(newest on top)

Diagnostic messages

Warning

The Baudrate in the configuration is set to 38400, but this function can only work at 115200 Baud. Change the Baudrate temporarily for testing.
The UART output is used in the configuration. Diagnostics messages will not be shown.
The UART output has been configured on the OUT/ISP pin. Diagnostics messages will not be shown.

Steering

Throttle

Expert settings

AUX

AUX2

AUX3

AUX4

AUX5

AUX6

(newest on top)

Diagnostics sent by the light controller

What's new

2025-05-01 Firmware 2.60
  • The advanced settings now allow configuring the servo output. Previously the range of the servo output pulse was fixed at 1 to 2 ms, with is an industry standard. Now it is possible to adjust the minimum and maximum pulse duration, as well as the center position. Note that using values outside of the one supported by particular servo may cause phsical damage.
2025-02-04 Firmware 2.59
  • The multi-function control, which requires a two-position switch or momentary pushbutton, now uses the advanced setting for "threshold low/high for two-position AUX function" to determine its switching point. This allows using controls on the transmitter that are not strictly a two-position switch, such as an analog stick with a spring returning the stick to center position.
2025-01-30 Firmware 2.58
  • Prevent light programs from being automatically translated by browser-internal language translations.
2025-01-12 Firmware 2.58
  • Light program servo output now available on a Slave light controller.
    It is now possible to connect a servo to OUT/ISP on a Slave and have the servo controlled by a light program in the Master light controller.
    This feature has the following limitation:
    • The servo on the Slave can only be controlled from a light program in the Master.
    • The servo on the Master can be configured independently from the Slave. For example, the Master servo output can be set to Steering wheel output and the Slave servo independently controlled from a light program. However, when the Master is configured for light program control then servos connected to Master and Slave will move synchronusly.
    • The endpoints on the Slave can not be adjusted. The servo pulse range is fixed 1.0 .. 2.0 ms with 1.5 ms being center.
      (On the Master it is possible to adjustment center and endpoints with 8 klicks the Multi-Function control; See user manual for more info.)
      You can adjust your light program to limit servo travel on the Slave
    • The servo can only be connected to OUT/ISP on the Slave. Some (analog) servos have a high load on the signal line, preventing the Slave from operating. It is advisable to use digital servos.
2024-09-09 Firmware 2.57
  • Fix user defined LED names (in the LED configuration table) were only working in the first light program.
2023-12-30 Firmware 2.57
  • Fix servo output via AUX channel.
  • Fix description that servo setup requires 8-clicks, not 7.
2023-11-09 Firmware 2.57
  • 3 channel Pre-processor now outputs 5 channel protocol so that the light controller as access to raw channel data instead of just an on/off value. AUX2 and AUX3 always report 0 (center).
  • Add advanced setting for configuring AUX to an arbitrary function rather than always being fixed to Multi-function control. This is useful if a 3 channel system has a RCUniSwitch PAD installed.
2023-06-16 Firmware 2.56
  • Added support for AUX4 to AUX6. i-Bus and S.Bus only. AUX4 to AUX6 can only be used in light programs.
2022-11-23 Firmware 2.55
  • Fix Slave not working at 100000 BAUD.
2022-11-06 Firmware 2.54
  • Improve description of how to select the correct baudrate.
2022-08-30 Firmware 2.54
  • Improve LED value editing. The value is selected upon editing start. Clearing the field assumes input 0.
2022-07-14 Firmware 2.54
  • Use polarity reversing on UART Rx input for LPC832! This means we no longer need the inverter on the PCB.
2022-06-27 Firmware 2.53
  • Add the possibility to use the CH3 pin on the light controller as digital input pin, which can be probed in Light Programs. The pin can be tested using the global variable ch3-pin. Refer to the Light Programs documentation for more information.
    This feature only works when using a Pre-Processor, i-Bus or S.Bus.
2022-02-02 Firmware 2.51
  • Add S.Bus support. Note that S.Bus requires hardware modification and can (as of June 2022) only be used with Mk4P Rev3, Mk4 Rev7 or later light controllers.
2021-12-28 Firmware 2.50
  • Add i-Bus support. Tested with FlySky NB4 and FGr4S receiver.
  • Save LED names immediately upon editing, not only when the LED features sub-table is closed.
2021-11-27 Firmware 2.46
  • It is now possible to assign human readable names to LEDs in the LED configuration tables. These names can make it easier to recognize which function is intended for a particular LED.

    Click on the spanner icon of a LED to assign or change its name.

    The LED names can also be used in Light Programs. Refer to section LED declarations in the Light Programs documentation for more information.

  • Configuration files can now be loaded by dragging them from a file manager on the Configurator window.
  • Bugfix: Car functions are now disabled in shelf queen mode
  • Reduce firmware size
2021-11-23 Firmware 2.45
  • Shelf queen mode can be switched from Light Programs
2021-11-18 Firmware 2.44
  • Fix import of HEX files that don't have a Light Programs
2021-11-10 Firmware 2.44
  • Fix light_switch_position range for Light Programs
  • Fix shelf queen mode
  • Finalize firmware for NXP LPC832
2021-07-24 Firmware 2.41
  • No signal LED diagnostics and Initializing are now mutually exclusive, just like before we switched from Light Program based diagnostics to table driven diagnostics.
2021-05-25 Firmware 2.40
  • Fix PINENABLE issue that makes all LEDs light up. Now the configurator is finally working with both LPC812 and LPC832 MCUs.
2021-05-13 Firmware 2.37
  • Limit LED table value to 0..100 when entering larger numbers, instead of discarding the entry.
  • Show MCU type number in the WebUSB programming diagnostics.
2021-05-11 Firmware 2.37
  • Fix import of old .HEX files
2021-05-01 Firmware 2.37
  • The LED configuration for no-signal, initializing and other light controller internal diagnostics functions are now table driven.
    Originally they were implemented using Light Programs. These still continue to function, but the table driven approach is easier for users and also reduces memory size.
  • Save code space by making the the Light Programs start offset table dynamic in side. This is an internal change and has no impact on users.
  • Detailed WebUSB diagnostics in the browser console is now off by default. WebUSB diagnostics can be enabled by appending #webusb to the Configurator URL.

Credits

This tool would not have been possible without these awesome software components:
CodeMirror http://codemirror.net/
A text editor in JavaScript. Very easy to use, yet extremely powerful. With little effort I could build custom syntax highlighting, and had error messages after the assembly process shown in the gutter.
JISON https://zaach.github.io/jison/docs/
Parser and scanner generator for JavaScript. It was very easy to adapt a prototype written in Bison/Flex to JISON.
FileSaver.js
Allowed us to save generated JSON and Intel-hex files from within the browser.
node.js http://nodejs.org
Fantastic to have the same code work in the browser, and with the help of node.js also be able to use from the command-line.
Font Awesome https://fontawesome.com/
Beautiful and easy-to-use vector icons.
intel-hex https://github.com/bminer/intel-hex.js
Good starting point for parsing Intel-hex files. I made it browser-compatible and added the missing write functions.
Simple JavaScript Templating http://ejohn.org/
As the name says: a very simple templating engine.
Toastify JS https://apvarun.github.io/toastify-js/
A library to show brief information dialogs.
Drop your light controller configuration file here