You can create a custom driver for the SmartServer to provide support for additional protocols not built into the standard SmartServer software. To develop a custom driver, you implement your driver-specific code in C or C++ using the GNU C++ compiler (g++) and link your driver with the IAP Driver Library (IDL) that is included with the SmartServer. IDL is a C library that implements the interface to IAP/MQ that is required for all drivers. It is a dynamic library (.SO) that you link into your custom driver process. Your custom driver process is called IDI, which stands for IDL driver instance.
When a user imports a new device type in the Device Types widget, the loader service loads the XIF file in the
/var/apollo/data/<protocol>/res directory and then restarts the associated driver. On start-up, the driver checks the res directory and publishes AMD (application metadata) objects of each XIF definition present. The CMS then shows the type loaded notification.
The IDL obtains details about the custom driver through a JSON object in a conf file. This file must reside on the SmartServer and it’s absolute path must be specified in the IDL init call. The parameters in the conf file describe the IDI instance and how it works.