Add files via upload

This commit is contained in:
NawfalMotii79
2026-03-19 01:21:46 +00:00
committed by GitHub
parent b33a9bcd37
commit b17e29e810
92 changed files with 24741 additions and 0 deletions
@@ -0,0 +1,143 @@
/***************************************************************************//**
* @file iio.h
* @brief Header file of iio
* @author Cristian Pop (cristian.pop@analog.com)
* @author Mihail Chindris (mihail.chindris@analog.com)
********************************************************************************
* Copyright 2013(c) Analog Devices, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of Analog Devices, Inc. nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. “AS IS” AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL ANALOG DEVICES, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************/
#ifndef IIO_H_
#define IIO_H_
#include "iio_types.h"
#include "no_os_uart.h"
#if defined(NO_OS_NETWORKING) || defined(NO_OS_LWIP_NETWORKING)
#include "tcp_socket.h"
#endif
enum physical_link_type {
USE_UART,
USE_LOCAL_BACKEND,
USE_NETWORK
};
struct iio_desc;
struct iio_device_init {
char *name;
void *dev;
struct iio_device *dev_descriptor;
/*
* IIO buffer implementation can use a user provided buffer in raw_buf.
* If raw_buf is NULL and iio_device has buffer callback function set,
* it will allocate memory for it when needed.
*/
int8_t *raw_buf;
/* Length of raw_buf */
uint32_t raw_buf_len;
/* If set, trigger will be linked to this device */
char *trigger_id;
};
struct iio_trigger_init {
char *name;
void *trig;
struct iio_trigger *descriptor;
};
/**
* @struct iio_ctx_attr
* @brief Structure holding the context attribute members
*/
struct iio_ctx_attr {
/** Attribute name */
const char *name;
/** Attribute value */
const char *value;
};
/**
* @struct iio_local_backend
* @brief Structure holding the local backend init parameters
*/
struct iio_local_backend {
int(*local_backend_event_read)(void *conn, uint8_t *buf, uint32_t len);
int(*local_backend_event_write)(void *conn, uint8_t *buf, uint32_t len);
char *local_backend_buff;
uint32_t local_backend_buff_len;
};
struct iio_init_param {
enum physical_link_type phy_type;
union {
struct no_os_uart_desc *uart_desc;
#if defined(NO_OS_NETWORKING) || defined(NO_OS_LWIP_NETWORKING)
struct tcp_socket_init_param *tcp_socket_init_param;
#endif
};
struct iio_local_backend *local_backend;
struct iio_ctx_attr *ctx_attrs;
uint32_t nb_ctx_attr;
struct iio_device_init *devs;
uint32_t nb_devs;
struct iio_trigger_init *trigs;
uint32_t nb_trigs;
};
/* Set communication ops and read/write ops. */
int iio_init(struct iio_desc **desc, struct iio_init_param *init_param);
/* Free the resources allocated by iio_init(). */
int iio_remove(struct iio_desc *desc);
/* Execut an iio step. */
int iio_step(struct iio_desc *desc);
/* Signal iio that a trigger has been triggered.
* This will be called in interrupt context. An application callback will be
called in interrupt context if trigger is synchronous with the interrupt
(is_synchronous = true) or will be called from iio_step if trigger is
asynchronous (is_synchronous = false) */
int iio_process_trigger_type(struct iio_desc *desc, char *trigger_name);
int32_t iio_parse_value(char *buf, enum iio_val fmt,
int32_t *val, int32_t *val2);
int iio_format_value(char *buf, uint32_t len, enum iio_val fmt,
int32_t size, int32_t *vals);
/* DMA buffer functions. */
/* Get buffer addr where to write iio_buffer.size bytes */
int iio_buffer_get_block(struct iio_buffer *buffer, void **addr);
/* To be called to mark last iio_buffer_read as done */
int iio_buffer_block_done(struct iio_buffer *buffer);
/* Trigger buffer functions. */
/* Write to buffer iio_buffer.bytes_per_scan bytes from data */
int iio_buffer_push_scan(struct iio_buffer *buffer, void *data);
/* Read from buffer iio_buffer.bytes_per_scan bytes into data */
int iio_buffer_pop_scan(struct iio_buffer *buffer, void *data);
#endif /* IIO_H_ */