55#if (defined(_WIN32) || defined(__MBED__))
56#ifndef _SSIZE_T_DEFINED
57typedef ptrdiff_t ssize_t;
58#define _SSIZE_T_DEFINED
64#if defined(_MSC_VER) && (_MSC_VER < 1800) && !defined(__BOOL_DEFINED)
75#if defined(__GNUC__) && !defined(MATLAB_MEX_FILE) && !defined(MATLAB_LOADLIBRARY)
77#define __cnst __attribute__((const))
80#define __pure __attribute__((pure))
82#define __notused __attribute__((unused))
84#define __check_ret __attribute__((warn_unused_result))
95#if !defined(_WIN32) && __GNUC__ >= 4 && !defined(MATLAB_MEX_FILE) && !defined(MATLAB_LOADLIBRARY)
96#define __iio_api_export __attribute__((visibility("default")))
97#define __iio_api_import
98#elif defined(_WIN32) && !defined(LIBIIO_STATIC)
99#define __iio_api_export __declspec(dllexport)
100#define __iio_api_import __declspec(dllimport)
102#define __iio_api_export
103#define __iio_api_import
107#define __iio_api __iio_api_export
109#define __iio_api __iio_api_import
112#define __api __iio_api
121struct iio_channels_mask;
122struct iio_event_stream;
149#define IIO_TIMEOUT_BACKEND 0
151#define IIO_TIMEOUT_INFINITE (-1)
153#define IIO_TIMEOUT_NONBLOCK INT_MIN
246 IIO_HUMIDITYRELATIVE,
256 IIO_ELECTRICALCONDUCTIVITY,
260 IIO_POSITIONRELATIVE,
262 IIO_MASSCONCENTRATION,
271 IIO_CHAN_TYPE_UNKNOWN = INT_MAX,
289 IIO_MOD_X_AND_Y_AND_Z,
296 IIO_MOD_ROOT_SUM_SQUARED_X_Y,
297 IIO_MOD_SUM_SQUARED_X_Y_Z,
303 IIO_MOD_TEMP_AMBIENT,
307 IIO_MOD_NORTH_MAGN_TILT_COMP,
308 IIO_MOD_NORTH_TRUE_TILT_COMP,
313 IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z,
339 IIO_MOD_QUATERNION_AXIS,
353 IIO_EV_TYPE_THRESH_ADAPTIVE,
354 IIO_EV_TYPE_MAG_ADAPTIVE,
356 IIO_EV_TYPE_MAG_REFERENCED,
372 IIO_EV_DIR_SINGLETAP,
373 IIO_EV_DIR_DOUBLETAP,
374 IIO_EV_DIR_FAULT_OPENWIRE,
387static inline __check_ret
void *iio_ptr(
int err)
389 return (
void *)(intptr_t)err;
395static inline __check_ret
int iio_err(
const void *ptr)
397 return (uintptr_t)ptr >= (uintptr_t)-4095 ? (
int)(intptr_t)ptr : 0;
403static inline __check_ret
void *iio_err_cast(
const void *ptr)
430#define iio_attr_read(attr, ptr) \
432 bool *: iio_attr_read_bool, \
433 long long *: iio_attr_read_longlong, \
434 double *: iio_attr_read_double)(attr, ptr)
444 const struct iio_attr *attr,
const void *src,
size_t len);
452#define iio_attr_write(attr, val) \
454 const char *: iio_attr_write_string, \
455 char *: iio_attr_write_string, \
456 bool: iio_attr_write_bool, \
457 long long: iio_attr_write_longlong, \
458 double: iio_attr_write_double)(attr, val)
524 const struct iio_attr *attr,
char *buf,
size_t buflen,
char **list,
size_t *count);
576 const struct iio_scan *ctx,
size_t idx);
748 const struct iio_context *ctx,
unsigned int index);
771 const struct iio_context *ctx,
unsigned int index);
874 const struct iio_device *dev,
unsigned int index);
882 const struct iio_device *dev,
unsigned int index);
890 const struct iio_device *dev,
unsigned int index);
901 const struct iio_device *dev,
const char *name,
bool output);
915 const struct iio_device *dev,
const char *name);
1007 const struct iio_channel *chn,
unsigned int index);
1031 const struct iio_channel *chn,
unsigned int index);
1058 const struct iio_channel *chn,
const struct iio_channels_mask *mask);
1070 const struct iio_block *block,
void *dst,
size_t len,
bool raw);
1082 const void *src,
size_t len,
bool raw);
1130 const struct iio_buffer *buf,
unsigned int index);
1144 const struct iio_buffer *buf,
unsigned int index);
1154 const struct iio_buffer *buf,
const char *name);
1185 struct iio_buffer *buf,
const struct iio_channels_mask *mask);
1315 const struct iio_channels_mask *mask,
1316 ssize_t (*callback)(
1317 const struct iio_channel *chn,
void *src,
size_t bytes,
void *d),
1362 size_t nb_blocks,
size_t samples_count,
struct iio_channels_mask *mask);
1402 HWMON_CHAN_TYPE_UNKNOWN = IIO_CHAN_TYPE_UNKNOWN,
1421static inline bool iio_device_is_hwmon(
const struct iio_device *dev)
1425 return id[0] ==
'h';
1503 struct iio_event_stream *stream,
struct iio_event *out_event,
bool nonblock);
1571 const struct iio_device *dev,
const struct iio_channels_mask *mask);
1640 const struct iio_device *dev,
unsigned int index);
1650 const struct iio_device *dev,
const char *name);
1664 const struct iio_device *dev,
unsigned int index);
1674 const struct iio_device *dev,
const char *name);
1683 struct iio_device *dev, uint32_t address, uint32_t value);
1692 struct iio_device *dev, uint32_t address, uint32_t *value);
1700__api __check_ret
int iio_attr_read_bool(
const struct iio_attr *attr,
bool *val);
1702__api __check_ret
int iio_attr_read_longlong(
const struct iio_attr *attr,
long long *val);
1704__api __check_ret
int iio_attr_read_double(
const struct iio_attr *attr,
double *val);
1706__api __check_ret ssize_t iio_attr_write_string(
const struct iio_attr *attr,
const char *src);
1708__api __check_ret
int iio_attr_write_bool(
const struct iio_attr *attr,
bool val);
1710__api __check_ret
int iio_attr_write_longlong(
const struct iio_attr *attr,
long long val);
1712__api __check_ret
int iio_attr_write_double(
const struct iio_attr *attr,
double val);
ssize_t iio_attr_write_raw(const struct iio_attr *attr, const void *src, size_t len)
Set the value of the given attribute.
void iio_available_list_free(char **list, size_t count)
Free the resources allocated only by iio_attr_get_available().
const char * iio_attr_get_static_value(const struct iio_attr *attr)
Retrieve the static value of an attribute.
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'.
const char * iio_attr_get_filename(const struct iio_attr *attr)
Retrieve the filename of an attribute.
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....
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'.
ssize_t iio_attr_read_raw(const struct iio_attr *attr, char *dst, size_t len)
Read the content of the given attribute.
const char * iio_attr_get_name(const struct iio_attr *attr)
Retrieve the name of an attribute.
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.
void iio_block_destroy(struct iio_block *block)
Destroy the given block.
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.
int iio_block_get_dmabuf_fd(const struct iio_block *block)
Get the file descriptor of the underlying DMABUF object.
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.
struct iio_buffer_stream * iio_block_get_buffer_stream(const struct iio_block *block)
Retrieve a pointer to the iio_buffer_stream structure.
int iio_block_dequeue(struct iio_block *block, bool nonblock)
Dequeue the given iio_block from the buffer's queue.
int iio_block_disable_cpu_access(struct iio_block *block, bool disable)
Disable CPU access of a given block.
struct iio_buffer_stream * iio_buffer_open(struct iio_buffer *buf, const struct iio_channels_mask *mask)
Open a buffer for data streaming.
int iio_buffer_stream_start(struct iio_buffer_stream *buf_stream)
Start the buffer stream.
void iio_buffer_stream_cancel(struct iio_buffer_stream *buf_stream)
Cancel all buffer stream operations.
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.
int iio_buffer_stream_stop(struct iio_buffer_stream *buf_stream)
Stop the buffer stream.
void iio_buffer_close(struct iio_buffer_stream *buf_stream)
Close a buffer stream.
void iio_buffer_set_data(struct iio_buffer *buf, void *data)
Associate a pointer to an iio_buffer 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.
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.
const struct iio_device * iio_buffer_get_device(const struct iio_buffer *buf)
Retrieve a pointer to the iio_device structure.
bool iio_buffer_is_output(const struct iio_buffer *buf)
Returns true if the buffer is an output buffer.
void * iio_buffer_get_data(const struct iio_buffer *buf)
Retrieve a previously associated pointer of an iio_buffer structure.
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_channel_find_attr(const struct iio_channel *chn, const char *name)
Try to find a channel-specific attribute by its name.
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.
void iio_channel_enable(const struct iio_channel *chn, struct iio_channels_mask *mask)
Enable the given channel.
const char * iio_channel_get_name(const struct iio_channel *chn)
Retrieve the channel name (e.g. vccint).
void * iio_channel_get_data(const struct iio_channel *chn)
Retrieve a previously associated pointer of an iio_channel structure.
void iio_channel_disable(const struct iio_channel *chn, struct iio_channels_mask *mask)
Disable the given channel.
unsigned int iio_channel_get_attrs_count(const struct iio_channel *chn)
Enumerate the channel-specific attributes of 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.
const struct iio_device * iio_channel_get_device(const struct iio_channel *chn)
Retrieve a pointer to the iio_device structure.
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.
const char * iio_channel_get_label(const struct iio_channel *chn)
Retrieve the channel label (e.g. anglY).
void iio_channel_set_data(struct iio_channel *chn, void *data)
Associate a pointer to an iio_channel structure.
bool iio_channel_is_scan_element(const struct iio_channel *chn)
Return True if the given channel is a scan element.
const char * iio_channel_get_id(const struct iio_channel *chn)
Retrieve the channel ID (e.g. voltage0).
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.
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_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_get_event_attr(const struct iio_channel *chn, unsigned int index)
Get the event attribute present at the given index.
enum iio_modifier iio_channel_get_modifier(const struct iio_channel *chn)
Get the modifier type of the given channel.
bool iio_channel_is_output(const struct iio_channel *chn)
Return True if the given channel is an output channel.
enum iio_chan_type iio_channel_get_type(const struct iio_channel *chn)
Get the type of the given channel.
void iio_context_destroy(struct iio_context *ctx)
Destroy the given context.
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.
void * iio_context_get_data(const struct iio_context *ctx)
Retrieve a previously associated pointer of an iio_context structure.
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_attrs_count(const struct iio_context *ctx)
Get the number of context-specific attributes.
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.
char * iio_context_get_xml(const struct iio_context *ctx)
Obtain a XML representation of the given context.
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.
unsigned int iio_context_get_devices_count(const struct iio_context *ctx)
Enumerate the devices found in the given context.
const struct iio_context_params * iio_context_get_params(const struct iio_context *ctx)
Get a pointer to the params structure.
const char * iio_context_get_description(const struct iio_context *ctx)
Get a description of the given context.
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.
unsigned int iio_context_get_version_major(const struct iio_context *ctx)
Get the major number of the library version.
int iio_context_ping(struct iio_context *ctx)
Ping the IIO context to check if it is still responsive.
void iio_context_set_data(struct iio_context *ctx, void *data)
Associate a pointer to an iio_context structure.
const char * iio_context_get_name(const struct iio_context *ctx)
Get the name of 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_context * iio_create_context(const struct iio_context_params *params, const char *uri)
Create a context from a URI description.
int iio_context_set_timeout(struct iio_context *ctx, int timeout_ms)
Set a timeout for I/O operations.
void iio_channel_convert_inverse(const struct iio_channel *chn, void *dst, const void *src)
Convert the sample from host format to hardware format.
unsigned int iio_device_get_debug_attrs_count(const struct iio_device *dev)
Enumerate the debug attributes of the given device.
long iio_channel_get_index(const struct iio_channel *chn)
Get the index of the given channel.
int iio_device_reg_read(struct iio_device *dev, uint32_t address, uint32_t *value)
Get the value of a hardware register.
unsigned int iio_device_get_event_attrs_count(const struct iio_device *dev)
Enumerate the event attributes of the given device.
ssize_t iio_device_get_sample_size(const struct iio_device *dev, const struct iio_channels_mask *mask)
Get the current sample size.
void iio_channels_mask_destroy(struct iio_channels_mask *mask)
Destroy a channels mask.
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.
int iio_channel_refresh_format(struct iio_channel *chn)
Refresh the data format of a scan element channel from hardware.
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_get_event_attr(const struct iio_device *dev, unsigned int index)
Get the event attribute present at the given index.
struct iio_channels_mask * iio_create_channels_mask(unsigned int nb_channels)
Create a new empty channels mask.
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.
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.
void iio_channel_convert(const struct iio_channel *chn, void *dst, const void *src)
Convert the sample from hardware format to host format.
const char * iio_device_get_name(const struct iio_device *dev)
Retrieve the device name (e.g. xadc).
unsigned int iio_device_get_buffers_count(const struct iio_device *dev)
Enumerate the buffers of the given device.
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.
unsigned int iio_device_get_attrs_count(const struct iio_device *dev)
Enumerate the device-specific attributes of the given device.
bool iio_device_is_trigger(const struct iio_device *dev)
Return True if the given device is a trigger.
void * iio_device_get_data(const struct iio_device *dev)
Retrieve a previously associated pointer of an iio_device structure.
const struct iio_context * iio_device_get_context(const struct iio_device *dev)
Retrieve a pointer to the iio_context structure.
unsigned int iio_device_get_channels_count(const struct iio_device *dev)
Enumerate the channels of the given device.
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 char * iio_device_get_label(const struct iio_device *dev)
Retrieve the device label (e.g. lo_pll0_rx_adf4351).
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.
const struct iio_device * iio_device_get_trigger(const struct iio_device *dev)
Retrieve the trigger of a given device.
void iio_device_set_data(struct iio_device *dev, void *data)
Associate a pointer to an iio_device structure.
const char * iio_device_get_id(const struct iio_device *dev)
Retrieve the device ID (e.g. iio:device0).
int iio_device_set_trigger(const struct iio_device *dev, const struct iio_device *trigger)
Associate a trigger to a given 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.
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.
hwmon_chan_type
Hwmon channel type.
Definition iio.h:1392
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_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.
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.
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.
const char * iio_get_builtin_backend(unsigned int index)
Retrieve the name of a given built-in backend.
bool iio_has_backend(const struct iio_context_params *params, const char *backend)
Check if the specified backend is available.
void iio_strerror(int err, char *dst, size_t len)
Get a string description of an error code.
unsigned int iio_get_builtin_backends_count(void)
Get the number of available built-in backends.
iio_event_type
IIO event type.
Definition iio.h:349
iio_chan_type
IIO channel type.
Definition iio.h:227
iio_event_direction
IIO event direction.
Definition iio.h:367
iio_modifier
IIO channel modifier.
Definition iio.h:281
iio_context_flags
Flags controlling context behavior;.
Definition iio.h:159
@ IIO_CTX_XML_INCLUDE_VALUES
Include values in XML output When set, iio_context_get_xml() will read and serialize attribute values...
Definition iio.h:163
iio_log_level
Level of verbosity of libiio's log output.
Definition iio.h:131
Structure holding meta-data for an attribute.
Definition iio-backend.h:88
A block of memory containing data samples.
An opened buffer ready for data streaming.
An input or output buffer, used to read or write samples.
Represents an input or output channel of a device.
IIO context creation information.
Definition iio.h:173
unsigned int flags
Flags that control context behavior. Bitmask of values from enum iio_context_flags.
Definition iio.h:207
FILE * err
Handle to the error output. If NULL, defaults to stderr.
Definition iio.h:178
char __rsrv[32]
Reserved for future fields.
Definition iio.h:210
enum iio_log_level log_level
Log level to use. Defaults to the log level that was specified at compilation.
Definition iio.h:182
enum iio_log_level timestamp_level
Under this log level (excluded), messages are sent without timestamp; above this log level (included)...
Definition iio.h:195
enum iio_log_level stderr_level
Under this log level (included), messages are sent to the error output ; above this log level (exclud...
Definition iio.h:188
FILE * out
Handle to the standard output. If NULL, defaults to stdout.
Definition iio.h:175
int timeout_ms
Timeout for I/O operations in milliseconds.
Definition iio.h:203
Contains the representation of an IIO context.
Represents a device in the IIO context.
Represents a IIO event.
Definition iio.h:1437
Structure holding scanning information.
A helper object to simplify reading/writing to a iio_buffer.