From e7e58509f0edc3451845a3d18f4eaebd8aa4f69e Mon Sep 17 00:00:00 2001 From: "Lay, Kuan Loon" Date: Thu, 5 Nov 2015 09:49:54 +0800 Subject: [PATCH] iio: iio add create trigger Signed-off-by: Lay, Kuan Loon Signed-off-by: Brendan Le Foll --- api/mraa/iio.h | 1 + src/iio/iio.c | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/api/mraa/iio.h b/api/mraa/iio.h index 12c739e..2b84fc2 100644 --- a/api/mraa/iio.h +++ b/api/mraa/iio.h @@ -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 * diff --git a/src/iio/iio.c b/src/iio/iio.c index 299d2f6..16e4915 100644 --- a/src/iio/iio.c +++ b/src/iio/iio.c @@ -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 -- 2.7.4