Skip to content

INDIForJava/INDIForJava-core

Repository files navigation

INDIForJava logo

The INDIForJava project

INDIForJava is a set of libraries (written in the Java programming language) to implement clients (graphical and not graphical ones), drivers and servers that follow the INDI distributed control protocol, a protocol designed to operate astronomical instrumentation.

The project is fully open-source and is available on GitHub.

Intended Audience

The provided libraries are focused on the development of Drivers, Clients and Servers using the INDI protocol in the Java programming language. If you are a regular software user, you are looking for a simple program to control your astronomical devices and you don't know anything about drivers, programming, Java probably this page is not for you. Try looking at INDI Clients for a list of programs that may be useful for your purposes.

However, if you are a programmer and you want to start your own astronomical control program or you want to program a driver for a particular astronomical device, this might be your starting point.

Please note that this libraries do not pretend to substitute or even replace the original INDI libraries which are still used and actively developed. Moreover, this project does not pretend to mimic every single option that the original libraries offer and, in fact, the programming ideas behind this library differ in some points to the original ones: particularly, INDI for Java tries to provide a truly object oriented approach in the development of INDI compatible software.

Where do I start?

If you are interested in the project, you might want to check the repository available for the project. There you have all the necessary tools to begin developing you're own INDI Clients and Drivers: You'll find the source code for the library, the compiled libraries (in .jar format), all the Java Docs for the libraries and even some example files to start experimenting.

It is also recommended that you check the original INDI Library web page in which you will find lots of information about the INDI protocol, the original INDI libraries (written in C and C++) and many more resources (including a forum if you have questions or want to report errors) that might help you start developing your own INDI related projects.

Example tutorials

Coming soon...

Library development

Required build tools

  • IntelliJ IDEA 2020.3 or greater
  • The Gradle IntelliJ plugin
  • Java Development Kit ≥8

Dependencies

Library modules

  • core: the base library.
  • driver: the module that represents an INDI driver.
  • client: an INDI client module, which can connect to INDI servers and control drivers.
  • server: an INDI server module, which can load drivers and connect to clients.
  • driver-telescope: a telescope abstract driver.
  • driver-focuser: a telescope abstract driver.
  • driver-ccd: a telescope abstract driver.
  • driver-filterwheel: a telescope abstract driver.
  • driver-raspberrypigpio: an example driver that can control Raspberry Pi GPIOs.
  • driver-active-extension: a driver extension used to create active drivers (drivers that can manage other drivers on the same server).
  • driver-serial-extension: a driver extension that provides support for serial ports.
  • fits-utils: an utility module which can be used together with the CCD module.
  • gnu-scientific-lib: a Java port of the GNU Scientific Library, used internally in the telescope driver.

Bug tracking

Feel free to report bugs in the GitHub issue tracker!

License

This library is licensed under the GNU Lesser General Public License v3.0. A copy of the license is available in the GitHub repository

Developed by

Thanks to

  • Antonio Román: testing.
  • Alexander Tuschen: testing and bug reporting.
  • Romain Fafet and Gerrit Viola for their input, testing and code.