From 36cbca05bba8a0985d327abb906c3eb152755326 Mon Sep 17 00:00:00 2001 From: Jon Trulson Date: Thu, 10 Sep 2015 16:42:32 -0600 Subject: [PATCH] nrf24l01: throw exception(s) on fatal errors Signed-off-by: Jon Trulson Signed-off-by: Mihai Tudor Panu --- src/nrf24l01/nrf24l01.cxx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/nrf24l01/nrf24l01.cxx b/src/nrf24l01/nrf24l01.cxx index 817dd2b2..24b27142 100644 --- a/src/nrf24l01/nrf24l01.cxx +++ b/src/nrf24l01/nrf24l01.cxx @@ -25,17 +25,19 @@ #include #include +#include +#include #include #include "nrf24l01.h" using namespace upm; + NRF24L01::NRF24L01 (uint8_t cs, uint8_t ce) : m_csnPinCtx(cs), m_cePinCtx(ce), m_spi(0) { mraa::init(); - init (cs, ce); } void @@ -46,6 +48,20 @@ NRF24L01::init (uint8_t chip_select, uint8_t chip_enable) { m_ce = chip_enable; m_channel = 99; + m_csnPinCtx = mraa_gpio_init (m_csn); + if (m_csnPinCtx == NULL) { + throw std::invalid_argument(std::string(__FUNCTION__) + + ": mraa_gpio_init(csn) failed, invalid pin?"); + return; + } + + m_cePinCtx = mraa_gpio_init (m_ce); + if (m_cePinCtx == NULL) { + throw std::invalid_argument(std::string(__FUNCTION__) + + ": mraa_gpio_init(ce) failed, invalid pin?"); + return; + } + error = m_csnPinCtx.dir(mraa::DIR_OUT); if (error != mraa::SUCCESS) { mraa::printError (error);