libiio  0.3
Library for interfacing with IIO devices
Data Structures | Functions
Device

Data Structures

struct  iio_device
 Represents a device in the IIO context. More...
 

Functions

__api __pure const char * iio_device_get_id (const struct iio_device *dev)
 Retrieve the device ID (e.g. iio:device0) More...
 
__api __pure const char * iio_device_get_name (const struct iio_device *dev)
 Retrieve the device name (e.g. xadc) More...
 
__api __pure unsigned int iio_device_get_channels_count (const struct iio_device *dev)
 Enumerate the channels of the given device. More...
 
__api __pure unsigned int iio_device_get_attrs_count (const struct iio_device *dev)
 Enumerate the device-specific attributes of the given device. More...
 
__api __pure struct iio_channeliio_device_get_channel (const struct iio_device *dev, unsigned int index)
 Get the channel present at the given index. More...
 
__api __pure const char * iio_device_get_attr (const struct iio_device *dev, unsigned int index)
 Get the device-specific attribute present at the given index. More...
 
__api __pure struct iio_channeliio_device_find_channel (const struct iio_device *dev, const char *name, bool output)
 Try to find a channel structure by its name of ID. More...
 
__api __pure const char * iio_device_find_attr (const struct iio_device *dev, const char *name)
 Try to find a device-specific attribute by its name. More...
 
__api ssize_t iio_device_attr_read (const struct iio_device *dev, const char *attr, char *dst, size_t len)
 Read the content of the given device-specific attribute. More...
 
__api int iio_device_attr_read_all (struct iio_device *dev, int(*cb)(struct iio_device *dev, const char *attr, const char *value, size_t len, void *d), void *data)
 Read the content of all device-specific attributes. More...
 
__api int iio_device_attr_read_bool (const struct iio_device *dev, const char *attr, bool *val)
 Read the content of the given device-specific attribute. More...
 
__api int iio_device_attr_read_longlong (const struct iio_device *dev, const char *attr, long long *val)
 Read the content of the given device-specific attribute. More...
 
__api int iio_device_attr_read_double (const struct iio_device *dev, const char *attr, double *val)
 Read the content of the given device-specific attribute. More...
 
__api ssize_t iio_device_attr_write (const struct iio_device *dev, const char *attr, const char *src)
 Set the value of the given device-specific attribute. More...
 
__api ssize_t iio_device_attr_write_raw (const struct iio_device *dev, const char *attr, const void *src, size_t len)
 Set the value of the given device-specific attribute. More...
 
__api int iio_device_attr_write_all (struct iio_device *dev, ssize_t(*cb)(struct iio_device *dev, const char *attr, void *buf, size_t len, void *d), void *data)
 Set the values of all device-specific attributes. More...
 
__api int iio_device_attr_write_bool (const struct iio_device *dev, const char *attr, bool val)
 Set the value of the given device-specific attribute. More...
 
__api int iio_device_attr_write_longlong (const struct iio_device *dev, const char *attr, long long val)
 Set the value of the given device-specific attribute. More...
 
__api int iio_device_attr_write_double (const struct iio_device *dev, const char *attr, double val)
 Set the value of the given device-specific attribute. More...
 
__api void iio_device_set_data (struct iio_device *dev, void *data)
 Associate a pointer to an iio_device structure. More...
 
__api void * iio_device_get_data (const struct iio_device *dev)
 Retrieve a previously associated pointer of an iio_device structure. More...
 
__api int iio_device_get_trigger (const struct iio_device *dev, const struct iio_device **trigger)
 Retrieve the trigger of a given device. More...
 
__api int iio_device_set_trigger (const struct iio_device *dev, const struct iio_device *trigger)
 Associate a trigger to a given device. More...
 
__api __pure bool iio_device_is_trigger (const struct iio_device *dev)
 Return True if the given device is a trigger. More...
 

Detailed Description

Function Documentation

◆ iio_device_attr_read()

__api ssize_t iio_device_attr_read ( const struct iio_device dev,
const char *  attr,
char *  dst,
size_t  len 
)

Read the content of the given device-specific attribute.

Parameters
devA pointer to an iio_device structure
attrA NULL-terminated string corresponding to the name of the attribute
dstA pointer to the memory area where the NULL-terminated string corresponding to the value read will be stored
lenThe available length of the memory area, in bytes
Returns
On success, the number of bytes written to the buffer
On error, a negative errno code is returned

NOTE:By passing NULL as the "attr" argument to iio_device_attr_read, it is now possible to read all of the attributes of a device.

The buffer is filled with one block of data per attribute of the device, by the order they appear in the iio_device structure.

The first four bytes of one block correspond to a 32-bit signed value in network order. If negative, it corresponds to the errno code that were returned when reading the attribute; if positive, it corresponds to the length of the data read. In that case, the rest of the block contains the data.

◆ iio_device_attr_read_all()

__api int iio_device_attr_read_all ( struct iio_device dev,
int(*)(struct iio_device *dev, const char *attr, const char *value, size_t len, void *d)  cb,
void *  data 
)

Read the content of all device-specific attributes.

Parameters
devA pointer to an iio_device structure
cbA pointer to a callback function
dataA pointer that will be passed to the callback function
Returns
On success, 0 is returned
On error, a negative errno code is returned

NOTE: This function is especially useful when used with the network backend, as all the device-specific attributes are read in one single command.

◆ iio_device_attr_read_bool()

__api int iio_device_attr_read_bool ( const struct iio_device dev,
const char *  attr,
bool *  val 
)

Read the content of the given device-specific attribute.

Parameters
devA pointer to an iio_device structure
attrA NULL-terminated string corresponding to the name of the attribute
valA pointer to a bool variable where the value should be stored
Returns
On success, 0 is returned
On error, a negative errno code is returned

◆ iio_device_attr_read_double()

__api int iio_device_attr_read_double ( const struct iio_device dev,
const char *  attr,
double *  val 
)

Read the content of the given device-specific attribute.

Parameters
devA pointer to an iio_device structure
attrA NULL-terminated string corresponding to the name of the attribute
valA pointer to a double variable where the value should be stored
Returns
On success, 0 is returned
On error, a negative errno code is returned

◆ iio_device_attr_read_longlong()

__api int iio_device_attr_read_longlong ( const struct iio_device dev,
const char *  attr,
long long *  val 
)

Read the content of the given device-specific attribute.

Parameters
devA pointer to an iio_device structure
attrA NULL-terminated string corresponding to the name of the attribute
valA pointer to a long long variable where the value should be stored
Returns
On success, 0 is returned
On error, a negative errno code is returned

◆ iio_device_attr_write()

__api ssize_t iio_device_attr_write ( const struct iio_device dev,
const char *  attr,
const char *  src 
)

Set the value of the given device-specific attribute.

Parameters
devA pointer to an iio_device structure
attrA NULL-terminated string corresponding to the name of the attribute
srcA NULL-terminated string to set the attribute to
Returns
On success, the number of bytes written
On error, a negative errno code is returned

NOTE:By passing NULL as the "attr" argument to iio_device_attr_write, it is now possible to write all of the attributes of a device.

The buffer must contain one block of data per attribute of the device, by the order they appear in the iio_device structure.

The first four bytes of one block correspond to a 32-bit signed value in network order. If negative, the attribute is not written; if positive, it corresponds to the length of the data to write. In that case, the rest of the block must contain the data.

◆ iio_device_attr_write_all()

__api int iio_device_attr_write_all ( struct iio_device dev,
ssize_t(*)(struct iio_device *dev, const char *attr, void *buf, size_t len, void *d)  cb,
void *  data 
)

Set the values of all device-specific attributes.

Parameters
devA pointer to an iio_device structure
cbA pointer to a callback function
dataA pointer that will be passed to the callback function
Returns
On success, 0 is returned
On error, a negative errno code is returned

NOTE: This function is especially useful when used with the network backend, as all the device-specific attributes are written in one single command.

◆ iio_device_attr_write_bool()

__api int iio_device_attr_write_bool ( const struct iio_device dev,
const char *  attr,
bool  val 
)

Set the value of the given device-specific attribute.

Parameters
devA pointer to an iio_device structure
attrA NULL-terminated string corresponding to the name of the attribute
valA bool value to set the attribute to
Returns
On success, 0 is returned
On error, a negative errno code is returned

◆ iio_device_attr_write_double()

__api int iio_device_attr_write_double ( const struct iio_device dev,
const char *  attr,
double  val 
)

Set the value of the given device-specific attribute.

Parameters
devA pointer to an iio_device structure
attrA NULL-terminated string corresponding to the name of the attribute
valA double value to set the attribute to
Returns
On success, 0 is returned
On error, a negative errno code is returned

◆ iio_device_attr_write_longlong()

__api int iio_device_attr_write_longlong ( const struct iio_device dev,
const char *  attr,
long long  val 
)

Set the value of the given device-specific attribute.

Parameters
devA pointer to an iio_device structure
attrA NULL-terminated string corresponding to the name of the attribute
valA long long value to set the attribute to
Returns
On success, 0 is returned
On error, a negative errno code is returned

◆ iio_device_attr_write_raw()

__api ssize_t iio_device_attr_write_raw ( const struct iio_device dev,
const char *  attr,
const void *  src,
size_t  len 
)

Set the value of the given device-specific attribute.

Parameters
devA pointer to an iio_device structure
attrA NULL-terminated string corresponding to the name of the attribute
srcA pointer to the data to be written
lenThe number of bytes that should be written
Returns
On success, the number of bytes written
On error, a negative errno code is returned

◆ iio_device_find_attr()

__api __pure const char* iio_device_find_attr ( const struct iio_device dev,
const char *  name 
)

Try to find a device-specific attribute by its name.

Parameters
devA pointer to an iio_device structure
nameA NULL-terminated string corresponding to the name of the attribute
Returns
On success, a pointer to a static NULL-terminated string
If the name does not correspond to any known attribute of the given device, NULL is returned

NOTE: This function is useful to detect the presence of an attribute. It can also be used to retrieve the name of an attribute as a pointer to a static string from a dynamically allocated string.

◆ iio_device_find_channel()

__api __pure 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 name of ID.

Parameters
devA pointer to an iio_device structure
nameA NULL-terminated string corresponding to the name or the ID of the channel to search for
outputTrue if the searched channel is output, False otherwise
Returns
On success, a pointer to an iio_channel structure
If the name or ID does not correspond to any known channel of the given device, NULL is returned

◆ iio_device_get_attr()

__api __pure const char* iio_device_get_attr ( const struct iio_device dev,
unsigned int  index 
)

Get the device-specific attribute present at the given index.

Parameters
devA pointer to an iio_device structure
indexThe index corresponding to the attribute
Returns
On success, a pointer to a static NULL-terminated string
If the index is invalid, NULL is returned

◆ iio_device_get_attrs_count()

__api __pure unsigned int iio_device_get_attrs_count ( const struct iio_device dev)

Enumerate the device-specific attributes of the given device.

Parameters
devA pointer to an iio_device structure
Returns
The number of device-specific attributes found

◆ iio_device_get_channel()

__api __pure struct iio_channel* iio_device_get_channel ( const struct iio_device dev,
unsigned int  index 
)

Get the channel present at the given index.

Parameters
devA pointer to an iio_device structure
indexThe index corresponding to the channel
Returns
On success, a pointer to an iio_channel structure
If the index is invalid, NULL is returned

◆ iio_device_get_channels_count()

__api __pure unsigned int iio_device_get_channels_count ( const struct iio_device dev)

Enumerate the channels of the given device.

Parameters
devA pointer to an iio_device structure
Returns
The number of channels found

◆ iio_device_get_data()

__api void* iio_device_get_data ( const struct iio_device dev)

Retrieve a previously associated pointer of an iio_device structure.

Parameters
devA pointer to an iio_device structure
Returns
The pointer previously associated if present, or NULL

◆ iio_device_get_id()

__api __pure const char* iio_device_get_id ( const struct iio_device dev)

Retrieve the device ID (e.g. iio:device0)

Parameters
devA pointer to an iio_device structure
Returns
A pointer to a static NULL-terminated string

◆ iio_device_get_name()

__api __pure const char* iio_device_get_name ( const struct iio_device dev)

Retrieve the device name (e.g. xadc)

Parameters
devA pointer to an iio_device structure
Returns
A pointer to a static NULL-terminated string

NOTE: if the device has no name, NULL is returned.

◆ iio_device_get_trigger()

__api int iio_device_get_trigger ( const struct iio_device dev,
const struct iio_device **  trigger 
)

Retrieve the trigger of a given device.

Parameters
devA pointer to an iio_device structure
triggera pointer to a pointer of an iio_device structure. The pointed pointer will be set to the address of the iio_device structure corresponding to the associated trigger device.
Returns
On success, 0 is returned
On error, a negative errno code is returned

◆ iio_device_is_trigger()

__api __pure bool iio_device_is_trigger ( const struct iio_device dev)

Return True if the given device is a trigger.

Parameters
devA pointer to an iio_device structure
Returns
True if the device is a trigger, False otherwise

◆ iio_device_set_data()

__api void iio_device_set_data ( struct iio_device dev,
void *  data 
)

Associate a pointer to an iio_device structure.

Parameters
devA pointer to an iio_device structure
dataThe pointer to be associated

◆ iio_device_set_trigger()

__api int iio_device_set_trigger ( const struct iio_device dev,
const struct iio_device trigger 
)

Associate a trigger to a given device.

Parameters
devA pointer to an iio_device structure
triggera pointer to the iio_device structure corresponding to the trigger that should be associated.
Returns
On success, 0 is returned
On error, a negative errno code is returned