iio: initial API and enumeration of devices
[contrib/mraa.git] / src / iio / iio.c
index d5d3c3b..982a5dd 100644 (file)
 mraa_iio_context
 mraa_iio_init(int device)
 {
-    mraa_iio_context dev = (mraa_iio_context) calloc(1, sizeof(struct _iio));
-    if (dev == NULL) {
-        syslog(LOG_CRIT, "iio: Failed to allocate memory for context");
+    if (device > plat->iio_device_count) {
         return NULL;
     }
+    return &plat->iio_devices[device];
+}
 
-    return dev;
+int
+mraa_iio_get_channel_count(mraa_iio_context dev)
+{
+    return 1;
 }
 
+mraa_result_t
+mraa_iio_read(mraa_iio_context dev, int channel, const char* attribute, float* data)
+{
+    char buf[64];
+    snprintf(buf, 64, "/sys/bus/iio/devices/iio:device%d/in_voltage%d_%s", dev->num, channel, attribute);
+    int fd = open(buf, O_RDONLY);
+    if (fd != -1) {
+        int len = read(fd, &buf, 64);
+        *data = strtol(buf, NULL, 10);
+        return MRAA_SUCCESS;
+    }
+    return MRAA_ERROR_UNSPECIFIED;
+}
 
 mraa_result_t
-mraa_iio_read(mraa_iio_context dev, uint32_t* data, int length)
+mraa_iio_write(mraa_iio_context dev, int channel, const char* attribute)
 {
-   return 0;
+    return MRAA_ERROR_FEATURE_NOT_IMPLEMENTED;
 }
 
 mraa_result_t