From c3980c217c19ad6b0d95a4388ff9b56177292149 Mon Sep 17 00:00:00 2001 From: Thomas Ingleby Date: Tue, 20 Jan 2015 18:24:57 +0000 Subject: [PATCH] gpio: add function to get raw gpio number. Will return the GPIO number used within SYSFS Closes #63 Signed-off-by: Thomas Ingleby --- api/mraa/gpio.h | 8 ++++++++ api/mraa/gpio.hpp | 9 +++++++-- src/gpio/gpio.c | 12 ++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/api/mraa/gpio.h b/api/mraa/gpio.h index 2a2a26c..e8fe13b 100644 --- a/api/mraa/gpio.h +++ b/api/mraa/gpio.h @@ -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 diff --git a/api/mraa/gpio.hpp b/api/mraa/gpio.hpp index 9776627..13612ba 100644 --- a/api/mraa/gpio.hpp +++ b/api/mraa/gpio.hpp @@ -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: diff --git a/src/gpio/gpio.c b/src/gpio/gpio.c index adeae3c..f995492 100644 --- a/src/gpio/gpio.c +++ b/src/gpio/gpio.c @@ -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; +}