iio: iio add get mounting matrix
authorLay, Kuan Loon <kuan.loon.lay@intel.com>
Wed, 4 Nov 2015 10:33:14 +0000 (18:33 +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 4f8aa73..12c739e 100644 (file)
@@ -120,6 +120,9 @@ mraa_result_t mraa_iio_event_extract_event(struct iio_event_data* event,
                                            int* channel,
                                            int* channel2,
                                            int* different);
+
+mraa_result_t mraa_iio_get_mounting_matrix(mraa_iio_context dev, float mm[9]);
+
 /**
  * De-inits an mraa_iio_context device
  *
index f8a3275..9dd0cb6 100644 (file)
@@ -32,6 +32,7 @@
 #define MAX_SIZE 128
 #define IIO_DEVICE "iio:device"
 #define IIO_SCAN_ELEM "scan_elements"
+#define IIO_MOUNTING_MATRIX "mounting_matrix"
 #define IIO_SLASH_DEV "/dev/" IIO_DEVICE
 #define IIO_SYSFS_DEVICE "/sys/bus/iio/devices/" IIO_DEVICE
 #define IIO_EVENTS "events"
@@ -516,6 +517,27 @@ mraa_iio_event_extract_event(struct iio_event_data* event,
     *different = IIO_EVENT_CODE_EXTRACT_DIFF(event->id);
     return MRAA_SUCCESS;
 }
+
+mraa_result_t
+mraa_iio_get_mounting_matrix(mraa_iio_context dev, float mm[9])
+{
+    char buf[MAX_SIZE];
+    FILE* fp;
+    int ret = 0;
+    int len;
+    int i;
+
+    memset(buf, 0, MAX_SIZE);
+    snprintf(buf, MAX_SIZE, IIO_SYSFS_DEVICE "%d/" IIO_MOUNTING_MATRIX, dev->num);
+    fp = fopen(buf, "r");
+    if (fp != NULL) {
+        fscanf(fp, "%f %f %f\n%f %f %f\n%f %f %f\n", &mm[0], &mm[1], &mm[2], &mm[3], &mm[4], &mm[5],
+               &mm[6], &mm[7], &mm[8]);
+        return MRAA_SUCCESS;
+    }
+    return MRAA_ERROR_UNSPECIFIED;
+}
+
 #if 0
 // does stop make any sense on iio devices?
 mraa_result_t