libiio
iiod-client.h
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 /*
3  * libiio - Library for interfacing industrial I/O (IIO) devices
4  *
5  * Copyright (C) 2015 Analog Devices, Inc.
6  * Author: Paul Cercueil <paul.cercueil@analog.com>
7  */
8 
9 #ifndef _IIOD_CLIENT_H
10 #define _IIOD_CLIENT_H
11 
12 #include <iio/iio-backend.h>
13 
14 #define __api __iio_api
15 
16 struct iiod_client;
17 struct iiod_client_io;
18 struct iiod_client_pdata;
19 
21  ssize_t (*write)(struct iiod_client_pdata *desc,
22  const char *src, size_t len, unsigned int timeout_ms);
23  ssize_t (*read)(struct iiod_client_pdata *desc,
24  char *dst, size_t len, unsigned int timeout_ms);
25  ssize_t (*read_line)(struct iiod_client_pdata *desc,
26  char *dst, size_t len, unsigned int timeout_ms);
27  void (*cancel)(struct iiod_client_pdata *desc);
28 };
29 
30 __api void iiod_client_mutex_lock(struct iiod_client *client);
31 __api void iiod_client_mutex_unlock(struct iiod_client *client);
32 
33 __api struct iiod_client *
34 iiod_client_new(const struct iio_context_params *params,
35  struct iiod_client_pdata *desc,
36  const struct iiod_client_ops *ops);
37 
38 __api void iiod_client_destroy(struct iiod_client *client);
39 
40 __api bool iiod_client_uses_binary_interface(const struct iiod_client *client);
41 
42 __api int iiod_client_get_trigger(struct iiod_client *client,
43  const struct iio_device *dev,
44  const struct iio_device **trigger);
45 
46 __api int iiod_client_set_trigger(struct iiod_client *client,
47  const struct iio_device *dev,
48  const struct iio_device *trigger);
49 
50 __api int iiod_client_set_kernel_buffers_count(struct iiod_client *client,
51  const struct iio_device *dev,
52  unsigned int nb_blocks);
53 
54 __api int iiod_client_set_timeout(struct iiod_client *client,
55  unsigned int timeout);
56 
57 __api ssize_t iiod_client_read_attr(struct iiod_client *client,
58  const struct iio_device *dev,
59  const struct iio_channel *chn,
60  const char *attr, char *dest, size_t len,
61  enum iio_attr_type type,
62  unsigned int buf_id);
63 
64 __api ssize_t iiod_client_write_attr(struct iiod_client *client,
65  const struct iio_device *dev,
66  const struct iio_channel *chn,
67  const char *attr, const char *src,
68  size_t len, enum iio_attr_type type,
69  unsigned int buf_id);
70 
71 __api struct iio_context *
72 iiod_client_create_context(struct iiod_client *client,
73  const struct iio_backend *backend,
74  const char *description,
75  const char **ctx_attrs,
76  const char **ctx_values,
77  unsigned int nb_ctx_attrs);
78 
79 __api struct iiod_client_buffer_pdata *
80 iiod_client_create_buffer(struct iiod_client *client,
81  const struct iio_device *dev, unsigned int idx,
82  struct iio_channels_mask *mask);
83 __api void iiod_client_free_buffer(struct iiod_client_buffer_pdata *pdata);
84 __api int iiod_client_enable_buffer(struct iiod_client_buffer_pdata *pdata,
85  size_t nb_samples, bool enable);
86 
87 __api struct iio_block_pdata *
88 iiod_client_create_block(struct iiod_client_buffer_pdata *pdata,
89  size_t size, void **data);
90 __api void iiod_client_free_block(struct iio_block_pdata *block);
91 
92 __api int iiod_client_enqueue_block(struct iio_block_pdata *block,
93  size_t bytes_used, bool cyclic);
94 
95 __api int iiod_client_dequeue_block(struct iio_block_pdata *block,
96  bool nonblock);
97 
98 __api ssize_t iiod_client_readbuf(struct iiod_client_buffer_pdata *pdata,
99  void *dst, size_t len);
100 __api ssize_t iiod_client_writebuf(struct iiod_client_buffer_pdata *pdata,
101  const void *src, size_t len);
102 
103 #undef __api
104 
105 #endif /* _IIOD_CLIENT_H */
Definition: iio-backend.h:127
Definition: network.h:19
Definition: iiod-client.h:20
Represents an input or output channel of a device.
Definition: iio-private.h:106
Represents a device in the IIO context.
Definition: iio-private.h:130
Definition: iiod-client.c:46
Definition: local-mmap.c:45
Definition: iiod-client.c:35
Definition: iio-private.h:169
IIO context creation information.
Definition: iio.h:126
Definition: iiod-client.c:58
Contains the representation of an IIO context.
Definition: iio-private.h:81
Definition: iiod-client.c:26