From d7b8fac41b7f4a67ef6ee57eff0ac0be919815d9 Mon Sep 17 00:00:00 2001 From: Jon Trulson Date: Wed, 9 Sep 2015 16:43:42 -0600 Subject: [PATCH] grovecircularled: throw exception(s) on fatal errors Signed-off-by: Jon Trulson Signed-off-by: Mihai Tudor Panu --- src/grovecircularled/grovecircularled.cxx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/grovecircularled/grovecircularled.cxx b/src/grovecircularled/grovecircularled.cxx index 64ba1f9a..8f1797ce 100644 --- a/src/grovecircularled/grovecircularled.cxx +++ b/src/grovecircularled/grovecircularled.cxx @@ -26,6 +26,8 @@ */ #include +#include +#include #include #include @@ -37,6 +39,23 @@ GroveCircularLED::GroveCircularLED (uint8_t di, uint8_t dcki) : m_clkPinCtx(dcki), m_dataPinCtx(di) { mraa::Result error = mraa::SUCCESS; + + // init clock context + m_clkPinCtx = mraa_gpio_init(dcki); + if (m_clkPinCtx == NULL) { + throw std::invalid_argument(std::string(__FUNCTION__) + + ": mraa_gpio_init(dcki) failed, invalid pin?"); + return; + } + mraa_gpio_use_mmaped(m_clkPinCtx, 1); + + // init data context + m_dataPinCtx = mraa_gpio_init(di); + if (m_dataPinCtx == NULL) { + throw std::invalid_argument(std::string(__FUNCTION__) + + ": mraa_gpio_init(di) failed, invalid pin?"); + return; + } m_clkPinCtx.useMmap(true); m_dataPinCtx.useMmap(true);