I have a new driver/patch, where can I submit it?

You need to submit it as a Pull Request on GitHub. Start by forking INDI Library on Github, make the necessary modifications to your branch, and then create a Pull Request.

What are the possible uses of properties auxiliary members?

All properties have auxiliary members in case you need to attach additional information pertaining to the property. For example, you have a text property "Command", and you want to associate the command's ID number with it (e.g. Command Slew has ID 3456). You can use aux0 of the text property to make such association (e.g. text->aux0 = &ID), which you can retreive at any time. The auxiliary members are pointers to void, so you need to cast them properly in order to read the values back.

I defined a number property, but I changed the min, max, or step values in the property. How do I report this to the client?

Use IUUpdateMinMax(INumberVectorProperty *nvp)

I need to perform [insert function here] on some property, how?

Refer to Functions driver call to perform handy utility functions.

My client is not receiving any binary data using setBLOB, why?

You must enable BLOBs from your client by sending the enableBlob element to the driver. Refer to the binary transfer section for more details.

INDI server reports that there are some bogus XML characters, why?

Most likely, you're sending data in Text properties that contain XML characters like >, <, and ' that will break XML processing scheme. It is also possible that your driver suffers from stack or heap memory corruptions which can lead to this behavior as well. Check your pointers and arrays to see if they are properly allocated and initialized.

What's the safest way to save text in an IText struct?

use IUSaveText() function to save texts. This function will allocate memory for you and will grow as necessary if needed. You must insure that tp->text is set to NULL initially before making the first call.

How to send data for color camera?

INDI supports sending color data in two folds:

  • Bayer: If the CCD captures an image via a CFA, then it can be sent to the client as grayscale FITS image with embedded FITS keywords to aid the client in debayering the image (BAYERPAT, XBAYROFF, YBAYROFF). You need to set the CCDCapability.hasBayer to true. The default pattern is RGGB but it can be updated by the user or in the driver initProperties() function.
  • 3D FITS: If the image buffer is arranged in RGB, it can be sent as such to the client. Make sure to set NAXIS of the CCD Chip to 3 so that the INDI::CCD class recognized the buffer as a 3D Cube FITS.

Refer to the INDI GPhoto driver for an example on sending the image in bayer format and in 3D Cube FITS.

I discovered a bug! where do I report that? Where can I discuss INDI development?

We welcome any discussing regarding INDI driver development & design on the INDI development mailing list. Please don't report client-related problems to the INDI development mailing list, refer to your client mailing list instead. To report any bugs, open an issue on Github.