blob: 990fe3426d02e81c2d1f5a9df99a459dd7d3b606 [file] [log] [blame]
Paul Cercueil167d3112014-02-18 12:23:53 +01001#include "debug.h"
Paul Cercueil0b2ce712014-02-17 15:04:18 +01002#include "iio-private.h"
3
Paul Cercueil167d3112014-02-18 12:23:53 +01004#include <errno.h>
Paul Cercueil0b2ce712014-02-17 15:04:18 +01005#include <stdio.h>
Paul Cercueil167d3112014-02-18 12:23:53 +01006#include <string.h>
Paul Cercueil0b2ce712014-02-17 15:04:18 +01007
8const char * iio_channel_get_id(const struct iio_channel *chn)
9{
10 return chn->id;
11}
12
13const char * iio_channel_get_name(const struct iio_channel *chn)
14{
15 return chn->name;
16}
17
Paul Cercueil35a01312014-02-20 10:56:57 +010018bool iio_channel_is_output(const struct iio_channel *chn)
Paul Cercueil0b2ce712014-02-17 15:04:18 +010019{
Paul Cercueil35a01312014-02-20 10:56:57 +010020 return chn->is_output;
Paul Cercueil0b2ce712014-02-17 15:04:18 +010021}
22
23unsigned int iio_channel_get_attrs_count(const struct iio_channel *chn)
24{
25 return chn->nb_attrs;
26}
27
28const char * iio_channel_get_attr(const struct iio_channel *chn,
29 unsigned int index)
30{
31 if (index >= chn->nb_attrs)
32 return NULL;
33 else
34 return chn->attrs[index];
35}
36
37ssize_t iio_channel_attr_read(const struct iio_channel *chn,
38 const char *attr, char *dst, size_t len)
39{
Paul Cercueil6a013602014-02-19 12:37:39 +010040 if (chn->dev->ctx->ops->read_channel_attr)
41 return chn->dev->ctx->ops->read_channel_attr(chn,
42 attr, dst, len);
43 else
44 return -ENOSYS;
Paul Cercueil0b2ce712014-02-17 15:04:18 +010045}
46
47ssize_t iio_channel_attr_write(const struct iio_channel *chn,
48 const char *attr, const char *src)
49{
Paul Cercueil6a013602014-02-19 12:37:39 +010050 if (chn->dev->ctx->ops->write_channel_attr)
51 return chn->dev->ctx->ops->write_channel_attr(chn, attr, src);
52 else
53 return -ENOSYS;
Paul Cercueil0b2ce712014-02-17 15:04:18 +010054}
Paul Cercueil00236242014-02-18 15:09:06 +010055
56void free_channel(struct iio_channel *chn)
57{
58 unsigned int i;
59 for (i = 0; i < chn->nb_attrs; i++)
60 free((char *) chn->attrs[i]);
61 if (chn->nb_attrs)
62 free(chn->attrs);
63 if (chn->name)
64 free((char *) chn->name);
65 if (chn->id)
66 free((char *) chn->id);
67 free(chn);
68}