My Project
Loading...
Searching...
No Matches
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
16struct iiod_client;
17struct iiod_client_io;
18struct iiod_client_pdata;
19struct iio_event_stream_pdata;
20
22 ssize_t (*write)(struct iiod_client_pdata *desc, const char *src, size_t len,
23 int timeout_ms);
24 ssize_t (*read)(struct iiod_client_pdata *desc, char *dst, size_t len, int timeout_ms);
25 ssize_t (*read_line)(struct iiod_client_pdata *desc, char *dst, size_t len, int timeout_ms);
26 void (*cancel)(struct iiod_client_pdata *desc);
27};
28
29__api void iiod_client_mutex_lock(struct iiod_client *client);
30__api void iiod_client_mutex_unlock(struct iiod_client *client);
31
32__api struct iiod_client *iiod_client_new(const struct iio_context_params *params,
33 struct iiod_client_pdata *desc, const struct iiod_client_ops *ops);
34
35__api void iiod_client_destroy(struct iiod_client *client);
36
37__api bool iiod_client_uses_binary_interface(const struct iiod_client *client);
38
39__api const struct iio_device *iiod_client_get_trigger(
40 struct iiod_client *client, const struct iio_device *dev);
41
42__api int iiod_client_set_trigger(struct iiod_client *client, const struct iio_device *dev,
43 const struct iio_device *trigger);
44
45__api int iiod_client_set_timeout(struct iiod_client *client, int timeout);
46
47__api ssize_t iiod_client_attr_read(
48 struct iiod_client *client, const struct iio_attr *attr, char *dest, size_t len);
49
50__api ssize_t iiod_client_attr_write(struct iiod_client *client, const struct iio_attr *attr,
51 const char *src, size_t len);
52
53__api struct iio_context *iiod_client_create_context(struct iiod_client *client,
54 const struct iio_backend *backend, const char *description, const char **ctx_attrs,
55 const char **ctx_values, unsigned int nb_ctx_attrs);
56
57__api struct iiod_client_buffer_pdata *iiod_client_open_buffer(struct iiod_client *client,
58 struct iiod_client *client_fb, const struct iio_device *dev, unsigned int idx,
59 struct iio_channels_mask *mask);
60__api void iiod_client_close_buffer(struct iiod_client_buffer_pdata *pdata);
61__api int iiod_client_enable_buffer(struct iiod_client_buffer_pdata *pdata, size_t nb_samples,
62 bool enable, bool cyclic);
63
64__api struct iio_block_pdata *iiod_client_create_block(
65 struct iiod_client_buffer_pdata *pdata, size_t size, void **data);
66__api void iiod_client_free_block(struct iio_block_pdata *block);
67
68__api int iiod_client_enqueue_block(struct iio_block_pdata *block, size_t bytes_used, bool cyclic);
69
70__api int iiod_client_dequeue_block(struct iio_block_pdata *block, bool nonblock);
71
72__api ssize_t iiod_client_readbuf(struct iiod_client_buffer_pdata *pdata, void *dst, size_t len);
73__api ssize_t iiod_client_writebuf(
74 struct iiod_client_buffer_pdata *pdata, const void *src, size_t len);
75
76__api struct iio_event_stream_pdata *iiod_client_open_event_stream(
77 struct iiod_client *client, const struct iio_device *dev);
78__api void iiod_client_close_event_stream(struct iio_event_stream_pdata *pdata);
79__api int iiod_client_read_event(
80 struct iio_event_stream_pdata *pdata, struct iio_event *out_event, bool nonblock);
81
82__api int iiod_client_reg_read(struct iiod_client *client, const struct iio_device *dev,
83 uint32_t address, uint32_t *value);
84__api int iiod_client_reg_write(struct iiod_client *client, const struct iio_device *dev,
85 uint32_t address, uint32_t value);
86
87__api int iiod_client_refresh_format(struct iiod_client *client, const struct iio_device *dev,
88 const struct iio_channel *chn, char *format_str, size_t len);
89
90__api __check_ret int iiod_client_nop(struct iiod_client *client);
91
92#undef __api
93
94#endif /* _IIOD_CLIENT_H */
Structure holding meta-data for an attribute.
Definition iio-backend.h:88
Definition iio-backend.h:156
Represents an input or output channel of a device.
IIO context creation information.
Definition iio.h:173
Contains the representation of an IIO context.
Represents a device in the IIO context.
Represents a IIO event.
Definition iio.h:1437
Definition iiod-client.h:21