From f4e5a5109f96b30d12a1c405baa5fe9d284d9e11 Mon Sep 17 00:00:00 2001 From: Jon Trulson Date: Tue, 8 Sep 2015 16:16:27 -0600 Subject: [PATCH] my9221: throw exception(s) on fatal errors Signed-off-by: Jon Trulson Signed-off-by: Mihai Tudor Panu --- src/my9221/my9221.cxx | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/my9221/my9221.cxx b/src/my9221/my9221.cxx index 333363ac..b9fcc8d7 100644 --- a/src/my9221/my9221.cxx +++ b/src/my9221/my9221.cxx @@ -23,6 +23,8 @@ */ #include +#include +#include #include #include @@ -30,9 +32,24 @@ using namespace upm; -MY9221::MY9221 (uint8_t di, uint8_t dcki) : m_clkPinCtx(dcki), m_dataPinCtx(di) { +MY9221::MY9221 (uint8_t di, uint8_t dcki) { mraa::Result error = mraa::SUCCESS; - mraa::init(); + mraa_init(); + + // 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; + } + // 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; + } // set direction (out) error = m_clkPinCtx.dir(mraa::DIR_OUT);