iio: iio add create trigger
authorLay, Kuan Loon <kuan.loon.lay@intel.com>
Thu, 5 Nov 2015 01:49:54 +0000 (09:49 +0800)
committerBrendan Le Foll <brendan.le.foll@intel.com>
Tue, 15 Dec 2015 10:42:06 +0000 (10:42 +0000)
Signed-off-by: Lay, Kuan Loon <kuan.loon.lay@intel.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
api/mraa/iio.h
src/iio/iio.c

index 12c739e..2b84fc2 100644 (file)
@@ -123,6 +123,7 @@ mraa_result_t mraa_iio_event_extract_event(struct iio_event_data* event,
 
 mraa_result_t mraa_iio_get_mounting_matrix(mraa_iio_context dev, float mm[9]);
 
+mraa_result_t mraa_iio_create_trigger(mraa_iio_context dev, const char* trigger);
 /**
  * De-inits an mraa_iio_context device
  *
index 299d2f6..16e4915 100644 (file)
@@ -36,6 +36,7 @@
 #define IIO_SLASH_DEV "/dev/" IIO_DEVICE
 #define IIO_SYSFS_DEVICE "/sys/bus/iio/devices/" IIO_DEVICE
 #define IIO_EVENTS "events"
+#define IIO_CONFIGFS_TRIGGER "/sys/kernel/config/iio/triggers/"
 
 mraa_iio_context
 mraa_iio_init(int device)
@@ -536,6 +537,28 @@ mraa_iio_get_mounting_matrix(mraa_iio_context dev, float mm[9])
     return MRAA_ERROR_UNSPECIFIED;
 }
 
+mraa_result_t
+mraa_iio_create_trigger(mraa_iio_context dev, const char* trigger)
+{
+    struct stat configfs_status;
+    struct stat trigger_status;
+    char buf[MAX_SIZE];
+
+    if (stat(IIO_CONFIGFS_TRIGGER, &configfs_status) == 0) {
+        memset(buf, 0, MAX_SIZE);
+        snprintf(buf, MAX_SIZE, IIO_CONFIGFS_TRIGGER "%s", trigger);
+        if (stat(buf, &trigger_status) != 0) {
+            if (mkdir(buf, configfs_status.st_mode) == 0)
+                return MRAA_SUCCESS;
+        } else {
+            // trigger folder already created
+            return MRAA_SUCCESS;
+        }
+    }
+
+    return MRAA_ERROR_UNSPECIFIED;
+}
+
 #if 0
 // does stop make any sense on iio devices?
 mraa_result_t