no-OS
iio_app.h
Go to the documentation of this file.
1 /***************************************************************************/
40 #ifndef IIO_APP
41 #define IIO_APP
42 
43 #include "iio.h"
44 #include "no_os_irq.h"
45 #include "no_os_uart.h"
46 #include "no_os_error.h"
47 #include "no_os_delay.h"
48 
49 #if defined(NO_OS_LWIP_NETWORKING)
50 #include "lwip_socket.h"
51 #endif
52 
53 #define IIO_APP_DEVICE(_name, _dev, _dev_descriptor, _read_buff, _write_buff, _default_trigger_id) {\
54  .name = _name,\
55  .dev = _dev,\
56  .dev_descriptor = _dev_descriptor,\
57  .read_buff = _read_buff,\
58  .write_buff = _write_buff,\
59  .default_trigger_id = _default_trigger_id\
60 }
61 
62 #define IIO_APP_TRIGGER(_name, _trig, _trig_descriptor) {\
63  .name = _name,\
64  .trig = _trig,\
65  .descriptor = _trig_descriptor,\
66 }
67 
69  uint32_t size;
70  void *buff;
71 };
72 
74  char *name;
75  void *dev;
80 };
81 
86 struct iio_app_desc {
90  void *irq_desc;
92  struct iio_desc *iio_desc;
94  int (*post_step_callback)(void *arg);
96  void *arg;
97 
98 #ifdef NO_OS_LWIP_NETWORKING
99  struct lwip_network_desc *lwip_desc;
100 #endif
101 };
102 
111  uint32_t nb_ctx_attr;
115  uint32_t nb_devices;
119  int32_t nb_trigs;
123  void *irq_desc;
125  int (*post_step_callback)(void *arg);
127  void *arg;
128 
129 #ifdef NO_OS_LWIP_NETWORKING
130  struct lwip_network_param lwip_param;
131 #endif
132 };
133 
135 int iio_app_init(struct iio_app_desc **app,
136  struct iio_app_init_param app_init_param);
137 
139 int iio_app_run(struct iio_app_desc *app);
140 
142 int iio_app_remove(struct iio_app_desc *app);
143 
144 #endif
iio_app_init_param::nb_ctx_attr
uint32_t nb_ctx_attr
Definition: iio_app.h:111
iio_app_init_param
IIO application descriptor initialization parameters.
Definition: iio_app.h:107
no_os_alloc.h
no_os_uart_init_param::parity
enum no_os_uart_parity parity
Definition: no_os_uart.h:128
iio_remove
int iio_remove(struct iio_desc *desc)
Free the resources allocated by "iio_init()".
Definition: iio.c:2007
iio_app_desc::arg
void * arg
Definition: iio_app.h:96
aducm3029_uart.h
Header file of UART driver for ADuCM302x.
iio_app_init_param::uart_init_params
struct no_os_uart_init_param uart_init_params
Definition: iio_app.h:121
no_os_uart_write
int32_t no_os_uart_write(struct no_os_uart_desc *desc, const uint8_t *data, uint32_t bytes_number)
Write to UART.
Definition: no_os_uart.c:150
no_os_uart_init_param::extra
void * extra
Definition: no_os_uart.h:133
iio_init_param::nb_trigs
uint32_t nb_trigs
Definition: iio.h:124
iio_data_buffer::size
uint32_t size
Definition: iio_app.h:69
iio_app_desc::iio_desc
struct iio_desc * iio_desc
Definition: iio_app.h:92
iio_app_desc::post_step_callback
int(* post_step_callback)(void *arg)
Definition: iio_app.h:94
NO_OS_UART_STOP_1_BIT
@ NO_OS_UART_STOP_1_BIT
Definition: no_os_uart.h:100
no_os_irq.h
Header file of IRQ interface.
no_os_uart_init_param::size
enum no_os_uart_size size
Definition: no_os_uart.h:126
iio_desc
Definition: iio.c:209
INTC_DEVICE_ID
#define INTC_DEVICE_ID
Definition: parameters.h:91
iio_app.h
Header file of iio_app.
iio_trigger_init
Definition: iio.h:82
xilinx_uart.h
NO_OS_EOVERRUN
#define NO_OS_EOVERRUN
Definition: no_os_error.h:53
iio_app_desc
IIO application descriptor.
Definition: iio_app.h:86
iio_data_buffer::buff
void * buff
Definition: iio_app.h:70
no_os_delay.h
Header file of Delay functions.
iio_app_device::name
char * name
Definition: iio_app.h:74
iio_init_param
Definition: iio.h:110
iio_init_param::phy_type
enum physical_link_type phy_type
Definition: iio.h:111
no_os_uart_init_param::irq_id
uint32_t irq_id
Definition: no_os_uart.h:120
iio_app_device::default_trigger_id
char * default_trigger_id
Definition: iio_app.h:79
no_os_calloc
void * no_os_calloc(size_t nitems, size_t size)
Allocate memory and return a pointer to it, set memory to 0.
Definition: chibios_alloc.c:60
WIFI_PWD
#define WIFI_PWD
Definition: parameters.h:107
iio_app_desc::uart_desc
struct no_os_uart_desc * uart_desc
Definition: iio_app.h:88
no_os_uart_remove
int32_t no_os_uart_remove(struct no_os_uart_desc *desc)
Free the resources allocated by no_os_uart_init().
Definition: no_os_uart.c:87
iio_init
int iio_init(struct iio_desc **desc, struct iio_init_param *init_param)
Set communication ops and read/write ops.
Definition: iio.c:1868
iio_device_init::trigger_id
char * trigger_id
Definition: iio.h:79
iio_init_param::ctx_attrs
struct iio_ctx_attr * ctx_attrs
Definition: iio.h:119
no_os_mdelay
void no_os_mdelay(uint32_t msecs)
Wait until msecs milliseconds passed.
Definition: aducm3029_delay.c:132
iio_app_device::read_buff
struct iio_data_buffer * read_buff
Definition: iio_app.h:77
iio_init_param::uart_desc
struct no_os_uart_desc * uart_desc
Definition: iio.h:113
no_os_uart_desc
Stucture holding the UART descriptor.
Definition: no_os_uart.h:140
iio.h
Header file of iio.
no_os_error.h
Error codes definition.
USE_NETWORK
@ USE_NETWORK
Definition: iio.h:61
no_os_irq_global_enable
int32_t no_os_irq_global_enable(struct no_os_irq_ctrl_desc *desc)
Enable global interrupts.
Definition: no_os_irq.c:135
stm32_uart.h
Header file of UART driver for STM32.
iio_app_device
Definition: iio_app.h:73
iio_app_init_param::post_step_callback
int(* post_step_callback)(void *arg)
Definition: iio_app.h:125
aducm_irq_ops
const struct no_os_irq_platform_ops aducm_irq_ops
Aducm3029 platform specific IRQ platform ops structure.
Definition: aducm3029_irq.c:557
stm32_irq.h
Header file for stm32 irq specifics.
uart_desc
struct no_os_uart_desc * uart_desc
Definition: main.c:52
max_irq_ops
const struct no_os_irq_platform_ops max_irq_ops
maxim specific IRQ platform ops structure
Definition: maxim_irq.c:662
iio_app_device::write_buff
struct iio_data_buffer * write_buff
Definition: iio_app.h:78
iio_device_init::name
char * name
Definition: iio.h:67
iio_data_buffer
Definition: iio_app.h:68
no_os_irq_init_param::irq_ctrl_id
uint32_t irq_ctrl_id
Definition: no_os_irq.h:115
UART_IRQ_ID
#define UART_IRQ_ID
Definition: parameters.h:56
aducm3029_irq.h
Header file of IRQ driver for ADuCM302x.
iio_app_desc::irq_desc
void * irq_desc
Definition: iio_app.h:90
stm32_irq_ops
const struct no_os_irq_platform_ops stm32_irq_ops
stm32 specific IRQ platform ops structure
Definition: stm32_irq.c:588
no_os_irq_ctrl_init
int32_t no_os_irq_ctrl_init(struct no_os_irq_ctrl_desc **desc, const struct no_os_irq_init_param *param)
Initialize the IRQ interrupts.
Definition: no_os_irq.c:51
iio_app_init_param::arg
void * arg
Definition: iio_app.h:127
iio_init_param::devs
struct iio_device_init * devs
Definition: iio.h:121
iio_init_param::nb_ctx_attr
uint32_t nb_ctx_attr
Definition: iio.h:120
xilinx_irq.h
iio_app_run
int iio_app_run(struct iio_app_desc *app)
no_os_uart_init_param::baud_rate
uint32_t baud_rate
Definition: no_os_uart.h:124
no_os_uart_init_param::stop
enum no_os_uart_stop stop
Definition: no_os_uart.h:130
irq_desc
Structure for Interrupt Request descriptor.
iio_app_init
int iio_app_init(struct iio_app_desc **app, struct iio_app_init_param app_init_param)
iio_app_init_param::trigs
struct iio_trigger_init * trigs
Definition: iio_app.h:117
iio_init_param::trigs
struct iio_trigger_init * trigs
Definition: iio.h:123
iio_init_param::nb_devs
uint32_t nb_devs
Definition: iio.h:122
no_os_free
void no_os_free(void *ptr)
Deallocate memory previously allocated by a call to no_os_calloc or no_os_malloc.
Definition: chibios_alloc.c:75
iio_app_init_param::nb_trigs
int32_t nb_trigs
Definition: iio_app.h:119
iio_app_remove
int iio_app_remove(struct iio_app_desc *app)
iio_device_init::dev_descriptor
struct iio_device * dev_descriptor
Definition: iio.h:69
no_os_uart_init_param::platform_ops
const struct no_os_uart_platform_ops * platform_ops
Definition: no_os_uart.h:131
iio_app_init_param::ctx_attrs
struct iio_ctx_attr * ctx_attrs
Definition: iio_app.h:109
no_os_uart_init
int32_t no_os_uart_init(struct no_os_uart_desc **desc, struct no_os_uart_init_param *param)
Initialize the UART communication peripheral.
Definition: no_os_uart.c:58
iio_device_init::dev
void * dev
Definition: iio.h:68
iio_device::irq_desc
struct no_os_irq_ctrl_desc * irq_desc
Definition: iio_types.h:255
NULL
#define NULL
Definition: wrapper.h:64
no_os_uart_init_param
Structure holding the parameters for UART initialization.
Definition: no_os_uart.h:116
iio_app_device::dev
void * dev
Definition: iio_app.h:75
iio_device
Structure holding channels and attributes of a device.
Definition: iio_types.h:252
iio_device_init::raw_buf_len
uint32_t raw_buf_len
Definition: iio.h:77
no_os_irq_init_param
Structure holding the initial parameters for Interrupt Request.
Definition: no_os_irq.h:113
NO_OS_UART_PAR_NO
@ NO_OS_UART_PAR_NO
Definition: no_os_uart.h:83
no_os_irq_ctrl_remove
int32_t no_os_irq_ctrl_remove(struct no_os_irq_ctrl_desc *desc)
Free the resources allocated by no_os_irq_ctrl_init().
Definition: no_os_irq.c:77
no_os_uart_init_param::device_id
uint8_t device_id
Definition: no_os_uart.h:118
iio_app_device::dev_descriptor
struct iio_device * dev_descriptor
Definition: iio_app.h:76
no_os_irq_platform_ops
Structure holding IRQ function pointers that point to the platform specific function.
Definition: no_os_irq.h:166
iio_ctx_attr
Structure holding the context attribute members.
Definition: iio.h:92
no_os_uart.h
Header file of UART interface.
iio_app_init_param::irq_desc
void * irq_desc
Definition: iio_app.h:123
iio_device_init
Definition: iio.h:66
WIFI_SSID
#define WIFI_SSID
Definition: parameters.h:106
iio_device_init::raw_buf
int8_t * raw_buf
Definition: iio.h:75
no_os_irq_ctrl_desc
Definition: no_os_irq.h:129
NO_OS_UART_CS_8
@ NO_OS_UART_CS_8
Definition: no_os_uart.h:72
iio_app_init_param::devices
struct iio_app_device * devices
Definition: iio_app.h:113
iio_step
int iio_step(struct iio_desc *desc)
Execute an iio step.
Definition: iio.c:1488
errno.h
Error macro definition for ARM Compiler.
iio_app_init_param::nb_devices
uint32_t nb_devices
Definition: iio_app.h:115
USE_UART
@ USE_UART
Definition: iio.h:59