diff --git a/src/a110x/a110x.cxx b/src/a110x/a110x.cxx index 53ed180d..0a0c0ef3 100644 --- a/src/a110x/a110x.cxx +++ b/src/a110x/a110x.cxx @@ -48,24 +48,22 @@ A110X::A110X(int pin) A110X::A110X(std::string initStr) : mraaIo(initStr) { mraa_io_descriptor* descs = mraaIo.getMraaDescriptors(); - + if(!descs->gpios) { throw std::invalid_argument(std::string(__FUNCTION__) + ": mraa_gpio_init() failed, invalid pin?"); - return; } - else + else { if( !(m_gpio = descs->gpios[0]) ) { throw std::invalid_argument(std::string(__FUNCTION__) + ": mraa_gpio_init() failed, invalid pin?"); - - return; + } } - + mraa_gpio_dir(m_gpio, MRAA_GPIO_IN); m_isrInstalled = false; } @@ -90,7 +88,7 @@ void A110X::installISR(void (*isr)(void *), void *arg) uninstallISR(); // install our interrupt handler - mraa_gpio_isr(m_gpio, MRAA_GPIO_EDGE_BOTH, + mraa_gpio_isr(m_gpio, MRAA_GPIO_EDGE_BOTH, isr, arg); m_isrInstalled = true; } diff --git a/src/abp/abp.cxx b/src/abp/abp.cxx index 2aae9bcd..4185cdf9 100644 --- a/src/abp/abp.cxx +++ b/src/abp/abp.cxx @@ -44,7 +44,7 @@ ABP::ABP(std::string initStr) : mraaIo(initStr) mraa_io_descriptor* descs = mraaIo.getMraaDescriptors(); std::vector upmTokens; - if(mraaIo.getLeftoverStr() != "") + if(!mraaIo.getLeftoverStr().empty()) { upmTokens = UpmStringParser::parse(mraaIo.getLeftoverStr()); } diff --git a/src/ad8232/ad8232.cxx b/src/ad8232/ad8232.cxx index 88934acb..0d318dc9 100644 --- a/src/ad8232/ad8232.cxx +++ b/src/ad8232/ad8232.cxx @@ -29,22 +29,44 @@ using namespace upm; using namespace std; -AD8232::AD8232(int loPlus, int loMinus, int output, float aref) : - m_gpioLOPlus(loPlus), m_gpioLOMinus(loMinus), m_aioOUT(output) -{ - m_gpioLOPlus.dir(mraa::DIR_IN); - m_gpioLOMinus.dir(mraa::DIR_IN); +AD8232::AD8232(int loPlus, int loMinus, int output, float aref) { + m_gpioLOPlus = new mraa::Gpio(loPlus); + m_gpioLOMinus = new mraa::Gpio(loMinus); + m_aioOUT = new mraa::Aio(output); + + m_gpioLOPlus->dir(mraa::DIR_IN); + m_gpioLOMinus->dir(mraa::DIR_IN); m_aref = aref; - m_ares = (1 << m_aioOUT.getBit()); + m_ares = (1 << m_aioOUT->getBit()); } -AD8232::AD8232(std::string initStr) : mraaIo(initStr), m_gpioLOPlus(mraaIo.gpios[0]), - m_gpioLOMinus(mraaIo.gpios[1]), m_aioOUT(mraaIo.aios[0]) +AD8232::AD8232(std::string initStr) : mraaIo(initStr) { + if(!mraaIo.gpios.empty()) + { + m_gpioLOPlus = new mraa::Gpio(mraaIo.gpios[0]); + m_gpioLOMinus = new mraa::Gpio(mraaIo.gpios[1]); + } + else + { + throw std::invalid_argument(std::string(__FUNCTION__) + + ": mraa_gpio_init() failed, invalid pin?"); + } + + if(!mraaIo.gpios.empty()) + { + m_aioOUT = new mraa::Aio(mraaIo.aios[0]); + } + else + { + throw std::invalid_argument(std::string(__FUNCTION__) + + ": mraa_aio_init() failed, invalid pin?"); + } + std::vector upmTokens; - if(mraaIo.getLeftoverStr() != "") + if(!mraaIo.getLeftoverStr().empty()) { upmTokens = UpmStringParser::parse(mraaIo.getLeftoverStr()); } @@ -56,17 +78,20 @@ AD8232::AD8232(std::string initStr) : mraaIo(initStr), m_gpioLOPlus(mraaIo.gpios m_aref = std::stof(tok.substr(5)); } } - m_ares = (1 << m_aioOUT.getBit()); + m_ares = (1 << m_aioOUT->getBit()); } AD8232::~AD8232() { + delete m_gpioLOPlus; + delete m_gpioLOMinus; + delete m_aioOUT; } int AD8232::value() { - if (m_gpioLOPlus.read() || m_gpioLOMinus.read()) + if (m_gpioLOPlus->read() || m_gpioLOMinus->read()) return 0; else - return m_aioOUT.read(); + return m_aioOUT->read(); } diff --git a/src/ad8232/ad8232.hpp b/src/ad8232/ad8232.hpp index a90d9da7..29e652f6 100644 --- a/src/ad8232/ad8232.hpp +++ b/src/ad8232/ad8232.hpp @@ -106,9 +106,9 @@ namespace upm { private: mraa::MraaIo mraaIo; - mraa::Gpio m_gpioLOPlus; - mraa::Gpio m_gpioLOMinus; - mraa::Aio m_aioOUT; + mraa::Gpio *m_gpioLOPlus; + mraa::Gpio *m_gpioLOMinus; + mraa::Aio *m_aioOUT; float m_aref; int m_ares; diff --git a/src/adafruitss/adafruitss.cxx b/src/adafruitss/adafruitss.cxx index bf05bdc3..4699dfc3 100644 --- a/src/adafruitss/adafruitss.cxx +++ b/src/adafruitss/adafruitss.cxx @@ -69,7 +69,7 @@ adafruitss::adafruitss(std::string initStr) : mraaIo(initStr) std::vector upmTokens; - if (mraaIo.getLeftoverStr() != "") + if (!mraaIo.getLeftoverStr().empty()) { upmTokens = UpmStringParser::parse(mraaIo.getLeftoverStr()); } @@ -78,7 +78,6 @@ adafruitss::adafruitss(std::string initStr) : mraaIo(initStr) { throw std::invalid_argument(std::string(__FUNCTION__) + ": mraa_i2c_init() failed"); - return; } else { @@ -86,7 +85,6 @@ adafruitss::adafruitss(std::string initStr) : mraaIo(initStr) { throw std::invalid_argument(std::string(__FUNCTION__) + ": mraa_i2c_init() failed"); - return; } }