aio.c: added normalized read returning a float in a 0.0-1.0 range
authorAlex Tereschenko <alext.mkrs@gmail.com>
Sun, 1 Feb 2015 19:54:13 +0000 (20:54 +0100)
committerBrendan Le Foll <brendan.le.foll@intel.com>
Wed, 4 Feb 2015 18:22:20 +0000 (18:22 +0000)
Closes #32.

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

index ee30fb0..753c907 100644 (file)
@@ -68,6 +68,14 @@ mraa_aio_context mraa_aio_init(unsigned int pin);
 unsigned int mraa_aio_read(mraa_aio_context dev);
 
 /**
+ * Read the input voltage and return it as a normalized float (0.0f-1.0f).
+ *
+ * @param dev The AIO context
+ * @returns The current input voltage as a normalized float (0.0f-1.0f)
+ */
+float mraa_aio_read_float(mraa_aio_context dev);
+
+/**
  * Close the analog input context, this will free the memory for the context
  *
  * @param dev The AIO context
index 27c6a64..d061f9a 100644 (file)
@@ -66,6 +66,14 @@ class Aio {
             return mraa_aio_read(m_aio);
         }
         /**
+         * Read a value from the AIO pin and return it as a normalized float.
+         *
+         * @returns The current input voltage as a normalized float (0.0f-1.0f)
+         */
+        float readFloat() {
+            return mraa_aio_read_float(m_aio);
+        }
+        /**
          * Set the bit value which mraa will shift the raw reading
          * from the ADC to. I.e. 10bits
          * @param bits the bits the return from read should be i.e 10
index 7d08ccc..83914dd 100644 (file)
@@ -159,6 +159,20 @@ mraa_aio_read(mraa_aio_context dev)
     return analog_value;
 }
 
+float
+mraa_aio_read_float(mraa_aio_context dev)
+{
+    if (dev == NULL) {
+        syslog(LOG_ERR, "aio: Device not valid");
+        return 0.0;
+    }
+
+    float max_analog_value = (1 << dev->value_bit) - 1;
+    unsigned int analog_value_int = mraa_aio_read(dev);
+
+    return analog_value_int / max_analog_value;
+}
+
 mraa_result_t
 mraa_aio_close(mraa_aio_context dev)
 {