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