Closes #32.
Signed-off-by: Alex Tereschenko <alext.mkrs@gmail.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
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
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
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)
{