From 0566b4f9957a9a2d27c100a47f36265c7b665c20 Mon Sep 17 00:00:00 2001 From: Jon Trulson Date: Wed, 9 Sep 2015 14:50:52 -0600 Subject: [PATCH] adafruitss: throw exception(s) on fatal errors Signed-off-by: Jon Trulson Signed-off-by: Mihai Tudor Panu --- src/adafruitss/adafruitss.cxx | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/adafruitss/adafruitss.cxx b/src/adafruitss/adafruitss.cxx index 76da60d5..4a891c1c 100644 --- a/src/adafruitss/adafruitss.cxx +++ b/src/adafruitss/adafruitss.cxx @@ -22,6 +22,9 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include +#include + #include "adafruitss.h" #include #include @@ -30,16 +33,29 @@ using namespace upm; adafruitss::adafruitss(int bus,int i2c_address) { - mraa_init(); - - - m_i2c = mraa_i2c_init(bus); + if ( !(m_i2c = mraa_i2c_init(bus)) ) + { + throw std::invalid_argument(std::string(__FUNCTION__) + + ": mraa_i2c_init() failed"); + return; + } pca9685_addr = i2c_address; - mraa_i2c_address(m_i2c, pca9685_addr); + if (mraa_i2c_address(m_i2c, pca9685_addr) != MRAA_SUCCESS) + { + throw std::invalid_argument(std::string(__FUNCTION__) + + ": mraa_i2c_address() failed"); + return; + } + m_rx_tx_buf[0]=PCA9685_MODE1; m_rx_tx_buf[1]=0; - mraa_i2c_write(m_i2c,m_rx_tx_buf,2); + if (mraa_i2c_write(m_i2c,m_rx_tx_buf,2) != MRAA_SUCCESS) + { + throw std::invalid_argument(std::string(__FUNCTION__) + + ": mraa_i2c_write() failed"); + return; + } adafruitss::setPWMFreq(60);