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