LINXx firmware
Extensions to LINX toolkit
LINXx- Extensions to the LINX toolkit

This documentation covers the Arduino firmware used by LINXx.

For basic use, most of this information is unnecessary. However, if you are interested in adding new features or support for additional boards, it might help point you in the right direction.

Firmware structure

Basic board functionality is defined by LinxDevice.h, then extended for board families in the utility folder, and finally the specific implementation of the board's class.

Communications between LabVIEW and the board are handled by LinxListener.h, with the communication method/protocol implemented in a child class (e.g., LinxSerialListener)

To use the firmware with the Arduino IDE, it must be reorganized into the proper library format. This is done automatically by the LabVIEW portion of the toolkit (Tools>LINXx>InstallArduinoLibs) according to libraries.ini, which should be edited if you are adding a new board or listener type.

Development helpers

Some additional documentation (not amenable to Doxygen) can be autogenerated by helper VIs included in the repo. Consider running them following any alterations.

  • Rebuild Board Table.vi
    • Regenerates BoardTable.md, detailing family/ID of each supported board. To update the list of original LINX boards (i.e., after a new LINX API is released), run once with the front-panel control set to True.
  • Rebuild Command Table.vi
    • Regenerates CommandTable.md, which shows the codes corresponding to the LINX/LINXx command
  • Rebuild Lua filter.vi
    • Generates a Lua function that translates command codes their string description. Used to assemble a Wireshark dissector (to be released shortly)