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);