gpio: add function to get raw gpio number.
authorThomas Ingleby <thomas.c.ingleby@intel.com>
Tue, 20 Jan 2015 18:24:57 +0000 (18:24 +0000)
committerThomas Ingleby <thomas.c.ingleby@intel.com>
Tue, 20 Jan 2015 18:33:12 +0000 (18:33 +0000)
Will return the GPIO number used within SYSFS
Closes #63

Signed-off-by: Thomas Ingleby <thomas.c.ingleby@intel.com>
api/mraa/gpio.h
api/mraa/gpio.hpp
src/gpio/gpio.c

index 2a2a26c..e8fe13b 100644 (file)
@@ -202,6 +202,14 @@ mraa_result_t mraa_gpio_use_mmaped(mraa_gpio_context dev, mraa_boolean_t mmap);
  */
 int mraa_gpio_get_pin(mraa_gpio_context dev);
 
+/**
+ * Get a gpio number as used within sysfs
+ *
+ * @param dev The Gpio context
+ * @return gpio number
+ */
+int mraa_gpio_get_pin_raw(mraa_gpio_context dev);
+
 #ifdef __cplusplus
 }
 #endif
index 9776627..13612ba 100644 (file)
@@ -186,11 +186,16 @@ class Gpio {
             return mraa_gpio_use_mmaped(m_gpio, (mraa_boolean_t) enable);
         }
         /**
-         * Get pin number of Gpio
+         * Get pin number of Gpio. If raw param is True will return the
+         * number as used within sysfs
          *
+         * @param raw (optional) get the raw gpio number.
          * @return Pin number
          */
-        int getPin() {
+        int getPin(bool raw = false) {
+            if (raw) {
+                return mraa_gpio_get_pin_raw(m_gpio);
+            }
             return mraa_gpio_get_pin(m_gpio);
         }
     private:
index adeae3c..f995492 100644 (file)
@@ -583,5 +583,17 @@ mraa_gpio_use_mmaped(mraa_gpio_context dev, mraa_boolean_t mmap_en)
 int
 mraa_gpio_get_pin(mraa_gpio_context dev)
 {
+    if (dev == NULL) {
+        syslog(LOG_ERR, "gpio: context is invalid");
+    }
     return dev->phy_pin;
 }
+
+int
+mraa_gpio_get_pin_raw(mraa_gpio_context dev)
+{
+    if (dev == NULL) {
+        syslog(LOG_ERR, "gpio: context is invalid");
+    }
+    return dev->pin;
+}