139 lines
4.3 KiB
C
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
|