Files
PLFM_RADAR/14_RADAR_Old_version/Firmware/Microcontroller/iio_app.h
T
2026-03-19 01:21:46 +00:00

139 lines
4.3 KiB
C

/***************************************************************************//**
* @file iio_app.h
* @brief Header file of iio_app
* @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_APP
#define IIO_APP
#include "iio.h"
#include "no_os_irq.h"
#include "no_os_uart.h"
#include "no_os_error.h"
#include "no_os_delay.h"
#if defined(NO_OS_LWIP_NETWORKING)
#include "lwip_socket.h"
#endif
#define IIO_APP_DEVICE(_name, _dev, _dev_descriptor, _read_buff, _write_buff, _default_trigger_id) {\
.name = _name,\
.dev = _dev,\
.dev_descriptor = _dev_descriptor,\
.read_buff = _read_buff,\
.write_buff = _write_buff,\
.default_trigger_id = _default_trigger_id\
}
#define IIO_APP_TRIGGER(_name, _trig, _trig_descriptor) {\
.name = _name,\
.trig = _trig,\
.descriptor = _trig_descriptor,\
}
struct iio_data_buffer {
uint32_t size;
void *buff;
};
struct iio_app_device {
char *name;
void *dev;
struct iio_device *dev_descriptor;
struct iio_data_buffer *read_buff;
struct iio_data_buffer *write_buff;
char *default_trigger_id;
};
/**
* @struct iio_app_desc
* @brief IIO application descriptor.
*/
struct iio_app_desc {
/** UART descriptor to be used */
struct no_os_uart_desc *uart_desc;
/** IRQ descriptor to be used */
void *irq_desc;
/** IIO descriptor to be returned */
struct iio_desc *iio_desc;
/** Function to be called each step */
int (*post_step_callback)(void *arg);
/** Function parameteres */
void *arg;
#ifdef NO_OS_LWIP_NETWORKING
struct lwip_network_desc *lwip_desc;
#endif
};
/**
* @struct iio_app_init_param
* @brief IIO application descriptor initialization parameters.
*/
struct iio_app_init_param {
/** Array of context attribute name/value pairs */
struct iio_ctx_attr *ctx_attrs;
/** Number of context attributes in the array above */
uint32_t nb_ctx_attr;
/** Array of IIO devices */
struct iio_app_device *devices;
/** Number of devices */
uint32_t nb_devices;
/** IIO triggers to be used */
struct iio_trigger_init *trigs;
/** Number of triggers to be used */
int32_t nb_trigs;
/** UART init params */
struct no_os_uart_init_param uart_init_params;
/** IRQ descriptor to be used */
void *irq_desc;
/** Function to be called each step */
int (*post_step_callback)(void *arg);
/** Function parameteres */
void *arg;
#ifdef NO_OS_LWIP_NETWORKING
struct lwip_network_param lwip_param;
#endif
};
/** Register devices for an IIO application */
int iio_app_init(struct iio_app_desc **app,
struct iio_app_init_param app_init_param);
/** Start an IIO application */
int iio_app_run(struct iio_app_desc *app);
/** Remove resources allocated by the IIO application */
int iio_app_remove(struct iio_app_desc *app);
#endif