From 325ac461d6066b608704ce2db4fe1ea4a18b035f Mon Sep 17 00:00:00 2001 From: Alex Tereschenko Date: Sat, 10 Oct 2015 18:34:21 +0200 Subject: [PATCH] iio: added function returning IIO device number by name Closes #309. Signed-off-by: Alex Tereschenko Signed-off-by: Brendan Le Foll --- api/mraa/iio.h | 2 ++ src/iio/iio.c | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/api/mraa/iio.h b/api/mraa/iio.h index d00ac7c..286a00f 100644 --- a/api/mraa/iio.h +++ b/api/mraa/iio.h @@ -77,6 +77,8 @@ mraa_result_t mraa_iio_trigger_buffer(mraa_iio_context dev, void (*fptr)(char* d const char* mraa_iio_get_device_name(mraa_iio_context dev); +int mraa_iio_get_device_num_by_name(const char* name); + int mraa_iio_read_size(mraa_iio_context dev); mraa_iio_channel* mraa_iio_get_channels(mraa_iio_context dev); diff --git a/src/iio/iio.c b/src/iio/iio.c index 8093b89..366c4ed 100644 --- a/src/iio/iio.c +++ b/src/iio/iio.c @@ -163,6 +163,33 @@ mraa_iio_get_device_name(mraa_iio_context dev) return dev->name; } +int +mraa_iio_get_device_num_by_name(const char* name) +{ + int i; + + if (plat_iio == NULL) { + syslog(LOG_ERR, "iio: platform IIO structure is not initialized"); + return -1; + } + + if (name == NULL) { + syslog(LOG_ERR, "iio: device name is NULL, unable to find its number"); + return -1; + } + + for (i = 0; i < plat_iio->iio_device_count; i++) { + struct _iio* device; + device = &plat_iio->iio_devices[i]; + // we want to check for exact match + if (strncmp(device->name, name, strlen(device->name)+1) == 0) { + return device->num; + } + } + + return -1; +} + mraa_result_t mraa_iio_read(mraa_iio_context dev, const char* attr_chan, float* data) { -- 2.7.4