libiio  0.25
Library for interfacing with IIO devices
iio.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 /*
3  * libiio - Library for interfacing industrial I/O (IIO) devices
4  *
5  * Copyright (C) 2014 Analog Devices, Inc.
6  * Author: Paul Cercueil <paul.cercueil@analog.com>
7  */
8 
12 #ifndef __IIO_H__
13 #define __IIO_H__
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 #include <limits.h>
20 #include <stdint.h>
21 #include <stdlib.h>
22 #include <stddef.h>
23 
24 #if (defined(_WIN32) || defined(__MBED__))
25 #ifndef _SSIZE_T_DEFINED
26 typedef ptrdiff_t ssize_t;
27 #define _SSIZE_T_DEFINED
28 #endif
29 #else
30 #include <sys/types.h>
31 #endif
32 
33 #if defined(_MSC_VER) && (_MSC_VER < 1800) && !defined(__BOOL_DEFINED)
34 #undef bool
35 #undef false
36 #undef true
37 #define bool char
38 #define false 0
39 #define true 1
40 #else
41 #include <stdbool.h>
42 #endif
43 
44 #if defined(__GNUC__) && !defined(MATLAB_MEX_FILE) && !defined(MATLAB_LOADLIBRARY)
45 #ifndef __cnst
46 #define __cnst __attribute__((const))
47 #endif
48 #ifndef __pure
49 #define __pure __attribute__((pure))
50 #endif
51 #define __notused __attribute__((unused))
52 #ifdef IIO_CHECK_RET
53 #define __check_ret __attribute__((warn_unused_result))
54 #else
55 #define __check_ret
56 #endif
57 #else
58 #define __cnst
59 #define __pure
60 #define __notused
61 #define __check_ret
62 #endif
63 
64 #ifdef _WIN32
65 # ifdef LIBIIO_STATIC
66 # define __api
67 # elif defined(LIBIIO_EXPORTS)
68 # define __api __declspec(dllexport)
69 # else
70 # define __api __declspec(dllimport)
71 # endif
72 #elif __GNUC__ >= 4 && !defined(MATLAB_MEX_FILE) && !defined(MATLAB_LOADLIBRARY)
73 # define __api __attribute__((visibility ("default")))
74 #else
75 # define __api
76 #endif
77 
78 struct iio_context;
79 struct iio_device;
80 struct iio_channel;
81 struct iio_buffer;
82 
83 struct iio_context_info;
84 struct iio_scan_context;
85 struct iio_scan_block;
86 
87 /*
88  * <linux/iio/types.h> header guard to protect these enums from being defined
89  * twice
90  */
91 #ifndef _IIO_TYPES_H_
92 #define _IIO_TYPES_H_
93 
102  IIO_VOLTAGE,
103  IIO_CURRENT,
104  IIO_POWER,
105  IIO_ACCEL,
106  IIO_ANGL_VEL,
107  IIO_MAGN,
108  IIO_LIGHT,
109  IIO_INTENSITY,
110  IIO_PROXIMITY,
111  IIO_TEMP,
112  IIO_INCLI,
113  IIO_ROT,
114  IIO_ANGL,
115  IIO_TIMESTAMP,
116  IIO_CAPACITANCE,
117  IIO_ALTVOLTAGE,
118  IIO_CCT,
119  IIO_PRESSURE,
120  IIO_HUMIDITYRELATIVE,
121  IIO_ACTIVITY,
122  IIO_STEPS,
123  IIO_ENERGY,
124  IIO_DISTANCE,
125  IIO_VELOCITY,
126  IIO_CONCENTRATION,
127  IIO_RESISTANCE,
128  IIO_PH,
129  IIO_UVINDEX,
130  IIO_ELECTRICALCONDUCTIVITY,
131  IIO_COUNT,
132  IIO_INDEX,
133  IIO_GRAVITY,
134  IIO_POSITIONRELATIVE,
135  IIO_PHASE,
136  IIO_MASSCONCENTRATION,
137  IIO_CHAN_TYPE_UNKNOWN = INT_MAX
138 };
139 
148  IIO_NO_MOD,
149  IIO_MOD_X,
150  IIO_MOD_Y,
151  IIO_MOD_Z,
152  IIO_MOD_X_AND_Y,
153  IIO_MOD_X_AND_Z,
154  IIO_MOD_Y_AND_Z,
155  IIO_MOD_X_AND_Y_AND_Z,
156  IIO_MOD_X_OR_Y,
157  IIO_MOD_X_OR_Z,
158  IIO_MOD_Y_OR_Z,
159  IIO_MOD_X_OR_Y_OR_Z,
160  IIO_MOD_LIGHT_BOTH,
161  IIO_MOD_LIGHT_IR,
162  IIO_MOD_ROOT_SUM_SQUARED_X_Y,
163  IIO_MOD_SUM_SQUARED_X_Y_Z,
164  IIO_MOD_LIGHT_CLEAR,
165  IIO_MOD_LIGHT_RED,
166  IIO_MOD_LIGHT_GREEN,
167  IIO_MOD_LIGHT_BLUE,
168  IIO_MOD_QUATERNION,
169  IIO_MOD_TEMP_AMBIENT,
170  IIO_MOD_TEMP_OBJECT,
171  IIO_MOD_NORTH_MAGN,
172  IIO_MOD_NORTH_TRUE,
173  IIO_MOD_NORTH_MAGN_TILT_COMP,
174  IIO_MOD_NORTH_TRUE_TILT_COMP,
175  IIO_MOD_RUNNING,
176  IIO_MOD_JOGGING,
177  IIO_MOD_WALKING,
178  IIO_MOD_STILL,
179  IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z,
180  IIO_MOD_I,
181  IIO_MOD_Q,
182  IIO_MOD_CO2,
183  IIO_MOD_VOC,
184  IIO_MOD_LIGHT_UV,
185  IIO_MOD_LIGHT_DUV,
186  IIO_MOD_PM1,
187  IIO_MOD_PM2P5,
188  IIO_MOD_PM4,
189  IIO_MOD_PM10,
190  IIO_MOD_ETHANOL,
191  IIO_MOD_H2,
192  IIO_MOD_O2,
193  IIO_MOD_LINEAR_X,
194  IIO_MOD_LINEAR_Y,
195  IIO_MOD_LINEAR_Z,
196  IIO_MOD_PITCH,
197  IIO_MOD_YAW,
198  IIO_MOD_ROLL,
199 };
200 
209  IIO_EV_TYPE_THRESH,
210  IIO_EV_TYPE_MAG,
211  IIO_EV_TYPE_ROC,
212  IIO_EV_TYPE_THRESH_ADAPTIVE,
213  IIO_EV_TYPE_MAG_ADAPTIVE,
214  IIO_EV_TYPE_CHANGE,
215  IIO_EV_TYPE_MAG_REFERENCED,
216  IIO_EV_TYPE_GESTURE,
217 };
218 
226  IIO_EV_DIR_EITHER,
227  IIO_EV_DIR_RISING,
228  IIO_EV_DIR_FALLING,
229  IIO_EV_DIR_NONE,
230  IIO_EV_DIR_SINGLETAP,
231  IIO_EV_DIR_DOUBLETAP,
232 };
233 
234 #endif /* _IIO_TYPES_H_ */
235 
236 /* ---------------------------------------------------------------------------*/
237 /* ------------------------- Scan functions ----------------------------------*/
265 __api __check_ret struct iio_scan_context * iio_create_scan_context(
266  const char *backend, unsigned int flags);
267 
268 
273 __api void iio_scan_context_destroy(struct iio_scan_context *ctx);
274 
275 
283 __api __check_ret ssize_t iio_scan_context_get_info_list(struct iio_scan_context *ctx,
284  struct iio_context_info ***info);
285 
286 
290 __api void iio_context_info_list_free(struct iio_context_info **info);
291 
292 
297 __api __check_ret __pure const char * iio_context_info_get_description(
298  const struct iio_context_info *info);
299 
300 
305 __api __check_ret __pure const char * iio_context_info_get_uri(
306  const struct iio_context_info *info);
307 
308 
317 __api struct iio_scan_block * iio_create_scan_block(
318  const char *backend, unsigned int flags);
319 
320 
327 __api void iio_scan_block_destroy(struct iio_scan_block *blk);
328 
329 
336 __api ssize_t iio_scan_block_scan(struct iio_scan_block *blk);
337 
338 
348  struct iio_scan_block *blk, unsigned int index);
349 
350 /* ------------------------------------------------------------------*/
352 /* ------------------------- Top-level functions -----------------------------*/
361 __api void iio_library_get_version(unsigned int *major,
362  unsigned int *minor, char git_tag[8]);
363 
364 
370 __api void iio_strerror(int err, char *dst, size_t len);
371 
372 
378 __api __check_ret __cnst bool iio_has_backend(const char *backend);
379 
380 
385 __api __check_ret __cnst unsigned int iio_get_backends_count(void);
386 
387 
394 __api __check_ret __cnst const char * iio_get_backend(unsigned int index);
395 
396 /* ------------------------------------------------------------------*/
398 /* ------------------------- Context functions -------------------------------*/
412 __api __check_ret struct iio_context * iio_create_default_context(void);
413 
414 
418 __api __check_ret struct iio_context * iio_create_local_context(void);
419 
420 
428 __api __check_ret struct iio_context * iio_create_xml_context(const char *xml_file);
429 
430 
439 __api __check_ret struct iio_context * iio_create_xml_context_mem(
440  const char *xml, size_t len);
441 
442 
447 __api __check_ret struct iio_context * iio_create_network_context(const char *host);
448 
449 
494 __api __check_ret struct iio_context * iio_create_context_from_uri(const char *uri);
495 
496 
505 __api __check_ret struct iio_context * iio_context_clone(const struct iio_context *ctx);
506 
507 
512 __api void iio_context_destroy(struct iio_context *ctx);
513 
514 
522 __api __check_ret int iio_context_get_version(const struct iio_context *ctx,
523  unsigned int *major, unsigned int *minor, char git_tag[8]);
524 
525 
529 __api __check_ret __pure const char * iio_context_get_xml(const struct iio_context *ctx);
530 
531 
539 __api __check_ret __pure const char * iio_context_get_name(const struct iio_context *ctx);
540 
541 
548 __api __check_ret __pure const char * iio_context_get_description(
549  const struct iio_context *ctx);
550 
551 
557 __api __check_ret __pure unsigned int iio_context_get_attrs_count(
558  const struct iio_context *ctx);
559 
560 
570 __api __check_ret int iio_context_get_attr(
571  const struct iio_context *ctx, unsigned int index,
572  const char **name, const char **value);
573 
574 
583 __api __check_ret const char * iio_context_get_attr_value(
584  const struct iio_context *ctx, const char *name);
585 
586 
590 __api __check_ret __pure unsigned int iio_context_get_devices_count(
591  const struct iio_context *ctx);
592 
593 
599 __api __check_ret __pure struct iio_device * iio_context_get_device(
600  const struct iio_context *ctx, unsigned int index);
601 
602 
610 __api __check_ret __pure struct iio_device * iio_context_find_device(
611  const struct iio_context *ctx, const char *name);
612 
613 
621 __api __check_ret int iio_context_set_timeout(
622  struct iio_context *ctx, unsigned int timeout_ms);
623 
624 /* ------------------------------------------------------------------*/
626 /* ------------------------- Device functions --------------------------------*/
636 __api __check_ret __pure const struct iio_context * iio_device_get_context(
637  const struct iio_device *dev);
638 
639 
643 __api __check_ret __pure const char * iio_device_get_id(const struct iio_device *dev);
644 
645 
651 __api __check_ret __pure const char * iio_device_get_name(const struct iio_device *dev);
652 
653 
659 __api __check_ret __pure const char * iio_device_get_label(const struct iio_device *dev);
660 
661 
665 __api __check_ret __pure unsigned int iio_device_get_channels_count(
666  const struct iio_device *dev);
667 
668 
672 __api __check_ret __pure unsigned int iio_device_get_attrs_count(
673  const struct iio_device *dev);
674 
678 __api __check_ret __pure unsigned int iio_device_get_buffer_attrs_count(
679  const struct iio_device *dev);
680 
686 __api __check_ret __pure struct iio_channel * iio_device_get_channel(
687  const struct iio_device *dev, unsigned int index);
688 
689 
695 __api __check_ret __pure const char * iio_device_get_attr(
696  const struct iio_device *dev, unsigned int index);
697 
703 __api __check_ret __pure const char * iio_device_get_buffer_attr(
704  const struct iio_device *dev, unsigned int index);
705 
714 __api __check_ret __pure struct iio_channel * iio_device_find_channel(
715  const struct iio_device *dev, const char *name, bool output);
716 
717 
729 __api __check_ret __pure const char * iio_device_find_attr(
730  const struct iio_device *dev, const char *name);
731 
743 __api __check_ret __pure const char * iio_device_find_buffer_attr(
744  const struct iio_device *dev, const char *name);
745 
767 __api __check_ret ssize_t iio_device_attr_read(const struct iio_device *dev,
768  const char *attr, char *dst, size_t len);
769 
770 
781 __api __check_ret int iio_device_attr_read_all(struct iio_device *dev,
782  int (*cb)(struct iio_device *dev, const char *attr,
783  const char *value, size_t len, void *d),
784  void *data);
785 
786 
794 __api __check_ret int iio_device_attr_read_bool(const struct iio_device *dev,
795  const char *attr, bool *val);
796 
797 
805 __api __check_ret int iio_device_attr_read_longlong(const struct iio_device *dev,
806  const char *attr, long long *val);
807 
808 
816 __api __check_ret int iio_device_attr_read_double(const struct iio_device *dev,
817  const char *attr, double *val);
818 
819 
838 __api __check_ret ssize_t iio_device_attr_write(const struct iio_device *dev,
839  const char *attr, const char *src);
840 
841 
850 __api __check_ret ssize_t iio_device_attr_write_raw(const struct iio_device *dev,
851  const char *attr, const void *src, size_t len);
852 
853 
864 __api __check_ret int iio_device_attr_write_all(struct iio_device *dev,
865  ssize_t (*cb)(struct iio_device *dev,
866  const char *attr, void *buf, size_t len, void *d),
867  void *data);
868 
869 
877 __api __check_ret int iio_device_attr_write_bool(const struct iio_device *dev,
878  const char *attr, bool val);
879 
880 
888 __api __check_ret int iio_device_attr_write_longlong(const struct iio_device *dev,
889  const char *attr, long long val);
890 
891 
899 __api __check_ret int iio_device_attr_write_double(const struct iio_device *dev,
900  const char *attr, double val);
901 
924 __api __check_ret ssize_t iio_device_buffer_attr_read(const struct iio_device *dev,
925  const char *attr, char *dst, size_t len);
926 
937 __api __check_ret int iio_device_buffer_attr_read_all(struct iio_device *dev,
938  int (*cb)(struct iio_device *dev, const char *attr,
939  const char *value, size_t len, void *d),
940  void *data);
941 
942 
950 __api __check_ret int iio_device_buffer_attr_read_bool(const struct iio_device *dev,
951  const char *attr, bool *val);
952 
953 
961 __api __check_ret int iio_device_buffer_attr_read_longlong(const struct iio_device *dev,
962  const char *attr, long long *val);
963 
964 
972 __api __check_ret int iio_device_buffer_attr_read_double(const struct iio_device *dev,
973  const char *attr, double *val);
974 
975 
995 __api __check_ret ssize_t iio_device_buffer_attr_write(const struct iio_device *dev,
996  const char *attr, const char *src);
997 
998 
1007 __api __check_ret ssize_t iio_device_buffer_attr_write_raw(const struct iio_device *dev,
1008  const char *attr, const void *src, size_t len);
1009 
1010 
1021 __api __check_ret int iio_device_buffer_attr_write_all(struct iio_device *dev,
1022  ssize_t (*cb)(struct iio_device *dev,
1023  const char *attr, void *buf, size_t len, void *d),
1024  void *data);
1025 
1026 
1034 __api __check_ret int iio_device_buffer_attr_write_bool(const struct iio_device *dev,
1035  const char *attr, bool val);
1036 
1037 
1045 __api __check_ret int iio_device_buffer_attr_write_longlong(const struct iio_device *dev,
1046  const char *attr, long long val);
1047 
1048 
1056 __api __check_ret int iio_device_buffer_attr_write_double(const struct iio_device *dev,
1057  const char *attr, double val);
1058 
1059 
1063 __api void iio_device_set_data(struct iio_device *dev, void *data);
1064 
1065 
1069 __api void * iio_device_get_data(const struct iio_device *dev);
1070 
1071 
1079 __api __check_ret int iio_device_get_trigger(const struct iio_device *dev,
1080  const struct iio_device **trigger);
1081 
1082 
1089 __api __check_ret int iio_device_set_trigger(const struct iio_device *dev,
1090  const struct iio_device *trigger);
1091 
1092 
1096 __api __check_ret __pure bool iio_device_is_trigger(const struct iio_device *dev);
1097 
1105 __api __check_ret int iio_device_set_kernel_buffers_count(const struct iio_device *dev,
1106  unsigned int nb_buffers);
1107 /* ------------------------------------------------------------------*/
1109 /* ------------------------- Channel functions -------------------------------*/
1119 __api __check_ret __pure const struct iio_device * iio_channel_get_device(
1120  const struct iio_channel *chn);
1121 
1122 
1126 __api __check_ret __pure const char * iio_channel_get_id(const struct iio_channel *chn);
1127 
1128 
1134 __api __check_ret __pure const char * iio_channel_get_name(const struct iio_channel *chn);
1135 
1136 
1140 __api __check_ret __pure bool iio_channel_is_output(const struct iio_channel *chn);
1141 
1142 
1150 __api __check_ret __pure bool iio_channel_is_scan_element(const struct iio_channel *chn);
1151 
1152 
1156 __api __check_ret __pure unsigned int iio_channel_get_attrs_count(
1157  const struct iio_channel *chn);
1158 
1159 
1165 __api __check_ret __pure const char * iio_channel_get_attr(
1166  const struct iio_channel *chn, unsigned int index);
1167 
1168 
1180 __api __check_ret __pure const char * iio_channel_find_attr(
1181  const struct iio_channel *chn, const char *name);
1182 
1183 
1190 __api __check_ret __pure const char * iio_channel_attr_get_filename(
1191  const struct iio_channel *chn, const char *attr);
1192 
1193 
1215 __api __check_ret ssize_t iio_channel_attr_read(const struct iio_channel *chn,
1216  const char *attr, char *dst, size_t len);
1217 
1218 
1229 __api __check_ret int iio_channel_attr_read_all(struct iio_channel *chn,
1230  int (*cb)(struct iio_channel *chn,
1231  const char *attr, const char *val, size_t len, void *d),
1232  void *data);
1233 
1234 
1242 __api __check_ret int iio_channel_attr_read_bool(const struct iio_channel *chn,
1243  const char *attr, bool *val);
1244 
1245 
1253 __api __check_ret int iio_channel_attr_read_longlong(const struct iio_channel *chn,
1254  const char *attr, long long *val);
1255 
1256 
1264 __api __check_ret int iio_channel_attr_read_double(const struct iio_channel *chn,
1265  const char *attr, double *val);
1266 
1267 
1286 __api __check_ret ssize_t iio_channel_attr_write(const struct iio_channel *chn,
1287  const char *attr, const char *src);
1288 
1289 
1298 __api __check_ret ssize_t iio_channel_attr_write_raw(const struct iio_channel *chn,
1299  const char *attr, const void *src, size_t len);
1300 
1301 
1312 __api __check_ret int iio_channel_attr_write_all(struct iio_channel *chn,
1313  ssize_t (*cb)(struct iio_channel *chn,
1314  const char *attr, void *buf, size_t len, void *d),
1315  void *data);
1316 
1317 
1325 __api __check_ret int iio_channel_attr_write_bool(const struct iio_channel *chn,
1326  const char *attr, bool val);
1327 
1328 
1336 __api __check_ret int iio_channel_attr_write_longlong(const struct iio_channel *chn,
1337  const char *attr, long long val);
1338 
1339 
1347 __api __check_ret int iio_channel_attr_write_double(const struct iio_channel *chn,
1348  const char *attr, double val);
1349 
1350 
1357 __api void iio_channel_enable(struct iio_channel *chn);
1358 
1359 
1362 __api void iio_channel_disable(struct iio_channel *chn);
1363 
1364 
1368 __api __check_ret bool iio_channel_is_enabled(const struct iio_channel *chn);
1369 
1370 
1378 __api __check_ret size_t iio_channel_read_raw(const struct iio_channel *chn,
1379  struct iio_buffer *buffer, void *dst, size_t len);
1380 
1381 
1389 __api __check_ret size_t iio_channel_read(const struct iio_channel *chn,
1390  struct iio_buffer *buffer, void *dst, size_t len);
1391 
1392 
1400 __api __check_ret size_t iio_channel_write_raw(const struct iio_channel *chn,
1401  struct iio_buffer *buffer, const void *src, size_t len);
1402 
1403 
1411 __api __check_ret size_t iio_channel_write(const struct iio_channel *chn,
1412  struct iio_buffer *buffer, const void *src, size_t len);
1413 
1414 
1418 __api void iio_channel_set_data(struct iio_channel *chn, void *data);
1419 
1420 
1424 __api void * iio_channel_get_data(const struct iio_channel *chn);
1425 
1426 
1430 __api __check_ret __pure enum iio_chan_type iio_channel_get_type(
1431  const struct iio_channel *chn);
1432 
1433 
1437 __api __check_ret __pure enum iio_modifier iio_channel_get_modifier(
1438  const struct iio_channel *chn);
1439 
1440 /* ------------------------------------------------------------------*/
1442 /* ------------------------- Buffer functions --------------------------------*/
1452 __api __check_ret __pure const struct iio_device * iio_buffer_get_device(
1453  const struct iio_buffer *buf);
1454 
1455 
1465 __api __check_ret struct iio_buffer * iio_device_create_buffer(const struct iio_device *dev,
1466  size_t samples_count, bool cyclic);
1467 
1468 
1473 __api void iio_buffer_destroy(struct iio_buffer *buf);
1474 
1483 __api __check_ret int iio_buffer_get_poll_fd(struct iio_buffer *buf);
1484 
1496 __api __check_ret int iio_buffer_set_blocking_mode(struct iio_buffer *buf, bool blocking);
1497 
1498 
1505 __api __check_ret ssize_t iio_buffer_refill(struct iio_buffer *buf);
1506 
1507 
1514 __api __check_ret ssize_t iio_buffer_push(struct iio_buffer *buf);
1515 
1516 
1524 __api __check_ret ssize_t iio_buffer_push_partial(struct iio_buffer *buf,
1525  size_t samples_count);
1526 
1550 __api void iio_buffer_cancel(struct iio_buffer *buf);
1551 
1552 
1556 __api void * iio_buffer_start(const struct iio_buffer *buf);
1557 
1558 
1574 __api void * iio_buffer_first(const struct iio_buffer *buf,
1575  const struct iio_channel *chn);
1576 
1577 
1582 __api __check_ret ptrdiff_t iio_buffer_step(const struct iio_buffer *buf);
1583 
1584 
1589 __api void * iio_buffer_end(const struct iio_buffer *buf);
1590 
1591 
1603 __api __check_ret ssize_t iio_buffer_foreach_sample(struct iio_buffer *buf,
1604  ssize_t (*callback)(const struct iio_channel *chn,
1605  void *src, size_t bytes, void *d), void *data);
1606 
1607 
1611 __api void iio_buffer_set_data(struct iio_buffer *buf, void *data);
1612 
1613 
1617 __api void * iio_buffer_get_data(const struct iio_buffer *buf);
1618 /* ------------------------------------------------------------------*/
1620 /* ---------------------------- HWMON support --------------------------------*/
1634  HWMON_VOLTAGE,
1635  HWMON_FAN,
1636  HWMON_PWM,
1637  HWMON_TEMP,
1638  HWMON_CURRENT,
1639  HWMON_POWER,
1640  HWMON_ENERGY,
1641  HWMON_HUMIDITY,
1642  HWMON_INTRUSION,
1643  HWMON_CHAN_TYPE_UNKNOWN = IIO_CHAN_TYPE_UNKNOWN,
1644 };
1645 
1650 static inline enum hwmon_chan_type
1651 hwmon_channel_get_type(const struct iio_channel *chn)
1652 {
1653  return (enum hwmon_chan_type) iio_channel_get_type(chn);
1654 }
1655 
1661 static inline bool iio_device_is_hwmon(const struct iio_device *dev)
1662 {
1663  const char *id = iio_device_get_id(dev);
1664 
1665  return id[0] == 'h';
1666 }
1667 
1668 /* ------------------------------------------------------------------*/
1670 /* ------------------------- Low-level functions -----------------------------*/
1682  unsigned int length;
1683 
1685  unsigned int bits;
1686 
1688  unsigned int shift;
1689 
1692 
1695 
1697  bool is_be;
1698 
1701 
1703  double scale;
1704 
1706  unsigned int repeat;
1707 };
1708 
1709 
1717 __api __check_ret ssize_t iio_device_get_sample_size(const struct iio_device *dev);
1718 
1719 
1724 __api __check_ret __pure long iio_channel_get_index(const struct iio_channel *chn);
1725 
1726 
1730 __api __check_ret __cnst const struct iio_data_format * iio_channel_get_data_format(
1731  const struct iio_channel *chn);
1732 
1733 
1739 __api void iio_channel_convert(const struct iio_channel *chn,
1740  void *dst, const void *src);
1741 
1742 
1748 __api void iio_channel_convert_inverse(const struct iio_channel *chn,
1749  void *dst, const void *src);
1750 
1751 
1755 __api __check_ret __pure unsigned int iio_device_get_debug_attrs_count(
1756  const struct iio_device *dev);
1757 
1758 
1764 __api __check_ret __pure const char * iio_device_get_debug_attr(
1765  const struct iio_device *dev, unsigned int index);
1766 
1767 
1780 __api __check_ret __pure const char * iio_device_find_debug_attr(
1781  const struct iio_device *dev, const char *name);
1782 
1783 
1806 __api __check_ret ssize_t iio_device_debug_attr_read(const struct iio_device *dev,
1807  const char *attr, char *dst, size_t len);
1808 
1809 
1819 __api __check_ret int iio_device_debug_attr_read_all(struct iio_device *dev,
1820  int (*cb)(struct iio_device *dev, const char *attr,
1821  const char *value, size_t len, void *d),
1822  void *data);
1823 
1824 
1844 __api __check_ret ssize_t iio_device_debug_attr_write(const struct iio_device *dev,
1845  const char *attr, const char *src);
1846 
1847 
1856 __api __check_ret ssize_t iio_device_debug_attr_write_raw(const struct iio_device *dev,
1857  const char *attr, const void *src, size_t len);
1858 
1859 
1869 __api __check_ret int iio_device_debug_attr_write_all(struct iio_device *dev,
1870  ssize_t (*cb)(struct iio_device *dev,
1871  const char *attr, void *buf, size_t len, void *d),
1872  void *data);
1873 
1874 
1882 __api __check_ret int iio_device_debug_attr_read_bool(const struct iio_device *dev,
1883  const char *attr, bool *val);
1884 
1885 
1893 __api __check_ret int iio_device_debug_attr_read_longlong(const struct iio_device *dev,
1894  const char *attr, long long *val);
1895 
1896 
1904 __api __check_ret int iio_device_debug_attr_read_double(const struct iio_device *dev,
1905  const char *attr, double *val);
1906 
1907 
1915 __api __check_ret int iio_device_debug_attr_write_bool(const struct iio_device *dev,
1916  const char *attr, bool val);
1917 
1918 
1926 __api __check_ret int iio_device_debug_attr_write_longlong(const struct iio_device *dev,
1927  const char *attr, long long val);
1928 
1929 
1937 __api __check_ret int iio_device_debug_attr_write_double(const struct iio_device *dev,
1938  const char *attr, double val);
1939 
1940 
1953 __api __check_ret int iio_device_identify_filename(const struct iio_device *dev,
1954  const char *filename, struct iio_channel **chn,
1955  const char **attr);
1956 
1957 
1964 __api __check_ret int iio_device_reg_write(struct iio_device *dev,
1965  uint32_t address, uint32_t value);
1966 
1967 
1974 __api __check_ret int iio_device_reg_read(struct iio_device *dev,
1975  uint32_t address, uint32_t *value);
1976 
1977 
1980 #ifdef __cplusplus
1981 }
1982 #endif
1983 
1984 #undef __api
1985 
1986 #endif /* __IIO_H__ */
__api void * iio_buffer_first(const struct iio_buffer *buf, const struct iio_channel *chn)
Find the first sample of a channel in a buffer.
Definition: buffer.c:250
__api void iio_buffer_set_data(struct iio_buffer *buf, void *data)
Associate a pointer to an iio_buffer structure.
Definition: buffer.c:298
__api void iio_buffer_cancel(struct iio_buffer *buf)
Cancel all buffer operations.
Definition: buffer.c:313
__api __check_ret int iio_buffer_get_poll_fd(struct iio_buffer *buf)
Get a pollable file descriptor.
Definition: buffer.c:113
__api __check_ret ssize_t iio_buffer_push_partial(struct iio_buffer *buf, size_t samples_count)
Send a given number of samples to the hardware.
Definition: buffer.c:183
__api __check_ret __pure const struct iio_device * iio_buffer_get_device(const struct iio_buffer *buf)
Retrieve a pointer to the iio_device structure.
Definition: buffer.c:308
__api __check_ret ptrdiff_t iio_buffer_step(const struct iio_buffer *buf)
Get the step size between two samples of one channel.
Definition: buffer.c:288
__api void * iio_buffer_start(const struct iio_buffer *buf)
Get the start address of the buffer.
Definition: buffer.c:245
__api __check_ret ssize_t iio_buffer_foreach_sample(struct iio_buffer *buf, 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 buffer.
__api void * iio_buffer_end(const struct iio_buffer *buf)
Get the address that follows the last sample in a buffer.
Definition: buffer.c:293
__api void iio_buffer_destroy(struct iio_buffer *buf)
Destroy the given buffer.
Definition: buffer.c:104
__api void * iio_buffer_get_data(const struct iio_buffer *buf)
Retrieve a previously associated pointer of an iio_buffer structure.
Definition: buffer.c:303
__api __check_ret ssize_t iio_buffer_refill(struct iio_buffer *buf)
Fetch more samples from the hardware.
Definition: buffer.c:123
__api __check_ret int iio_buffer_set_blocking_mode(struct iio_buffer *buf, bool blocking)
Make iio_buffer_refill() and iio_buffer_push() blocking or not.
Definition: buffer.c:118
__api __check_ret ssize_t iio_buffer_push(struct iio_buffer *buf)
Send the samples to the hardware.
Definition: buffer.c:147
__api __check_ret struct iio_buffer * iio_device_create_buffer(const struct iio_device *dev, size_t samples_count, bool cyclic)
Create an input or output buffer associated to the given device.
Definition: buffer.c:26
__api __check_ret __pure bool iio_channel_is_scan_element(const struct iio_channel *chn)
Return True if the given channel is a scan element.
Definition: channel.c:318
__api __check_ret int iio_channel_attr_read_longlong(const struct iio_channel *chn, const char *attr, long long *val)
Read the content of the given channel-specific attribute.
Definition: channel.c:687
__api __check_ret __pure const char * iio_channel_find_attr(const struct iio_channel *chn, const char *name)
Try to find a channel-specific attribute by its name.
Definition: channel.c:361
__api __check_ret __pure unsigned int iio_channel_get_attrs_count(const struct iio_channel *chn)
Enumerate the channel-specific attributes of the given channel.
Definition: channel.c:333
__api __check_ret __pure enum iio_chan_type iio_channel_get_type(const struct iio_channel *chn)
Get the type of the given channel.
Definition: channel.c:328
__api void iio_channel_enable(struct iio_channel *chn)
Enable the given channel.
Definition: channel.c:450
__api __check_ret ssize_t iio_channel_attr_read(const struct iio_channel *chn, const char *attr, char *dst, size_t len)
Read the content of the given channel-specific attribute.
Definition: channel.c:387
__api __check_ret int iio_channel_attr_read_bool(const struct iio_channel *chn, const char *attr, bool *val)
Read the content of the given channel-specific attribute.
Definition: channel.c:704
__api __check_ret size_t iio_channel_write_raw(const struct iio_channel *chn, struct iio_buffer *buffer, const void *src, size_t len)
Multiplex the samples of a given channel.
Definition: channel.c:656
__api __check_ret ssize_t iio_channel_attr_write(const struct iio_channel *chn, const char *attr, const char *src)
Set the value of the given channel-specific attribute.
Definition: channel.c:417
__api __check_ret __pure const char * iio_channel_get_name(const struct iio_channel *chn)
Retrieve the channel name (e.g. vccint)
Definition: channel.c:308
__api __check_ret __pure bool iio_channel_is_output(const struct iio_channel *chn)
Return True if the given channel is an output channel.
Definition: channel.c:313
__api __check_ret __pure enum iio_modifier iio_channel_get_modifier(const struct iio_channel *chn)
Get the modifier type of the given channel.
Definition: channel.c:323
__api void iio_channel_set_data(struct iio_channel *chn, void *data)
Associate a pointer to an iio_channel structure.
Definition: channel.c:423
__api __check_ret size_t iio_channel_write(const struct iio_channel *chn, struct iio_buffer *buffer, const void *src, size_t len)
Convert and multiplex the samples of a given channel.
Definition: channel.c:671
__api __check_ret size_t iio_channel_read(const struct iio_channel *chn, struct iio_buffer *buffer, void *dst, size_t len)
Demultiplex and convert the samples of a given channel.
Definition: channel.c:640
__api __check_ret int iio_channel_attr_write_all(struct iio_channel *chn, ssize_t(*cb)(struct iio_channel *chn, const char *attr, void *buf, size_t len, void *d), void *data)
Set the values of all channel-specific attributes.
Definition: channel.c:830
__api __check_ret int iio_channel_attr_read_double(const struct iio_channel *chn, const char *attr, double *val)
Read the content of the given channel-specific attribute.
Definition: channel.c:716
__api __check_ret int iio_channel_attr_write_bool(const struct iio_channel *chn, const char *attr, bool val)
Set the value of the given channel-specific attribute.
Definition: channel.c:749
__api __check_ret __pure const char * iio_channel_attr_get_filename(const struct iio_channel *chn, const char *attr)
Retrieve the filename of an attribute.
Definition: channel.c:760
__api __check_ret int iio_channel_attr_read_all(struct iio_channel *chn, int(*cb)(struct iio_channel *chn, const char *attr, const char *val, size_t len, void *d), void *data)
Read the content of all channel-specific attributes.
Definition: channel.c:771
__api __check_ret int iio_channel_attr_write_longlong(const struct iio_channel *chn, const char *attr, long long val)
Set the value of the given channel-specific attribute.
Definition: channel.c:727
__api void * iio_channel_get_data(const struct iio_channel *chn)
Retrieve a previously associated pointer of an iio_channel structure.
Definition: channel.c:428
__api __check_ret ssize_t iio_channel_attr_write_raw(const struct iio_channel *chn, const char *attr, const void *src, size_t len)
Set the value of the given channel-specific attribute.
Definition: channel.c:403
__api __check_ret size_t iio_channel_read_raw(const struct iio_channel *chn, struct iio_buffer *buffer, void *dst, size_t len)
Demultiplex the samples of a given channel.
Definition: channel.c:625
__api void iio_channel_disable(struct iio_channel *chn)
Disable the given channel.
Definition: channel.c:456
__api __check_ret int iio_channel_attr_write_double(const struct iio_channel *chn, const char *attr, double val)
Set the value of the given channel-specific attribute.
Definition: channel.c:737
__api __check_ret bool iio_channel_is_enabled(const struct iio_channel *chn)
Returns True if the channel is enabled.
Definition: channel.c:444
__api __check_ret __pure const struct iio_device * iio_channel_get_device(const struct iio_channel *chn)
Retrieve a pointer to the iio_device structure.
Definition: channel.c:873
__api __check_ret __pure const char * iio_channel_get_attr(const struct iio_channel *chn, unsigned int index)
Get the channel-specific attribute present at the given index.
Definition: channel.c:338
__api __check_ret __pure const char * iio_channel_get_id(const struct iio_channel *chn)
Retrieve the channel ID (e.g. voltage0)
Definition: channel.c:303
__api __check_ret struct iio_context * iio_context_clone(const struct iio_context *ctx)
Duplicate a pre-existing IIO context.
Definition: context.c:384
__api __check_ret struct iio_context * iio_create_default_context(void)
Create a context from local or remote IIO devices.
Definition: context.c:415
__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.
Definition: context.c:355
__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.
Definition: context.c:285
__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.
Definition: context.c:470
__api __check_ret __pure const char * iio_context_get_description(const struct iio_context *ctx)
Get a description of the given context.
Definition: context.c:250
__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.
Definition: context.c:483
__api void iio_context_destroy(struct iio_context *ctx)
Destroy the given context.
Definition: context.c:258
__api __check_ret __pure const char * iio_context_get_xml(const struct iio_context *ctx)
Obtain a XML representation of the given context.
Definition: context.c:240
__api __check_ret struct iio_context * iio_create_network_context(const char *host)
Create a context from the network.
Definition: context.c:438
__api __check_ret __pure unsigned int iio_context_get_attrs_count(const struct iio_context *ctx)
Get the number of context-specific attributes.
Definition: context.c:465
__api __check_ret struct iio_context * iio_create_xml_context(const char *xml_file)
Create a context from a XML file.
Definition: context.c:456
__api __check_ret __pure unsigned int iio_context_get_devices_count(const struct iio_context *ctx)
Enumerate the devices found in the given context.
Definition: context.c:280
__api __check_ret int iio_context_set_timeout(struct iio_context *ctx, unsigned int timeout_ms)
Set a timeout for I/O operations.
Definition: context.c:376
__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.
Definition: context.c:447
__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.
Definition: context.c:294
__api __check_ret struct iio_context * iio_create_local_context(void)
Create a context from local IIO devices (Linux only)
Definition: context.c:429
__api __check_ret struct iio_context * iio_create_context_from_uri(const char *uri)
Create a context from a URI description.
Definition: context.c:394
__api __check_ret __pure const char * iio_context_get_name(const struct iio_context *ctx)
Get the name of the given context.
Definition: context.c:245
__api __check_ret int iio_device_debug_attr_read_double(const struct iio_device *dev, const char *attr, double *val)
Read the content of the given debug attribute.
Definition: device.c:708
__api __check_ret int iio_device_reg_write(struct iio_device *dev, uint32_t address, uint32_t value)
Set the value of a hardware register.
Definition: device.c:795
__api __check_ret ssize_t iio_device_debug_attr_write_raw(const struct iio_device *dev, const char *attr, const void *src, size_t len)
Set the value of the given debug attribute.
Definition: device.c:652
__api __check_ret int iio_device_debug_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 debug attributes.
__api __check_ret int iio_device_debug_attr_write_longlong(const struct iio_device *dev, const char *attr, long long val)
Set the value of the given debug attribute.
Definition: device.c:719
__api __check_ret __pure const char * iio_device_find_debug_attr(const struct iio_device *dev, const char *name)
Try to find a debug attribute by its name.
Definition: device.c:228
__api __check_ret int iio_device_debug_attr_write_double(const struct iio_device *dev, const char *attr, double val)
Set the value of the given debug attribute.
Definition: device.c:731
__api __check_ret int iio_device_debug_attr_write_bool(const struct iio_device *dev, const char *attr, bool val)
Set the value of the given debug attribute.
Definition: device.c:743
__api __check_ret ssize_t iio_device_get_sample_size(const struct iio_device *dev)
Get the current sample size.
Definition: device.c:483
__api __check_ret int iio_device_debug_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 debug attributes.
Definition: device.c:1036
__api __check_ret int iio_device_reg_read(struct iio_device *dev, uint32_t address, uint32_t *value)
Get the value of a hardware register.
Definition: device.c:808
__api __check_ret int iio_device_identify_filename(const struct iio_device *dev, const char *filename, struct iio_channel **chn, const char **attr)
Identify the channel or debug attribute corresponding to a filename.
Definition: device.c:756
__api __check_ret ssize_t iio_device_debug_attr_read(const struct iio_device *dev, const char *attr, char *dst, size_t len)
Read the content of the given debug attribute.
Definition: device.c:642
__api __check_ret __pure unsigned int iio_device_get_debug_attrs_count(const struct iio_device *dev)
Enumerate the debug attributes of the given device.
Definition: device.c:668
__api __check_ret __cnst 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.
Definition: channel.c:438
__api __check_ret int iio_device_debug_attr_read_bool(const struct iio_device *dev, const char *attr, bool *val)
Read the content of the given debug attribute.
Definition: device.c:696
__api __check_ret ssize_t iio_device_debug_attr_write(const struct iio_device *dev, const char *attr, const char *src)
Set the value of the given debug attribute.
Definition: device.c:662
__api void iio_channel_convert_inverse(const struct iio_channel *chn, void *dst, const void *src)
Convert the sample from host format to hardware format.
Definition: channel.c:596
__api void iio_channel_convert(const struct iio_channel *chn, void *dst, const void *src)
Convert the sample from hardware format to host format.
Definition: channel.c:564
__api __check_ret __pure long iio_channel_get_index(const struct iio_channel *chn)
Get the index of the given channel.
Definition: channel.c:433
__api __check_ret __pure const char * iio_device_get_debug_attr(const struct iio_device *dev, unsigned int index)
Get the debug attribute present at the given index.
Definition: device.c:673
__api __check_ret int iio_device_debug_attr_read_longlong(const struct iio_device *dev, const char *attr, long long *val)
Read the content of the given debug attribute.
Definition: device.c:679
__api __check_ret 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.
Definition: device.c:488
__api __check_ret int iio_device_buffer_attr_write_double(const struct iio_device *dev, const char *attr, double val)
Set the value of the given buffer-specific attribute.
Definition: device.c:617
__api __check_ret 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.
Definition: device.c:316
__api __check_ret __pure unsigned int iio_device_get_attrs_count(const struct iio_device *dev)
Enumerate the device-specific attributes of the given device.
Definition: device.c:194
__api __check_ret int iio_device_set_trigger(const struct iio_device *dev, const struct iio_device *trigger)
Associate a trigger to a given device.
Definition: device.c:402
__api __check_ret int iio_device_buffer_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 buffer-specific attributes.
Definition: device.c:1044
__api __check_ret int iio_device_buffer_attr_write_bool(const struct iio_device *dev, const char *attr, bool val)
Set the value of the given buffer-specific attribute.
Definition: device.c:629
__api __check_ret 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.
Definition: device.c:528
__api __check_ret int iio_device_buffer_attr_read_double(const struct iio_device *dev, const char *attr, double *val)
Read the content of the given buffer-specific attribute.
Definition: device.c:594
__api __check_ret __pure const char * iio_device_find_buffer_attr(const struct iio_device *dev, const char *name)
Try to find a buffer-specific attribute by its name.
Definition: device.c:222
__api __check_ret 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.
__api __check_ret __pure struct iio_channel * iio_device_get_channel(const struct iio_device *dev, unsigned int index)
Get the channel present at the given index.
Definition: device.c:148
__api __check_ret __pure unsigned int iio_device_get_buffer_attrs_count(const struct iio_device *dev)
Enumerate the buffer-specific attributes of the given device.
Definition: device.c:211
__api __check_ret __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.
Definition: device.c:199
__api __check_ret __pure const char * iio_device_get_name(const struct iio_device *dev)
Retrieve the device name (e.g. xadc)
Definition: device.c:133
__api __check_ret __pure const char * iio_device_get_buffer_attr(const struct iio_device *dev, unsigned int index)
Get the buffer-specific attribute present at the given index.
Definition: device.c:216
__api __check_ret __pure bool iio_device_is_trigger(const struct iio_device *dev)
Return True if the given device is a trigger.
Definition: device.c:368
__api void * iio_device_get_data(const struct iio_device *dev)
Retrieve a previously associated pointer of an iio_device structure.
Definition: device.c:363
__api __check_ret ssize_t iio_device_buffer_attr_write(const struct iio_device *dev, const char *attr, const char *src)
Set the value of the given buffer-specific attribute.
Definition: device.c:352
__api __check_ret int iio_device_set_kernel_buffers_count(const struct iio_device *dev, unsigned int nb_buffers)
Configure the number of kernel buffers for a device.
Definition: device.c:380
__api __check_ret int iio_device_buffer_attr_read_bool(const struct iio_device *dev, const char *attr, bool *val)
Read the content of the given buffer-specific attribute.
Definition: device.c:582
__api __check_ret 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.
Definition: device.c:505
__api __check_ret ssize_t iio_device_buffer_attr_write_raw(const struct iio_device *dev, const char *attr, const void *src, size_t len)
Set the value of the given buffer-specific attribute.
Definition: device.c:342
__api __check_ret __pure const char * iio_device_get_id(const struct iio_device *dev)
Retrieve the device ID (e.g. iio:device0)
Definition: device.c:128
__api __check_ret 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.
Definition: device.c:552
__api __check_ret ssize_t iio_device_buffer_attr_read(const struct iio_device *dev, const char *attr, char *dst, size_t len)
Read the content of the given buffer-specific attribute.
Definition: device.c:332
__api __check_ret __pure const char * iio_device_get_label(const struct iio_device *dev)
Retrieve the device label (e.g. lo_pll0_rx_adf4351)
Definition: device.c:138
__api __check_ret 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.
Definition: device.c:326
__api __check_ret int iio_device_buffer_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 buffer-specific attributes.
__api __check_ret 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.
Definition: device.c:517
__api void iio_device_set_data(struct iio_device *dev, void *data)
Associate a pointer to an iio_device structure.
Definition: device.c:358
__api __check_ret int iio_device_buffer_attr_write_longlong(const struct iio_device *dev, const char *attr, long long val)
Set the value of the given buffer-specific attribute.
Definition: device.c:605
__api __check_ret __pure const struct iio_context * iio_device_get_context(const struct iio_device *dev)
Retrieve a pointer to the iio_context structure.
Definition: device.c:1060
__api __check_ret 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.
Definition: device.c:540
__api __check_ret 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.
Definition: device.c:1052
__api __check_ret __pure unsigned int iio_device_get_channels_count(const struct iio_device *dev)
Enumerate the channels of the given device.
Definition: device.c:143
__api __check_ret int iio_device_get_trigger(const struct iio_device *dev, const struct iio_device **trigger)
Retrieve the trigger of a given device.
Definition: device.c:391
__api __check_ret int iio_device_buffer_attr_read_longlong(const struct iio_device *dev, const char *attr, long long *val)
Read the content of the given buffer-specific attribute.
Definition: device.c:565
__api __check_ret 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.
Definition: device.c:306
__api __check_ret __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.
Definition: device.c:205
__api __check_ret __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.
Definition: device.c:157
hwmon_chan_type
Hwmon channel type.
Definition: iio.h:1633
__api void iio_context_info_list_free(struct iio_context_info **info)
Free a context info list.
Definition: scan.c:103
__api __check_ret ssize_t iio_scan_context_get_info_list(struct iio_scan_context *ctx, struct iio_context_info ***info)
Enumerate available contexts.
Definition: scan.c:33
__api void iio_scan_context_destroy(struct iio_scan_context *ctx)
Destroy the given scan context.
Definition: scan.c:188
__api __check_ret __pure const char * iio_context_info_get_uri(const struct iio_context_info *info)
Get the URI of a discovered context.
Definition: scan.c:27
__api __check_ret __pure const char * iio_context_info_get_description(const struct iio_context_info *info)
Get a description of a discovered context.
Definition: scan.c:21
__api void iio_scan_block_destroy(struct iio_scan_block *blk)
Destroy the given scan block.
Definition: scan.c:238
__api struct iio_context_info * iio_scan_block_get_info(struct iio_scan_block *blk, unsigned int index)
Get the iio_context_info for a particular context.
Definition: scan.c:208
__api __check_ret struct iio_scan_context * iio_create_scan_context(const char *backend, unsigned int flags)
Create a scan context.
Definition: scan.c:139
__api struct iio_scan_block * iio_create_scan_block(const char *backend, unsigned int flags)
Create a scan block.
Definition: scan.c:218
__api ssize_t iio_scan_block_scan(struct iio_scan_block *blk)
Enumerate available contexts via scan block.
Definition: scan.c:200
__api __check_ret __cnst const char * iio_get_backend(unsigned int index)
Retrieve the name of a given backend.
Definition: backend.c:27
__api void iio_strerror(int err, char *dst, size_t len)
Get a string description of an error code.
Definition: utilities.c:204
__api __check_ret __cnst bool iio_has_backend(const char *backend)
Check if the specified backend is available.
Definition: backend.c:62
__api void iio_library_get_version(unsigned int *major, unsigned int *minor, char git_tag[8])
Get the version of the libiio library.
Definition: utilities.c:192
__api __check_ret __cnst unsigned int iio_get_backends_count(void)
Get the number of available backends.
Definition: backend.c:14
iio_event_type
IIO event type.
Definition: iio.h:208
iio_chan_type
IIO channel type.
Definition: iio.h:101
iio_event_direction
IIO event direction.
Definition: iio.h:225
iio_modifier
IIO channel modifier.
Definition: iio.h:147
An input or output buffer, used to read or write samples.
Represents an input or output channel of a device.
The information related to a discovered context.
Contains the representation of an IIO context.
Contains the format of a data sample.
Definition: iio.h:1680
bool is_signed
Contains True if the sample is signed.
Definition: iio.h:1691
bool is_be
Contains True if the sample is in big-endian format.
Definition: iio.h:1697
bool with_scale
Contains True if the sample should be scaled when converted.
Definition: iio.h:1700
double scale
Contains the scale to apply if with_scale is set.
Definition: iio.h:1703
unsigned int repeat
Number of times length repeats (added in v0.8)
Definition: iio.h:1706
unsigned int length
Total length of the sample, in bits.
Definition: iio.h:1682
bool is_fully_defined
Contains True if the sample is fully defined, sign extended, etc.
Definition: iio.h:1694
unsigned int shift
Right-shift to apply when converting sample.
Definition: iio.h:1688
unsigned int bits
Length of valuable data in the sample, in bits.
Definition: iio.h:1685
Represents a device in the IIO context.