1 /* 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 24 struct iio_mutex; 25 struct iiod_client; 26 struct iio_context_pdata; 27 28 struct 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 37 struct iiod_client * iiod_client_new(struct iio_context_pdata *pdata, 38 struct iio_mutex *lock, const struct iiod_client_ops *ops); 39 void iiod_client_destroy(struct iiod_client *client); 40 41 int iiod_client_get_version(struct iiod_client *client, void *desc, 42 unsigned int *major, unsigned int *minor, char *git_tag); 43 int iiod_client_get_trigger(struct iiod_client *client, void *desc, 44 const struct iio_device *dev, 45 const struct iio_device **trigger); 46 int iiod_client_set_trigger(struct iiod_client *client, void *desc, 47 const struct iio_device *dev, const struct iio_device *trigger); 48 int iiod_client_set_kernel_buffers_count(struct iiod_client *client, 49 void *desc, const struct iio_device *dev, unsigned int nb_blocks); 50 int iiod_client_set_timeout(struct iiod_client *client, 51 void *desc, unsigned int timeout); 52 ssize_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); 55 ssize_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); 58 int iiod_client_open_unlocked(struct iiod_client *client, void *desc, 59 const struct iio_device *dev, size_t samples_count, 60 bool cyclic); 61 int iiod_client_close_unlocked(struct iiod_client *client, void *desc, 62 const struct iio_device *dev); 63 ssize_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); 66 ssize_t iiod_client_write_unlocked(struct iiod_client *client, void *desc, 67 const struct iio_device *dev, const void *src, size_t len); 68 struct iio_context * iiod_client_create_context( 69 struct iiod_client *client, void *desc); 70 71 #endif /* _IIOD_CLIENT_H */ 72