Technical information

The RMS Enterprise SDK (v4)
36
RMS Enterprise - NetLinx Programmer’s Guide
This does not mean that you have to implement Duet-based devices, however the NetLinx programmer is responsible for emulating
the SNAPI channel/level/command API for a particular device. For example, to allow the RMS NetLinx monitoring module to
track a device port, the NetLinx programmer must implement the SNAPI status channel (#255) for device power.
When the physical device power is turned on, the NetLinx programmer should set channel #255 to the ON state. The RMS
NetLinx device monitor module will listen for the channel change and update RMS accordingly.
In addition to the SNAPI emulation required by the NetLinx programmer, it should also be noted that each RMS NetLinx Device
Monitor module includes a set of #DEFINE HAS_XXXXX compiler directives.
These "HAS" definitional allow you to compile the device monitor modules with specific sets of functionality included or
excluded depending on if your physical device supports the features. See the RMS NetLinx Monitoring Module HAS_PROPERTY
Compiler Directives section on page 120 for details.
The diagram in FIG. 16 on page 36 illustrates the file dependency chain for the RmsNlXxxxxMonitor modules integration:
Each NetLinx device monitoring module requires the following three arguments (a) the RMS NetLinx Virtual Device, (b) a
NetLinx virtual device dedicated to this module, and (c) the device for the real device. These RMS NetLinx device monitor
modules are provided as open source NetLinx code.
(a) RMS NetLinx Virtual Device - This virtual device must be exposed using the RMS NetLinx Adapter module.
(b) NetLinx Module Virtual Device - This device will be the NetLinx virtual Device ID used to communicate with the RMS
subsystem from NetLinx programming. Note this Device ID must be virtual and must not exist in the Duet Device ID range.
(c) Real Device - This is the physical device I/O port and is used by RMS to associate a unique client key to the asset using the
D:P:S identification string.
The following code snippet illustrates a RMS NetLinx device monitoring module:
DEFINE_DEVICE
dvVideoProjector = 5001:23:0 // Video Projector (Physical Device)
vdvVideoProjector = 34001:1:0 // Video Projector Virtual Device
DEFINE_START
// RMS Video Projector Device Monitor
DEFINE_MODULE 'RmsNlVideoProjectorMonitor' mdlRmsVideoProjectorMon(vdvRMS,
vdvVideoProjector,
FIG. 16 RMS SDK File Dependencies - NetLinx Device Implementation