My Project
Loading...
Searching...
No Matches
iio.h File Reference

Public interface. More...

#include <limits.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <stdbool.h>

Go to the source code of this file.

Classes

struct  iio_context_params
 IIO context creation information. More...
struct  iio_event
 Represents a IIO event. More...
struct  iio_data_format
 Contains the format of a data sample. More...

Macros

#define __cnst
#define __pure
#define __notused
#define __check_ret
#define __iio_api_export
#define __iio_api_import
#define __iio_api   __iio_api_import
#define __api   __iio_api
#define IIO_TIMEOUT_BACKEND   0
 Use backend default timeout.
#define IIO_TIMEOUT_INFINITE   (-1)
 Wait indefinitely (no timeout).
#define IIO_TIMEOUT_NONBLOCK   INT_MIN
 Non-blocking operation.
#define _IIO_TYPES_H_
#define iio_attr_read(attr, ptr)
 Read the content of the given attribute.
#define iio_attr_write(attr, val)
 Set the value of the given attribute.

Enumerations

enum  iio_log_level {
  LEVEL_NOLOG = 1 , LEVEL_ERROR = 2 , LEVEL_WARNING = 3 , LEVEL_INFO = 4 ,
  LEVEL_DEBUG = 5
}
 Level of verbosity of libiio's log output.
enum  iio_context_flags { IIO_CTX_XML_INCLUDE_VALUES = 1 << 0 }
 Flags controlling context behavior;. More...
enum  iio_chan_type {
  IIO_VOLTAGE , IIO_CURRENT , IIO_POWER , IIO_ACCEL ,
  IIO_ANGL_VEL , IIO_MAGN , IIO_LIGHT , IIO_INTENSITY ,
  IIO_PROXIMITY , IIO_TEMP , IIO_INCLI , IIO_ROT ,
  IIO_ANGL , IIO_TIMESTAMP , IIO_CAPACITANCE , IIO_ALTVOLTAGE ,
  IIO_CCT , IIO_PRESSURE , IIO_HUMIDITYRELATIVE , IIO_ACTIVITY ,
  IIO_STEPS , IIO_ENERGY , IIO_DISTANCE , IIO_VELOCITY ,
  IIO_CONCENTRATION , IIO_RESISTANCE , IIO_PH , IIO_UVINDEX ,
  IIO_ELECTRICALCONDUCTIVITY , IIO_COUNT , IIO_INDEX , IIO_GRAVITY ,
  IIO_POSITIONRELATIVE , IIO_PHASE , IIO_MASSCONCENTRATION , IIO_DELTA_ANGL ,
  IIO_DELTA_VELOCITY , IIO_COLORTEMP , IIO_CHROMATICITY , IIO_ATTENTION ,
  IIO_ALTCURRENT , IIO_COVERAGE , IIO_VOLUMEFLOW , IIO_CHAN_TYPE_UNKNOWN = INT_MAX
}
 IIO channel type. More...
enum  iio_modifier {
  IIO_NO_MOD , IIO_MOD_X , IIO_MOD_Y , IIO_MOD_Z ,
  IIO_MOD_X_AND_Y , IIO_MOD_X_AND_Z , IIO_MOD_Y_AND_Z , IIO_MOD_X_AND_Y_AND_Z ,
  IIO_MOD_X_OR_Y , IIO_MOD_X_OR_Z , IIO_MOD_Y_OR_Z , IIO_MOD_X_OR_Y_OR_Z ,
  IIO_MOD_LIGHT_BOTH , IIO_MOD_LIGHT_IR , IIO_MOD_ROOT_SUM_SQUARED_X_Y , IIO_MOD_SUM_SQUARED_X_Y_Z ,
  IIO_MOD_LIGHT_CLEAR , IIO_MOD_LIGHT_RED , IIO_MOD_LIGHT_GREEN , IIO_MOD_LIGHT_BLUE ,
  IIO_MOD_QUATERNION , IIO_MOD_TEMP_AMBIENT , IIO_MOD_TEMP_OBJECT , IIO_MOD_NORTH_MAGN ,
  IIO_MOD_NORTH_TRUE , IIO_MOD_NORTH_MAGN_TILT_COMP , IIO_MOD_NORTH_TRUE_TILT_COMP , IIO_MOD_RUNNING ,
  IIO_MOD_JOGGING , IIO_MOD_WALKING , IIO_MOD_STILL , IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z ,
  IIO_MOD_I , IIO_MOD_Q , IIO_MOD_CO2 , IIO_MOD_VOC ,
  IIO_MOD_LIGHT_UV , IIO_MOD_LIGHT_DUV , IIO_MOD_PM1 , IIO_MOD_PM2P5 ,
  IIO_MOD_PM4 , IIO_MOD_PM10 , IIO_MOD_ETHANOL , IIO_MOD_H2 ,
  IIO_MOD_O2 , IIO_MOD_LINEAR_X , IIO_MOD_LINEAR_Y , IIO_MOD_LINEAR_Z ,
  IIO_MOD_PITCH , IIO_MOD_YAW , IIO_MOD_ROLL , IIO_MOD_LIGHT_UVA ,
  IIO_MOD_LIGHT_UVB , IIO_MOD_RMS , IIO_MOD_ACTIVE , IIO_MOD_REACTIVE ,
  IIO_MOD_APPARENT , IIO_MOD_QUATERNION_AXIS
}
 IIO channel modifier. More...
enum  iio_event_type {
  IIO_EV_TYPE_THRESH , IIO_EV_TYPE_MAG , IIO_EV_TYPE_ROC , IIO_EV_TYPE_THRESH_ADAPTIVE ,
  IIO_EV_TYPE_MAG_ADAPTIVE , IIO_EV_TYPE_CHANGE , IIO_EV_TYPE_MAG_REFERENCED , IIO_EV_TYPE_GESTURE ,
  IIO_EV_TYPE_FAULT
}
 IIO event type. More...
enum  iio_event_direction {
  IIO_EV_DIR_EITHER , IIO_EV_DIR_RISING , IIO_EV_DIR_FALLING , IIO_EV_DIR_NONE ,
  IIO_EV_DIR_SINGLETAP , IIO_EV_DIR_DOUBLETAP , IIO_EV_DIR_FAULT_OPENWIRE
}
 IIO event direction. More...
enum  hwmon_chan_type {
  HWMON_VOLTAGE , HWMON_FAN , HWMON_PWM , HWMON_TEMP ,
  HWMON_CURRENT , HWMON_POWER , HWMON_ENERGY , HWMON_HUMIDITY ,
  HWMON_INTRUSION , HWMON_CHAN_TYPE_UNKNOWN = IIO_CHAN_TYPE_UNKNOWN
}
 Hwmon channel type. More...

Functions

ssize_t iio_attr_read_raw (const struct iio_attr *attr, char *dst, size_t len)
 Read the content of the given attribute.
ssize_t iio_attr_write_raw (const struct iio_attr *attr, const void *src, size_t len)
 Set the value of the given attribute.
const char * iio_attr_get_name (const struct iio_attr *attr)
 Retrieve the name of an attribute.
const char * iio_attr_get_filename (const struct iio_attr *attr)
 Retrieve the filename of an attribute.
const char * iio_attr_get_static_value (const struct iio_attr *attr)
 Retrieve the static value of an attribute.
int iio_attr_get_range (const struct iio_attr *attr, double *min, double *step, double *max)
 Extract the range from an attribute with suffix '_available'.
int iio_attr_get_available (const struct iio_attr *attr, char ***list, size_t *count)
 Extract the list of elements from an attribute with suffix '_available'.
int iio_attr_get_available_buf (const struct iio_attr *attr, char *buf, size_t buflen, char **list, size_t *count)
 A variant of iio_attr_get_available() that uses a caller-supplied, preallocated buffer. If the optional 'list' and 'count' parameters are provided, the buffer will be tokenized in place by replacing each delimiter with a null terminator ('\0'). As a result, each element in 'list' will point to the start of a substring in the buffer, representing one of the available values. For instance, 'list[0]' points to the first value, 'list[1]' to the second, and so forth.
void iio_available_list_free (char **list, size_t count)
 Free the resources allocated only by iio_attr_get_available().
struct iio_scan * iio_scan (const struct iio_context_params *params, const char *backends)
 Scan backends for IIO contexts.
void iio_scan_destroy (struct iio_scan *ctx)
 Destroy the given scan context.
size_t iio_scan_get_results_count (const struct iio_scan *ctx)
 Get number of results of a scan operation.
const char * iio_scan_get_description (const struct iio_scan *ctx, size_t idx)
 Get description of scanned context.
const char * iio_scan_get_uri (const struct iio_scan *ctx, size_t idx)
 Get URI of scanned context.
void iio_strerror (int err, char *dst, size_t len)
 Get a string description of an error code.
bool iio_has_backend (const struct iio_context_params *params, const char *backend)
 Check if the specified backend is available.
unsigned int iio_get_builtin_backends_count (void)
 Get the number of available built-in backends.
const char * iio_get_builtin_backend (unsigned int index)
 Retrieve the name of a given built-in backend.
struct iio_context * iio_create_context (const struct iio_context_params *params, const char *uri)
 Create a context from a URI description.
void iio_context_destroy (struct iio_context *ctx)
 Destroy the given context.
unsigned int iio_context_get_version_major (const struct iio_context *ctx)
 Get the major number of the library version.
unsigned int iio_context_get_version_minor (const struct iio_context *ctx)
 Get the minor number of the library version.
unsigned int iio_context_get_version_patch (const struct iio_context *ctx)
 Get the patch number of the library version.
const char * iio_context_get_version_tag (const struct iio_context *ctx)
 Get the git hash string of the library version.
char * iio_context_get_xml (const struct iio_context *ctx)
 Obtain a XML representation of the given context.
const char * iio_context_get_name (const struct iio_context *ctx)
 Get the name of the given context.
const char * iio_context_get_description (const struct iio_context *ctx)
 Get a description of the given context.
unsigned int iio_context_get_attrs_count (const struct iio_context *ctx)
 Get the number of context-specific attributes.
const struct iio_attr * iio_context_get_attr (const struct iio_context *ctx, unsigned int index)
 Retrieve the context-specific attribute at the given index.
const struct iio_attr * iio_context_find_attr (const struct iio_context *ctx, const char *name)
 Try to find a context-specific attribute by its name.
unsigned int iio_context_get_devices_count (const struct iio_context *ctx)
 Enumerate the devices found in the given context.
struct iio_device * iio_context_get_device (const struct iio_context *ctx, unsigned int index)
 Get the device present at the given index.
struct iio_device * iio_context_find_device (const struct iio_context *ctx, const char *name)
 Try to find a device structure by its ID, label or name.
int iio_context_set_timeout (struct iio_context *ctx, int timeout_ms)
 Set a timeout for I/O operations.
const struct iio_context_params * iio_context_get_params (const struct iio_context *ctx)
 Get a pointer to the params structure.
void iio_context_set_data (struct iio_context *ctx, void *data)
 Associate a pointer to an iio_context structure.
void * iio_context_get_data (const struct iio_context *ctx)
 Retrieve a previously associated pointer of an iio_context structure.
int iio_context_ping (struct iio_context *ctx)
 Ping the IIO context to check if it is still responsive.
const struct iio_context * iio_device_get_context (const struct iio_device *dev)
 Retrieve a pointer to the iio_context structure.
const char * iio_device_get_id (const struct iio_device *dev)
 Retrieve the device ID (e.g. iio:device0).
const char * iio_device_get_name (const struct iio_device *dev)
 Retrieve the device name (e.g. xadc).
const char * iio_device_get_label (const struct iio_device *dev)
 Retrieve the device label (e.g. lo_pll0_rx_adf4351).
unsigned int iio_device_get_channels_count (const struct iio_device *dev)
 Enumerate the channels of the given device.
unsigned int iio_device_get_attrs_count (const struct iio_device *dev)
 Enumerate the device-specific attributes of the given device.
unsigned int iio_device_get_buffers_count (const struct iio_device *dev)
 Enumerate the buffers of the given device.
struct iio_channel * iio_device_get_channel (const struct iio_device *dev, unsigned int index)
 Get the channel present at the given index.
const struct iio_attr * iio_device_get_attr (const struct iio_device *dev, unsigned int index)
 Get the device-specific attribute present at the given index.
struct iio_buffer * iio_device_get_buffer (const struct iio_device *dev, unsigned int index)
 Get the buffer present at the given index.
struct iio_channel * iio_device_find_channel (const struct iio_device *dev, const char *name, bool output)
 Try to find a channel structure by its ID, label or name.
const struct iio_attr * iio_device_find_attr (const struct iio_device *dev, const char *name)
 Try to find a device-specific attribute by its name.
void iio_device_set_data (struct iio_device *dev, void *data)
 Associate a pointer to an iio_device structure.
void * iio_device_get_data (const struct iio_device *dev)
 Retrieve a previously associated pointer of an iio_device structure.
const struct iio_device * iio_device_get_trigger (const struct iio_device *dev)
 Retrieve the trigger of a given device.
int iio_device_set_trigger (const struct iio_device *dev, const struct iio_device *trigger)
 Associate a trigger to a given device.
bool iio_device_is_trigger (const struct iio_device *dev)
 Return True if the given device is a trigger.
const struct iio_device * iio_channel_get_device (const struct iio_channel *chn)
 Retrieve a pointer to the iio_device structure.
const char * iio_channel_get_id (const struct iio_channel *chn)
 Retrieve the channel ID (e.g. voltage0).
const char * iio_channel_get_name (const struct iio_channel *chn)
 Retrieve the channel name (e.g. vccint).
const char * iio_channel_get_label (const struct iio_channel *chn)
 Retrieve the channel label (e.g. anglY).
bool iio_channel_is_output (const struct iio_channel *chn)
 Return True if the given channel is an output channel.
bool iio_channel_is_scan_element (const struct iio_channel *chn)
 Return True if the given channel is a scan element.
unsigned int iio_channel_get_attrs_count (const struct iio_channel *chn)
 Enumerate the channel-specific attributes of the given channel.
const struct iio_attr * iio_channel_get_attr (const struct iio_channel *chn, unsigned int index)
 Get the channel-specific attribute present at the given index.
const struct iio_attr * iio_channel_find_attr (const struct iio_channel *chn, const char *name)
 Try to find a channel-specific attribute by its name.
unsigned int iio_channel_get_event_attrs_count (const struct iio_channel *chn)
 Enumerate the event attributes of the given channel.
const struct iio_attr * iio_channel_get_event_attr (const struct iio_channel *chn, unsigned int index)
 Get the event attribute present at the given index.
const struct iio_attr * iio_channel_find_event_attr (const struct iio_channel *chn, const char *name)
 Try to find a channel event attribute by its name.
void iio_channel_enable (const struct iio_channel *chn, struct iio_channels_mask *mask)
 Enable the given channel.
void iio_channel_disable (const struct iio_channel *chn, struct iio_channels_mask *mask)
 Disable the given channel.
bool iio_channel_is_enabled (const struct iio_channel *chn, const struct iio_channels_mask *mask)
 Returns True if the channel is enabled.
size_t iio_channel_read (const struct iio_channel *chn, const struct iio_block *block, void *dst, size_t len, bool raw)
 Demultiplex and convert the samples of a given channel.
size_t iio_channel_write (const struct iio_channel *chn, struct iio_block *block, const void *src, size_t len, bool raw)
 Convert and multiplex the samples of a given channel.
void iio_channel_set_data (struct iio_channel *chn, void *data)
 Associate a pointer to an iio_channel structure.
void * iio_channel_get_data (const struct iio_channel *chn)
 Retrieve a previously associated pointer of an iio_channel structure.
enum iio_chan_type iio_channel_get_type (const struct iio_channel *chn)
 Get the type of the given channel.
enum iio_modifier iio_channel_get_modifier (const struct iio_channel *chn)
 Get the modifier type of the given channel.
const struct iio_device * iio_buffer_get_device (const struct iio_buffer *buf)
 Retrieve a pointer to the iio_device structure.
unsigned int iio_buffer_get_attrs_count (const struct iio_buffer *buf)
 Enumerate the attributes of the given buffer.
const struct iio_attr * iio_buffer_get_attr (const struct iio_buffer *buf, unsigned int index)
 Get the buffer-specific attribute present at the given index.
unsigned int iio_buffer_get_scan_elements_count (const struct iio_buffer *buf)
 Enumerate the scan elements of the given buffer.
const struct iio_channel * iio_buffer_get_scan_element (const struct iio_buffer *buf, unsigned int index)
 Get the scan element present at the given index.
const struct iio_attr * iio_buffer_find_attr (const struct iio_buffer *buf, const char *name)
 Try to find a buffer-specific attribute by its name.
bool iio_buffer_is_output (const struct iio_buffer *buf)
 Returns true if the buffer is an output buffer.
void iio_buffer_set_data (struct iio_buffer *buf, void *data)
 Associate a pointer to an iio_buffer structure.
void * iio_buffer_get_data (const struct iio_buffer *buf)
 Retrieve a previously associated pointer of an iio_buffer structure.
struct iio_buffer_stream * iio_buffer_open (struct iio_buffer *buf, const struct iio_channels_mask *mask)
 Open a buffer for data streaming.
void iio_buffer_close (struct iio_buffer_stream *buf_stream)
 Close a buffer stream.
void iio_buffer_stream_cancel (struct iio_buffer_stream *buf_stream)
 Cancel all buffer stream operations.
int iio_buffer_stream_start (struct iio_buffer_stream *buf_stream)
 Start the buffer stream.
int iio_buffer_stream_stop (struct iio_buffer_stream *buf_stream)
 Stop the buffer stream.
const struct iio_channels_mask * iio_buffer_stream_get_channels_mask (const struct iio_buffer_stream *buf_stream)
 Retrieve the channels mask of a buffer stream.
struct iio_block * iio_buffer_stream_create_block (struct iio_buffer_stream *buf_stream, size_t size)
 Create a data block for the given buffer stream.
void iio_block_destroy (struct iio_block *block)
 Destroy the given block.
int iio_block_get_dmabuf_fd (const struct iio_block *block)
 Get the file descriptor of the underlying DMABUF object.
int iio_block_disable_cpu_access (struct iio_block *block, bool disable)
 Disable CPU access of a given block.
void * iio_block_start (const struct iio_block *block)
 Get the start address of the block.
void * iio_block_first (const struct iio_block *block, const struct iio_channel *chn)
 Find the first sample of a channel in a block.
void * iio_block_end (const struct iio_block *block)
 Get the address after the last sample in a block.
ssize_t iio_block_foreach_sample (const struct iio_block *block, const struct iio_channels_mask *mask, ssize_t(*callback)(const struct iio_channel *chn, void *src, size_t bytes, void *d), void *data)
 Call the supplied callback for each sample found in a block.
int iio_block_enqueue (struct iio_block *block, size_t bytes_used, bool cyclic)
 Enqueue the given iio_block to the buffer's queue.
int iio_block_dequeue (struct iio_block *block, bool nonblock)
 Dequeue the given iio_block from the buffer's queue.
struct iio_buffer_stream * iio_block_get_buffer_stream (const struct iio_block *block)
 Retrieve a pointer to the iio_buffer_stream structure.
struct iio_stream * iio_buffer_create_stream (struct iio_buffer *buffer, size_t nb_blocks, size_t samples_count, struct iio_channels_mask *mask)
 Create a iio_stream object for the given iio_buffer.
void iio_stream_cancel (struct iio_stream *stream)
 Cancel all stream operations.
void iio_stream_destroy (struct iio_stream *stream)
 Destroy the given stream object.
const struct iio_block * iio_stream_get_next_block (struct iio_stream *stream)
 Get a pointer to the next data block.
const struct iio_channel * iio_event_get_channel (const struct iio_event *event, const struct iio_device *dev, bool diff)
 Get a pointer to the IIO channel that corresponds to this event.
struct iio_event_stream * iio_device_create_event_stream (const struct iio_device *dev)
 Create an events stream for the given IIO device.
void iio_event_stream_destroy (struct iio_event_stream *stream)
 Destroy the given event stream.
int iio_event_stream_read (struct iio_event_stream *stream, struct iio_event *out_event, bool nonblock)
 Read an event from the event stream.
struct iio_channels_mask * iio_create_channels_mask (unsigned int nb_channels)
 Create a new empty channels mask.
void iio_channels_mask_destroy (struct iio_channels_mask *mask)
 Destroy a channels mask.
ssize_t iio_device_get_sample_size (const struct iio_device *dev, const struct iio_channels_mask *mask)
 Get the current sample size.
long iio_channel_get_index (const struct iio_channel *chn)
 Get the index of the given channel.
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.
void iio_channel_convert (const struct iio_channel *chn, void *dst, const void *src)
 Convert the sample from hardware format to host format.
void iio_channel_convert_inverse (const struct iio_channel *chn, void *dst, const void *src)
 Convert the sample from host format to hardware format.
int iio_channel_refresh_format (struct iio_channel *chn)
 Refresh the data format of a scan element channel from hardware.
unsigned int iio_device_get_event_attrs_count (const struct iio_device *dev)
 Enumerate the event attributes of the given device.
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.
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.
unsigned int iio_device_get_debug_attrs_count (const struct iio_device *dev)
 Enumerate the debug attributes of the given device.
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.
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.
int iio_device_reg_write (struct iio_device *dev, uint32_t address, uint32_t value)
 Set the value of a hardware register.
int iio_device_reg_read (struct iio_device *dev, uint32_t address, uint32_t *value)
 Get the value of a hardware register.
int iio_attr_read_bool (const struct iio_attr *attr, bool *val)
int iio_attr_read_longlong (const struct iio_attr *attr, long long *val)
int iio_attr_read_double (const struct iio_attr *attr, double *val)
ssize_t iio_attr_write_string (const struct iio_attr *attr, const char *src)
int iio_attr_write_bool (const struct iio_attr *attr, bool val)
int iio_attr_write_longlong (const struct iio_attr *attr, long long val)
int iio_attr_write_double (const struct iio_attr *attr, double val)

Detailed Description

Public interface.

Warning
libiio includes source components released under different open-source licenses, including MIT, GPL, and LGPL. As a result, the license of the final binary is determined by how libiio is configured at build time. The specific build options selected can affect which licensing terms apply to the resulting binary. In most cases, particularly when building for Linux or other POSIX-compliant systems, the default configuration produces a shared library binary licensed under the GNU Lesser General Public License version 2.1 or later (LGPL-2.1-or-later).

Additionally, depending on the selected configuration options, some optional backends may link against external system libraries. These libraries have their own licensing terms and may influence the overall license of the resulting binary, based on how they are used and linked.

To ensure that the final license aligns with your project's compliance and distribution requirements, we strongly recommend reviewing your build configuration. You can enable a license compatibility check during configuration by adding the CMake option: -DLICENSE_CHECK=ON

Enumeration Type Documentation

◆ iio_chan_type

IIO channel type.

A IIO channel has a type specifying the type of data associated with the channel.

◆ iio_context_flags

Flags controlling context behavior;.

Enumerator
IIO_CTX_XML_INCLUDE_VALUES 

Include values in XML output When set, iio_context_get_xml() will read and serialize attribute values into the XML output.

◆ iio_event_direction

IIO event direction.

When applicable, this enum specifies the direction of the iio_event_type.

◆ iio_event_type

IIO event type.

Some IIO devices can deliver events. The type of the event can be specified by one of the iio_event_type values.

◆ iio_modifier

IIO channel modifier.

In a addition to a type a IIO channel can optionally have a channel modifier further specifying the data type of of the channel.