libiio  0.25
Library for interfacing with IIO devices
Context

Data Structures

struct  iio_context
 Contains the representation of an IIO context. More...
 

Functions

__api __check_ret struct iio_contextiio_create_default_context (void)
 Create a context from local or remote IIO devices. More...
 
__api __check_ret struct iio_contextiio_create_local_context (void)
 Create a context from local IIO devices (Linux only) More...
 
__api __check_ret struct iio_contextiio_create_xml_context (const char *xml_file)
 Create a context from a XML file. More...
 
__api __check_ret struct iio_contextiio_create_xml_context_mem (const char *xml, size_t len)
 Create a context from XML data in memory. More...
 
__api __check_ret struct iio_contextiio_create_network_context (const char *host)
 Create a context from the network. More...
 
__api __check_ret struct iio_contextiio_create_context_from_uri (const char *uri)
 Create a context from a URI description. More...
 
__api __check_ret struct iio_contextiio_context_clone (const struct iio_context *ctx)
 Duplicate a pre-existing IIO context. More...
 
__api void iio_context_destroy (struct iio_context *ctx)
 Destroy the given context. More...
 
__api __check_ret int iio_context_get_version (const struct iio_context *ctx, unsigned int *major, unsigned int *minor, char git_tag[8])
 Get the version of the backend in use. More...
 
__api __check_ret __pure const char * iio_context_get_xml (const struct iio_context *ctx)
 Obtain a XML representation of the given context. More...
 
__api __check_ret __pure const char * iio_context_get_name (const struct iio_context *ctx)
 Get the name of the given context. More...
 
__api __check_ret __pure const char * iio_context_get_description (const struct iio_context *ctx)
 Get a description of the given context. More...
 
__api __check_ret __pure unsigned int iio_context_get_attrs_count (const struct iio_context *ctx)
 Get the number of context-specific attributes. More...
 
__api __check_ret int iio_context_get_attr (const struct iio_context *ctx, unsigned int index, const char **name, const char **value)
 Retrieve the name and value of a context-specific attribute. More...
 
__api __check_ret const char * iio_context_get_attr_value (const struct iio_context *ctx, const char *name)
 Retrieve the value of a context-specific attribute. More...
 
__api __check_ret __pure unsigned int iio_context_get_devices_count (const struct iio_context *ctx)
 Enumerate the devices found in the given context. More...
 
__api __check_ret __pure struct iio_deviceiio_context_get_device (const struct iio_context *ctx, unsigned int index)
 Get the device present at the given index. More...
 
__api __check_ret __pure struct iio_deviceiio_context_find_device (const struct iio_context *ctx, const char *name)
 Try to find a device structure by its ID, label or name. More...
 
__api __check_ret int iio_context_set_timeout (struct iio_context *ctx, unsigned int timeout_ms)
 Set a timeout for I/O operations. More...
 

Detailed Description

Function Documentation

◆ iio_context_clone()

__api __check_ret struct iio_context* iio_context_clone ( const struct iio_context ctx)

Duplicate a pre-existing IIO context.

Parameters
ctxA pointer to an iio_context structure
Returns
On success, A pointer to an iio_context structure
On failure, NULL is returned and errno is set appropriately

NOTE: This function is not supported on 'usb:' contexts, since libusb can only claim the interface once. "Function not implemented" is the expected errno. Any context which is cloned, must be destroyed via calling iio_context_destroy()

◆ iio_context_destroy()

__api void iio_context_destroy ( struct iio_context ctx)

Destroy the given context.

Parameters
ctxA pointer to an iio_context structure

NOTE: After that function, the iio_context pointer shall be invalid.

◆ iio_context_find_device()

__api __check_ret __pure 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.

Parameters
ctxA pointer to an iio_context structure
nameA NULL-terminated string corresponding to the ID, label or name of the device to search for
Returns
On success, a pointer to an iio_device structure
If the parameter does not correspond to the ID, label or name of any known device, NULL is returned

◆ iio_context_get_attr()

__api __check_ret int iio_context_get_attr ( const struct iio_context ctx,
unsigned int  index,
const char **  name,
const char **  value 
)

Retrieve the name and value of a context-specific attribute.

Parameters
ctxA pointer to an iio_context structure
indexThe index corresponding to the attribute
nameA pointer to a const char * pointer (NULL accepted)
valueA pointer to a const char * pointer (NULL accepted)
Returns
On success, 0 is returned
On error, a negative errno code is returned

Introduced in version 0.9.

◆ iio_context_get_attr_value()

__api __check_ret const char* iio_context_get_attr_value ( const struct iio_context ctx,
const char *  name 
)

Retrieve the value of a context-specific attribute.

Parameters
ctxA pointer to an iio_context structure
nameThe name of the context attribute to read
Returns
On success, a pointer to a static NULL-terminated string
If the name does not correspond to any attribute, NULL is returned

Introduced in version 0.9.

◆ iio_context_get_attrs_count()

__api __check_ret __pure unsigned int iio_context_get_attrs_count ( const struct iio_context ctx)

Get the number of context-specific attributes.

Parameters
ctxA pointer to an iio_context structure
Returns
The number of context-specific attributes

Introduced in version 0.9.

◆ iio_context_get_description()

__api __check_ret __pure const char* iio_context_get_description ( const struct iio_context ctx)

Get a description of the given context.

Parameters
ctxA pointer to an iio_context structure
Returns
A pointer to a static NULL-terminated string

NOTE:The returned string will contain human-readable information about the current context.

◆ iio_context_get_device()

__api __check_ret __pure struct iio_device* iio_context_get_device ( const struct iio_context ctx,
unsigned int  index 
)

Get the device present at the given index.

Parameters
ctxA pointer to an iio_context structure
indexThe index corresponding to the device
Returns
On success, a pointer to an iio_device structure
If the index is invalid, NULL is returned

◆ iio_context_get_devices_count()

__api __check_ret __pure unsigned int iio_context_get_devices_count ( const struct iio_context ctx)

Enumerate the devices found in the given context.

Parameters
ctxA pointer to an iio_context structure
Returns
The number of devices found

◆ iio_context_get_name()

__api __check_ret __pure const char* iio_context_get_name ( const struct iio_context ctx)

Get the name of the given context.

Parameters
ctxA pointer to an iio_context structure
Returns
A pointer to a static NULL-terminated string

NOTE:The returned string will be local, xml or network when the context has been created with the local, xml and network backends respectively.

◆ iio_context_get_version()

__api __check_ret int iio_context_get_version ( const struct iio_context ctx,
unsigned int *  major,
unsigned int *  minor,
char  git_tag[8] 
)

Get the version of the backend in use.

Parameters
ctxA pointer to an iio_context structure
majorA pointer to an unsigned integer (NULL accepted)
minorA pointer to an unsigned integer (NULL accepted)
git_tagA pointer to a 8-characters buffer (NULL accepted)
Returns
On success, 0 is returned
On error, a negative errno code is returned
Here is the call graph for this function:

◆ iio_context_get_xml()

__api __check_ret __pure const char* iio_context_get_xml ( const struct iio_context ctx)

Obtain a XML representation of the given context.

Parameters
ctxA pointer to an iio_context structure
Returns
A pointer to a static NULL-terminated string

◆ iio_context_set_timeout()

__api __check_ret int iio_context_set_timeout ( struct iio_context ctx,
unsigned int  timeout_ms 
)

Set a timeout for I/O operations.

Parameters
ctxA pointer to an iio_context structure
timeout_msA positive integer representing the time in milliseconds after which a timeout occurs. A value of 0 is used to specify that no timeout should occur.
Returns
On success, 0 is returned
On error, a negative errno code is returned

◆ iio_create_context_from_uri()

__api __check_ret struct iio_context* iio_create_context_from_uri ( const char *  uri)

Create a context from a URI description.

Parameters
uriA URI describing the context location
Returns
On success, a pointer to a iio_context structure
On failure, NULL is returned and errno is set appropriately

NOTE: The following URIs are supported based on compile time backend support:

  • Local backend, "local:"
    Does not have an address part. For example "local:"
  • XML backend, "xml:"
    Requires a path to the XML file for the address part. For example "xml:/home/user/file.xml"
  • Network backend, "ip:"
    Requires a hostname, IPv4, or IPv6 to connect to a specific running IIO Daemon or no address part for automatic discovery when library is compiled with ZeroConf support. For example "ip:192.168.2.1", or "ip:localhost", or "ip:" or "ip:plutosdr.local". To support alternative port numbers the standard ip:host:port format is used. A special format is required as defined in RFC2732 for IPv6 literal hostnames, (adding '[]' around the host) to use a ip:[x:x:x:x:x:x:x:x]:port format. Valid examples would be:
    • ip: Any host on default port
    • ip::40000 Any host on port 40000
    • ip:analog.local Default port
    • ip:brain.local:40000 Port 40000
    • ip:192.168.1.119 Default Port
    • ip:192.168.1.119:40000 Port 40000
    • ip:2601:190:400:da:47b3:55ab:3914:bff1 Default Port
    • ip:[2601:190:400:da:9a90:96ff:feb5:acaa]:40000 Port 40000
    • ip:fe80::f14d:3728:501e:1f94eth0 Link-local through eth0, default port
    • ip:[fe80::f14d:3728:501e:1f94eth0]:40000 Link-local through eth0, port 40000
  • USB backend, "usb:"
    When more than one usb device is attached, requires bus, address, and interface parts separated with a dot. For example "usb:3.32.5". Where there is only one USB device attached, the shorthand "usb:" can be used.
  • Serial backend, "serial:"
    Requires:

    • a port (/dev/ttyUSB0),
    • baud_rate (default 115200)
    • serial port configuration
      • data bits (5 6 7 8 9)
      • parity ('n' none, 'o' odd, 'e' even, 'm' mark, 's' space)
      • stop bits (1 2)
      • flow control ('\0' none, 'x' Xon Xoff, 'r' RTSCTS, 'd' DTRDSR)

    For example "serial:/dev/ttyUSB0,115200" or "serial:/dev/ttyUSB0,115200,8n1"

Here is the call graph for this function:
Here is the caller graph for this function:

◆ iio_create_default_context()

__api __check_ret struct iio_context* iio_create_default_context ( void  )

Create a context from local or remote IIO devices.

Returns
On success, A pointer to an iio_context structure
On failure, NULL is returned and errno is set appropriately

NOTE: This function will create a context with the URI provided in the IIOD_REMOTE environment variable. If not set, a local context will be created instead.

Here is the call graph for this function:

◆ iio_create_local_context()

__api __check_ret struct iio_context* iio_create_local_context ( void  )

Create a context from local IIO devices (Linux only)

Returns
On success, A pointer to an iio_context structure
On failure, NULL is returned and errno is set appropriately
Here is the caller graph for this function:

◆ iio_create_network_context()

__api __check_ret struct iio_context* iio_create_network_context ( const char *  host)

Create a context from the network.

Parameters
hostHostname, IPv4 or IPv6 address where the IIO Daemon is running
Returns
On success, a pointer to an iio_context structure
On failure, NULL is returned and errno is set appropriately
Here is the caller graph for this function:

◆ iio_create_xml_context()

__api __check_ret struct iio_context* iio_create_xml_context ( const char *  xml_file)

Create a context from a XML file.

Parameters
xml_filePath to the XML file to open
Returns
On success, A pointer to an iio_context structure
On failure, NULL is returned and errno is set appropriately

NOTE: The format of the XML must comply to the one returned by iio_context_get_xml.

Here is the caller graph for this function:

◆ iio_create_xml_context_mem()

__api __check_ret struct iio_context* iio_create_xml_context_mem ( const char *  xml,
size_t  len 
)

Create a context from XML data in memory.

Parameters
xmlPointer to the XML data in memory
lenLength of the XML string in memory (excluding the final \0)
Returns
On success, A pointer to an iio_context structure
On failure, NULL is returned and errno is set appropriately

NOTE: The format of the XML must comply to the one returned by iio_context_get_xml