From d38339ab9f7172b63e60befd53179d16d9a96182 Mon Sep 17 00:00:00 2001 From: Adelin Dobre Date: Mon, 23 Jul 2018 17:12:40 +0300 Subject: [PATCH] Button: Add string based constructor Signed-off-by: Adelin Dobre Signed-off-by: Mihai Tudor Panu --- src/button/button.cxx | 17 +++++++++++++++++ src/button/button.hpp | 8 ++++++++ 2 files changed, 25 insertions(+) diff --git a/src/button/button.cxx b/src/button/button.cxx index 36cbb1fd..344d288b 100644 --- a/src/button/button.cxx +++ b/src/button/button.cxx @@ -44,6 +44,23 @@ Button::Button(unsigned int pin) m_name = "Button Sensor"; } +Button::Button(std::string initStr) : mraaIo(initStr) +{ + mraa_io_descriptor* descs = mraaIo.getMraaDescriptors(); + if(!descs->gpios) { + throw std::invalid_argument(std::string(__FUNCTION__) + + ": mraa_gpio_init() failed, invalid pin?"); + } else { + if( !(m_gpio = descs->gpios[0]) ) { + throw std::invalid_argument(std::string(__FUNCTION__) + + ": mraa_gpio_init() failed, invalid pin?"); + } + } + + mraa_gpio_dir(m_gpio, MRAA_GPIO_IN); + m_name = "Button Sensor"; +} + Button::~Button() { mraa_gpio_close(m_gpio); diff --git a/src/button/button.hpp b/src/button/button.hpp index 81403a03..0991df33 100644 --- a/src/button/button.hpp +++ b/src/button/button.hpp @@ -27,6 +27,7 @@ #pragma once #include +#include #include #include @@ -63,6 +64,12 @@ class Button : virtual public iButton { * @param pin Pin to use */ Button(unsigned int pin); + /** + * Instantiates Button/Switch Library based on a given string. + * + * @param initStr string containing specific information for Button initialization. + */ + Button(std::string initStr); /** * button destructor */ @@ -107,5 +114,6 @@ class Button : virtual public iButton { bool m_isrInstalled; std::string m_name; mraa_gpio_context m_gpio; + mraa::MraaIo mraaIo; }; }