no-OS
Classes | Macros | Functions
iio.c File Reference

Implementation of iio. More...

#include "iio.h"
#include "iio_types.h"
#include "iiod.h"
#include "ctype.h"
#include "no_os_util.h"
#include "no_os_list.h"
#include "no_os_error.h"
#include "no_os_uart.h"
#include "no_os_alloc.h"
#include "no_os_circular_buffer.h"
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
Include dependency graph for iio.c:

Classes

struct  attr_fun_params
 
struct  iio_buffer_priv
 
struct  iio_dev_priv
 Links a physical device instance "void *dev_instance" with a "iio_device *iio" that describes capabilities of the device. More...
 
struct  iio_trig_priv
 Links a physical trigger instance "void *instance" with a "iio_trigger *descriptor" that describes capabilities of the trigger. More...
 
struct  iio_desc
 

Macros

#define IIOD_PORT   30431
 
#define MAX_SOCKET_TO_HANDLE   10
 
#define REG_ACCESS_ATTRIBUTE   "direct_reg_access"
 
#define IIOD_CONN_BUFFER_SIZE   0x1000
 
#define NO_TRIGGER   (uint32_t)-1
 
#define NO_OS_STRINGIFY(x)   #x
 
#define NO_OS_TOSTRING(x)   NO_OS_STRINGIFY(x)
 

Functions

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)
 
int iio_process_trigger_type (struct iio_desc *desc, char *trigger_name)
 Searches for trigger name and processes the trigger based on its type (sync or async with the interrupt). More...
 
int iio_buffer_get_block (struct iio_buffer *buffer, void **addr)
 
int iio_buffer_block_done (struct iio_buffer *buffer)
 
int iio_buffer_push_scan (struct iio_buffer *buffer, void *data)
 
int iio_buffer_pop_scan (struct iio_buffer *buffer, void *data)
 
int iio_step (struct iio_desc *desc)
 Execute an iio step. More...
 
int iio_init (struct iio_desc **desc, struct iio_init_param *init_param)
 Set communication ops and read/write ops. More...
 
int iio_remove (struct iio_desc *desc)
 Free the resources allocated by "iio_init()". More...
 

Detailed Description

Implementation of iio.

Author
Cristian Pop (crist.nosp@m.ian..nosp@m.pop@a.nosp@m.nalo.nosp@m.g.com)
Mihail Chindris (mihai.nosp@m.l.ch.nosp@m.indri.nosp@m.s@an.nosp@m.alog..nosp@m.com)

Copyright 2019(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.

Macro Definition Documentation

◆ IIOD_CONN_BUFFER_SIZE

#define IIOD_CONN_BUFFER_SIZE   0x1000

◆ IIOD_PORT

#define IIOD_PORT   30431

◆ MAX_SOCKET_TO_HANDLE

#define MAX_SOCKET_TO_HANDLE   10

◆ NO_OS_STRINGIFY

#define NO_OS_STRINGIFY (   x)    #x

◆ NO_OS_TOSTRING

#define NO_OS_TOSTRING (   x)    NO_OS_STRINGIFY(x)

◆ NO_TRIGGER

#define NO_TRIGGER   (uint32_t)-1

◆ REG_ACCESS_ATTRIBUTE

#define REG_ACCESS_ATTRIBUTE   "direct_reg_access"

Function Documentation

◆ iio_buffer_block_done()

int iio_buffer_block_done ( struct iio_buffer buffer)

◆ iio_buffer_get_block()

int iio_buffer_get_block ( struct iio_buffer buffer,
void **  addr 
)

◆ iio_buffer_pop_scan()

int iio_buffer_pop_scan ( struct iio_buffer buffer,
void *  data 
)
Here is the caller graph for this function:

◆ iio_buffer_push_scan()

int iio_buffer_push_scan ( struct iio_buffer buffer,
void *  data 
)
Here is the caller graph for this function:

◆ iio_format_value()

int iio_format_value ( char *  buf,
uint32_t  len,
enum iio_val  fmt,
int32_t  size,
int32_t *  vals 
)
Here is the caller graph for this function:

◆ iio_init()

int iio_init ( struct iio_desc **  desc,
struct iio_init_param init_param 
)

Set communication ops and read/write ops.

Parameters
desc- iio descriptor.
init_param- appropriate init param.
Returns
0 in case of success or negative value otherwise.

◆ iio_parse_value()

int32_t iio_parse_value ( char *  buf,
enum iio_val  fmt,
int32_t *  val,
int32_t *  val2 
)
Here is the caller graph for this function:

◆ iio_process_trigger_type()

int iio_process_trigger_type ( struct iio_desc desc,
char *  trigger_name 
)

Searches for trigger name and processes the trigger based on its type (sync or async with the interrupt).

Parameters
desc- IIO descriptor.
trigger_name- Trigger name.
Returns
ret - Result of the processing procedure.
Here is the caller graph for this function:

◆ iio_remove()

int iio_remove ( struct iio_desc desc)

Free the resources allocated by "iio_init()".

Parameters
desciio descriptor.
Returns
0 in case of success or negative value otherwise.
Here is the caller graph for this function:

◆ iio_step()

int iio_step ( struct iio_desc desc)

Execute an iio step.

Parameters
desc- IIo descriptor
Returns
0 in case of success or negative value otherwise.