Hi,
In the next few days, I'm planning to commit some non-backwards compatible changes to the I/O layer:
A new dc_iostream_ioctl function will be introduced to perform I/O specific requests. This allows to extend the I/O layer with some driver specific features, without having to modify the api. The first candidate to use this feature will be the Oceanic BLE communication.
The dc_iostream_set_latency function will be removed, and re-implemented as an ioctl. This function isn't used anywhere in libdivecomputer, and is only relevant for the serial communication. Hence it's a perfect example of a feature than can be implemented as an ioctl.
A new dc_iostream_poll function will be added. This provides a more efficient alternative to using using a combination of the dc_iostream_get_available and dc_iostream_sleep functions.
For all the built-in I/O transports, these changes will be completely transparent. But users of the custom I/O will need to update their code because the corresponding function pointers will be added/removed to/from the dc_custom_cbs_t structure.
Jef