kstars
Instrument Neutral Distributed Interface INDI
Introduction
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 accommpdates 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.
Intended Audience
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, and Cartes du Ciel.Developing under INDI
Please refere to the INDI Developers Manual for a complete guide on INDI's driver developemnt framework.Help
You can find information on INDI development in the INDI sourceforge site. Furthermore, you can discuss INDI related issues on the INDI development mailing list.