The Instrument-Neutral-Distributed-Interface control protocol (INDI) is a key technology for device automation and control. INDI introduces a control protocol standard for rapid development of robust, adaptive, and scalable device drivers
… Read MoreThe goal of this manual is to enable programmers to take full advantage of the INDI architecture by providing a practical guide that illustrates the different aspects of the control
… Read MoreThe INDI library is geared toward experienced programmers planning to develop backend hardware drivers to run under the INDI architecture. The task of developing hardware drivers requires programmers with sufficient
… Read MoreINDI 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
… Read MoreINDI server is the public network access point where one or more INDI clients may contact one or more INDI Drivers. indiserver launches each driver process and arranges
… Read MoreAn INDI driver is what directly communicates with your device(s). It is responsible for controlling the device, and for representing the device properties to clients using INDI's protocol structures. The
… Read MoreINDI drivers consist of the low-level code that communicates with the device, and of the INDI API code that enables the driver to serve any INDI compatible client.
Details of
… Read MoreINDI Library includes by default several drivers for popular astronomical instruments mainly used in amateur astronomy. This is done for several reasons:
INDI does not place any special semantics on property names (i.e. properties are just texts, numbers, or switches that represent no physical function). While GUI clients can construct graphical
… Read MoreThus far, the main focus was on control and monitoring oriented properties. These are the properties that represent the physical buttons, knobs, lights, status indicators, and switches in devices. But
… Read MoreINDI Library provides the facility to snoop on properties in other drivers. This permits robust inter-driver communication that can be useful in many applications. Typically, all the properties defined by
… Read MoreINDI provides three command line tools that can be used to write complex scripts for settting, retrieving, and controlling the behavior of INDI devices. These tools provide the programmer
… Read MoreYou can either submit it to the INDI development mailing list or directly to INDI's current maintainer Jasem Mutlaq
… Read MoreINDI Library provide INDI::BaseClient class that encapsulates the most common functions required for a minimal INDI client. It supports:
The Instrument-Neutral-Distributed-Interface control protocol (INDI) is a key technology for device automation and control. INDI introduces a control protocol standard for rapid development of robust, adaptive, and scalable device drivers under several platforms.
INDI has many advantages over similar technologies, including loose coupling between hardware devices and software drivers. Clients that use the device drivers are completely unaware of the device capabilities. In run time, clients discover the device capabilities through introspection. This enables clients to build a completely dynamical GUI based on services provided by the device. Hence, when new or updated device drivers are developed, clients can take full advantage of them without any changes on the client side; thanks to the self-describing nature of INDI.
Since developers don't have to worry about updating GUI clients to reflect changes in their drivers, they can concentrate their time and effort on the development and testing of drivers. This leads to a significant cut in development time and cost, and paves the way for painless maintenance and efficient deployment. Employing XML as the language of the protocol adds other advantages as the protocol can be parsed and processed using any XML library.
Furthermore, remote control of devices is seamless with INDI's server/client architecture. Distributed devices can be controlled from one centralized environment.
The INDI wire protocol only describes the rules, structures, and mechanisms underlying the protocol's architecture. What will be discussed throughout this manual is a specific POSIX implementation of the INDI protocol. We shall refer to this implementation hereforth as the INDI library.
The INDI library is released under the GNU Library General Public License (LGPL) and is currently maintained in the dedicated INDI SourceForge website.