]>
Commit | Line | Data |
---|---|---|
bdcb31d0 RD |
1 | #ifndef _IIO_UTILS_H_ |
2 | #define _IIO_UTILS_H_ | |
3 | ||
c57f1ba7 JC |
4 | /* IIO - useful set of util functionality |
5 | * | |
6 | * Copyright (c) 2008 Jonathan Cameron | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or modify it | |
9 | * under the terms of the GNU General Public License version 2 as published by | |
10 | * the Free Software Foundation. | |
11 | */ | |
12 | ||
e58537cc | 13 | #include <stdint.h> |
9d8ae6c8 | 14 | |
b42f2a0c | 15 | /* Made up value to limit allocation sizes */ |
9d8ae6c8 JC |
16 | #define IIO_MAX_NAME_LENGTH 30 |
17 | ||
1aa04278 | 18 | #define FORMAT_SCAN_ELEMENTS_DIR "%s/scan_elements" |
e58537cc | 19 | #define FORMAT_TYPE_FILE "%s_type" |
c57f1ba7 | 20 | |
bdcb31d0 | 21 | extern const char *iio_dir; |
e58537cc JC |
22 | |
23 | /** | |
24 | * struct iio_channel_info - information about a given channel | |
25 | * @name: channel name | |
26 | * @generic_name: general name for channel type | |
27 | * @scale: scale factor to be applied for conversion to si units | |
28 | * @offset: offset to be applied for conversion to si units | |
29 | * @index: the channel index in the buffer output | |
30 | * @bytes: number of bytes occupied in buffer output | |
5dc65d79 HK |
31 | * @bits_used: number of valid bits of data |
32 | * @shift: amount of bits to shift right data before applying bit mask | |
e58537cc | 33 | * @mask: a bit mask for the raw output |
5dc65d79 | 34 | * @be: flag if data is big endian |
e58537cc | 35 | * @is_signed: is the raw value stored signed |
5dc65d79 | 36 | * @location: data offset for this channel inside the buffer (in bytes) |
e58537cc JC |
37 | **/ |
38 | struct iio_channel_info { | |
39 | char *name; | |
40 | char *generic_name; | |
41 | float scale; | |
42 | float offset; | |
43 | unsigned index; | |
44 | unsigned bytes; | |
45 | unsigned bits_used; | |
52615d47 | 46 | unsigned shift; |
e58537cc | 47 | uint64_t mask; |
117cf8b7 | 48 | unsigned be; |
e58537cc | 49 | unsigned is_signed; |
e58537cc JC |
50 | unsigned location; |
51 | }; | |
52 | ||
bdcb31d0 RD |
53 | int iioutils_break_up_name(const char *full_name, char **generic_name); |
54 | int iioutils_get_type(unsigned *is_signed, unsigned *bytes, | |
55 | unsigned *bits_used, unsigned *shift, | |
56 | uint64_t *mask, unsigned *be, | |
57 | const char *device_dir, const char *name, | |
58 | const char *generic_name); | |
59 | int iioutils_get_param_float(float *output, const char *param_name, | |
60 | const char *device_dir, const char *name, | |
61 | const char *generic_name); | |
62 | void bsort_channel_array_by_index(struct iio_channel_info **ci_array, int cnt); | |
63 | int build_channel_array(const char *device_dir, | |
64 | struct iio_channel_info **ci_array, int *counter); | |
65 | int find_type_by_name(const char *name, const char *type); | |
9d475254 HK |
66 | int write_sysfs_int(const char *filename, const char *basedir, int val); |
67 | int write_sysfs_int_and_verify(const char *filename, const char *basedir, | |
68 | int val); | |
69 | int write_sysfs_string_and_verify(const char *filename, const char *basedir, | |
70 | const char *val); | |
71 | int write_sysfs_string(const char *filename, const char *basedir, | |
72 | const char *val); | |
73 | int read_sysfs_posint(const char *filename, const char *basedir); | |
74 | int read_sysfs_float(const char *filename, const char *basedir, float *val); | |
bdcb31d0 RD |
75 | int read_sysfs_string(const char *filename, const char *basedir, char *str); |
76 | ||
77 | #endif /* _IIO_UTILS_H_ */ |