iio: added function returning IIO device number by name
authorAlex Tereschenko <alext.mkrs@gmail.com>
Sat, 10 Oct 2015 16:34:21 +0000 (18:34 +0200)
committerBrendan Le Foll <brendan.le.foll@intel.com>
Tue, 15 Dec 2015 10:42:06 +0000 (10:42 +0000)
Closes #309.

Signed-off-by: Alex Tereschenko <alext.mkrs@gmail.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
api/mraa/iio.h
src/iio/iio.c

index d00ac7c..286a00f 100644 (file)
@@ -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);
index 8093b89..366c4ed 100644 (file)
@@ -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)
 {