blob: dcf2482b4c73a2a552e6408e268b8d66f97878bf [file] [log] [blame]
Enrico Granata19d88802019-04-29 16:28:35 -07001/*
2 * libiio - Library for interfacing industrial I/O (IIO) devices
3 *
4 * Copyright (C) 2015 Analog Devices, Inc.
5 * Author: Paul Cercueil <paul.cercueil@analog.com>
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 */
18
19#ifndef _IIOD_CLIENT_H
20#define _IIOD_CLIENT_H
21
22#include "iio-private.h"
23
24struct iio_mutex;
25struct iiod_client;
26struct iio_context_pdata;
27
28struct iiod_client_ops {
29 ssize_t (*write)(struct iio_context_pdata *pdata,
30 void *desc, const char *src, size_t len);
31 ssize_t (*read)(struct iio_context_pdata *pdata,
32 void *desc, char *dst, size_t len);
33 ssize_t (*read_line)(struct iio_context_pdata *pdata,
34 void *desc, char *dst, size_t len);
35};
36
37struct iiod_client * iiod_client_new(struct iio_context_pdata *pdata,
38 struct iio_mutex *lock, const struct iiod_client_ops *ops);
39void iiod_client_destroy(struct iiod_client *client);
40
41int iiod_client_get_version(struct iiod_client *client, void *desc,
42 unsigned int *major, unsigned int *minor, char *git_tag);
43int iiod_client_get_trigger(struct iiod_client *client, void *desc,
44 const struct iio_device *dev,
45 const struct iio_device **trigger);
46int iiod_client_set_trigger(struct iiod_client *client, void *desc,
47 const struct iio_device *dev, const struct iio_device *trigger);
48int iiod_client_set_kernel_buffers_count(struct iiod_client *client,
49 void *desc, const struct iio_device *dev, unsigned int nb_blocks);
50int iiod_client_set_timeout(struct iiod_client *client,
51 void *desc, unsigned int timeout);
52ssize_t iiod_client_read_attr(struct iiod_client *client, void *desc,
53 const struct iio_device *dev, const struct iio_channel *chn,
54 const char *attr, char *dest, size_t len, enum iio_attr_type type);
55ssize_t iiod_client_write_attr(struct iiod_client *client, void *desc,
56 const struct iio_device *dev, const struct iio_channel *chn,
57 const char *attr, const char *src, size_t len, enum iio_attr_type type);
58int iiod_client_open_unlocked(struct iiod_client *client, void *desc,
59 const struct iio_device *dev, size_t samples_count,
60 bool cyclic);
61int iiod_client_close_unlocked(struct iiod_client *client, void *desc,
62 const struct iio_device *dev);
63ssize_t iiod_client_read_unlocked(struct iiod_client *client, void *desc,
64 const struct iio_device *dev, void *dst, size_t len,
65 uint32_t *mask, size_t words);
66ssize_t iiod_client_write_unlocked(struct iiod_client *client, void *desc,
67 const struct iio_device *dev, const void *src, size_t len);
68struct iio_context * iiod_client_create_context(
69 struct iiod_client *client, void *desc);
70
71#endif /* _IIOD_CLIENT_H */