Instrument Neutral Distributed Interface INDI 1.0.0
INDI is a simple XML-like communications protocol described for interactive and automated remote control of diverse instrumentation.
INDI is small, easy to parse, and stateless. In the INDI paradigm each Device poses all command and status functions in terms of settings and getting Properties. Each Property is a vector of one or more names members. Each property has a current value vector; a target value vector; provides information about how it should be sequenced with respect to other Properties to accomplish one coordinated unit of observation; and provides hints as to how it might be displayed for interactive manipulation in a GUI.
Clients learn the Properties of a particular Device at runtime using introspection. This decouples Client and Device implementation histories. Devices have a complete authority over whether to accept commands from Clients. INDI accommadates intermediate servers, broadcasting, and connection topologies ranging from one-to-one on a single system to many-to-many between systems of different genre.
The INDI protocol can be nested within other XML elements such as constraints for automatic scheduling and execution.
For a complete review on the INDI protocol, please refer to the INDI white paper.
INDI is intended for developers who seek a scalable API for device control and automation. Hardware drivers written under INDI can be used under any INDI-compatible client. INDI serves as a backend only, you need frontend clients to control devices. Current clients include KStars, Xephem, DCD, and Cartes du Ciel.
The INDI Library API is divided into the following main sections:
Simulators provide a great framework to test drivers and equipment alike. INDI Library provides the following simulators: