-
Notifications
You must be signed in to change notification settings - Fork 114
Adding LINX Target Plugins
The LabVIEW support for programmable targets is implemented using a plug-in architecture. Most boards running Linux on an ARM (v7 or greater) processor should be capable of running LabVIEW. This document details how to enable this plug-in support for a new target.
Two plugin files need to be installed on the host computer. They are an ini file and a png file.
[TODO picture]
Target board support can be added by putting a uniquely-named folder in the C:\Program Files(x86)\Naional Instruments\LabVIEW VERSION\resource\Framework\Providers\LINXPlugins
directory. It's suggested to use a name the same or similar to the mDNS or Avahi name.
The only file currently expected in that folder location is LINXTarget.ini. The folder can contain other documentation or library files if desired. File contents for the Sample Target are shown below with example content.
Sample Contents of SampleTarget\LINXTarget.ini
[LINX]
# name shown in wizards and menus `
NiceName= "Sample Target" `
# name stored in project and used by VI Server `
UniqueDeviceName= "Sample Target" `
# icon name .. name to icon stored in icons dir `
IconName= "SampleTarget.png" `
# mdns class name `
mDNSClassName= "SampleTarget" `
# description of the device used by context help `
Description= "Custom BeagleBone Black description for context help." `
# conditional compile directives for this target `
LINX_DEVICE_FAMILY= "6" `
LINX_DEVICE_ID= "1"`
The plugin should also provide a 16x16 png that is used by the project and creation wizard. These are currently stored in a common location used by all providers.
…\resource\Framework\Providers\Icons
For future versions of LabVIEW, this can be extended to look next to the ini file first, but LV 2020 requires the above location for all png files. If a larger png file is provided, it will be scaled to 16x16.
The target board needs to have the LabVIEW runtime installed, generally in a chroot environment to ensure soft-float parameter passing. This can be most easily done by installing the lvrt-schroot package on Debian based targets.
The board’s Avahi service needs to respond to _ni._tcp service query with the LINX DevClass and a unique ProdName that matches the value in the ini file.
Example avahi service configuration file:
pi@raspberrypi:~ $ cat /etc/avahi/services/sample-target.service
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_ni._tcp</type>
<port>3580</port>
<txt-record>ProdName=SampleTarget</txt-record>
<txt-record>DevClass=LINX</txt-record>
</service>
</service-group>