Debug and Low-Level Functions

struct iio_channels_mask *iio_create_channels_mask(unsigned int nb_channels)

Create a new empty channels mask.

Parameters:

nb_channels – The number of channels in the mask

Returns:

On success, a pointer to an iio_channels_mask structure

Returns:

On error, NULL is returned

void iio_channels_mask_destroy(struct iio_channels_mask *mask)

Destroy a channels mask.

Parameters:

mask – A pointer to an iio_channels_mask structure

ssize_t iio_device_get_sample_size(const struct iio_device *dev, const struct iio_channels_mask *mask)

Get the current sample size.

NOTE: The sample size is not constant and will change when channels get enabled or disabled.

Parameters:
  • dev – A pointer to an iio_device structure

  • mask – A pointer to an iio_channels_mask structure.

Returns:

On success, the sample size in bytes

Returns:

On error, a negative errno code is returned

long iio_channel_get_index(const struct iio_channel *chn)

Get the index of the given channel.

Parameters:

chn – A pointer to an iio_channel structure

Returns:

On success, the index of the specified channel

Returns:

On error, a negative errno code is returned

const struct iio_data_format *iio_channel_get_data_format(const struct iio_channel *chn)

Get a pointer to a channel’s data format structure.

Parameters:

chn – A pointer to an iio_channel structure

Returns:

A pointer to the channel’s iio_data_format structure

void iio_channel_convert(const struct iio_channel *chn, void *dst, const void *src)

Convert the sample from hardware format to host format.

Parameters:
  • chn – A pointer to an iio_channel structure

  • dst – A pointer to the destination buffer where the converted sample should be written

  • src – A pointer to the source buffer containing the sample

void iio_channel_convert_inverse(const struct iio_channel *chn, void *dst, const void *src)

Convert the sample from host format to hardware format.

Parameters:
  • chn – A pointer to an iio_channel structure

  • dst – A pointer to the destination buffer where the converted sample should be written

  • src – A pointer to the source buffer containing the sample

int iio_channel_refresh_format(struct iio_channel *chn)

Refresh the data format of a scan element channel from hardware.

This function re-reads the scan element type attribute from the kernel and updates the cached data format. Use this when the hardware format may have changed (e.g., after changing oversampling or resolution).

The channel must be a scan element. For non-scan-element channels, this returns -EINVAL.

IMPORTANT: Call this function BEFORE opening a new buffer stream after changing any attribute that affects channel format.

Example usage:

// Change hardware configuration
iio_channel_attr_write(chn, "oversampling_ratio", "8");

// Refresh the format (updates both client and server)
iio_channel_refresh_format(chn);

// Now safe to open buffer with updated format
buf_stream = iio_buffer_open(buf, mask);

Parameters:

chn – A pointer to an iio_channel structure

Returns:

On success, 0 is returned

Returns:

On error, a negative errno code is returned

unsigned int iio_device_get_event_attrs_count(const struct iio_device *dev)

Enumerate the event attributes of the given device.

Parameters:

dev – A pointer to an iio_device structure

Returns:

The number of event attributes found

const struct iio_attr *iio_device_get_event_attr(const struct iio_device *dev, unsigned int index)

Get the event attribute present at the given index.

Parameters:
  • dev – A pointer to an iio_device structure

  • index – The index corresponding to the event attribute

Returns:

On success, a pointer to an iio_attr structure

Returns:

If the index is invalid, NULL is returned

const struct iio_attr *iio_device_find_event_attr(const struct iio_device *dev, const char *name)

Try to find an event attribute by its name.

Parameters:
  • dev – A pointer to an iio_device structure

  • name – A NULL-terminated string corresponding to the name of the event attribute

Returns:

On success, a pointer to an iio_attr structure

Returns:

If the name does not correspond to any known event attribute of the given device, NULL is returned

unsigned int iio_device_get_debug_attrs_count(const struct iio_device *dev)

Enumerate the debug attributes of the given device.

Parameters:

dev – A pointer to an iio_device structure

Returns:

The number of debug attributes found

const struct iio_attr *iio_device_get_debug_attr(const struct iio_device *dev, unsigned int index)

Get the debug attribute present at the given index.

Parameters:
  • dev – A pointer to an iio_device structure

  • index – The index corresponding to the debug attribute

Returns:

On success, a pointer to a static NULL-terminated string

Returns:

If the index is invalid, NULL is returned

const struct iio_attr *iio_device_find_debug_attr(const struct iio_device *dev, const char *name)

Try to find a debug attribute by its name.

Parameters:
  • dev – A pointer to an iio_device structure

  • name – A NULL-terminated string corresponding to the name of the debug attribute

Returns:

On success, a pointer to a static NULL-terminated string

Returns:

If the name does not correspond to any known debug attribute of the given device, NULL is returned

int iio_device_reg_write(struct iio_device *dev, uint32_t address, uint32_t value)

Set the value of a hardware register.

Parameters:
  • dev – A pointer to an iio_device structure

  • address – The address of the register

  • value – The value to set the register to

Returns:

On success, 0 is returned

Returns:

On error, a negative errno code is returned

int iio_device_reg_read(struct iio_device *dev, uint32_t address, uint32_t *value)

Get the value of a hardware register.

Parameters:
  • dev – A pointer to an iio_device structure

  • address – The address of the register

  • value – A pointer to the variable where the value will be written

Returns:

On success, 0 is returned

Returns:

On error, a negative errno code is returned

struct iio_data_format
#include <iio.h>

Contains the format of a data sample.

The different fields inform about the correct way to convert one sample from its raw format (as read from / generated by the hardware) to its real-world value.