Fix some inconsistences for the following sensors:

- a110x
 - abp
 - ad8232
 - adafruitms1438
 - adafruitss
This commit is contained in:
Adelin Dobre 2018-07-03 16:09:37 +03:00 committed by Stefan Andritoiu
parent d5f2d2ad44
commit 1f3520b770
5 changed files with 47 additions and 26 deletions

View File

@ -48,24 +48,22 @@ A110X::A110X(int pin)
A110X::A110X(std::string initStr) : mraaIo(initStr) A110X::A110X(std::string initStr) : mraaIo(initStr)
{ {
mraa_io_descriptor* descs = mraaIo.getMraaDescriptors(); mraa_io_descriptor* descs = mraaIo.getMraaDescriptors();
if(!descs->gpios) if(!descs->gpios)
{ {
throw std::invalid_argument(std::string(__FUNCTION__) + throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_gpio_init() failed, invalid pin?"); ": mraa_gpio_init() failed, invalid pin?");
return;
} }
else else
{ {
if( !(m_gpio = descs->gpios[0]) ) if( !(m_gpio = descs->gpios[0]) )
{ {
throw std::invalid_argument(std::string(__FUNCTION__) + throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_gpio_init() failed, invalid pin?"); ": mraa_gpio_init() failed, invalid pin?");
return;
} }
} }
mraa_gpio_dir(m_gpio, MRAA_GPIO_IN); mraa_gpio_dir(m_gpio, MRAA_GPIO_IN);
m_isrInstalled = false; m_isrInstalled = false;
} }
@ -90,7 +88,7 @@ void A110X::installISR(void (*isr)(void *), void *arg)
uninstallISR(); uninstallISR();
// install our interrupt handler // install our interrupt handler
mraa_gpio_isr(m_gpio, MRAA_GPIO_EDGE_BOTH, mraa_gpio_isr(m_gpio, MRAA_GPIO_EDGE_BOTH,
isr, arg); isr, arg);
m_isrInstalled = true; m_isrInstalled = true;
} }

View File

@ -44,7 +44,7 @@ ABP::ABP(std::string initStr) : mraaIo(initStr)
mraa_io_descriptor* descs = mraaIo.getMraaDescriptors(); mraa_io_descriptor* descs = mraaIo.getMraaDescriptors();
std::vector<std::string> upmTokens; std::vector<std::string> upmTokens;
if(mraaIo.getLeftoverStr() != "") if(!mraaIo.getLeftoverStr().empty())
{ {
upmTokens = UpmStringParser::parse(mraaIo.getLeftoverStr()); upmTokens = UpmStringParser::parse(mraaIo.getLeftoverStr());
} }

View File

@ -29,22 +29,44 @@
using namespace upm; using namespace upm;
using namespace std; using namespace std;
AD8232::AD8232(int loPlus, int loMinus, int output, float aref) : AD8232::AD8232(int loPlus, int loMinus, int output, float aref) {
m_gpioLOPlus(loPlus), m_gpioLOMinus(loMinus), m_aioOUT(output) m_gpioLOPlus = new mraa::Gpio(loPlus);
{ m_gpioLOMinus = new mraa::Gpio(loMinus);
m_gpioLOPlus.dir(mraa::DIR_IN); m_aioOUT = new mraa::Aio(output);
m_gpioLOMinus.dir(mraa::DIR_IN);
m_gpioLOPlus->dir(mraa::DIR_IN);
m_gpioLOMinus->dir(mraa::DIR_IN);
m_aref = aref; 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]), AD8232::AD8232(std::string initStr) : mraaIo(initStr)
m_gpioLOMinus(mraaIo.gpios[1]), m_aioOUT(mraaIo.aios[0])
{ {
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<std::string> upmTokens; std::vector<std::string> upmTokens;
if(mraaIo.getLeftoverStr() != "") if(!mraaIo.getLeftoverStr().empty())
{ {
upmTokens = UpmStringParser::parse(mraaIo.getLeftoverStr()); 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_aref = std::stof(tok.substr(5));
} }
} }
m_ares = (1 << m_aioOUT.getBit()); m_ares = (1 << m_aioOUT->getBit());
} }
AD8232::~AD8232() AD8232::~AD8232()
{ {
delete m_gpioLOPlus;
delete m_gpioLOMinus;
delete m_aioOUT;
} }
int AD8232::value() int AD8232::value()
{ {
if (m_gpioLOPlus.read() || m_gpioLOMinus.read()) if (m_gpioLOPlus->read() || m_gpioLOMinus->read())
return 0; return 0;
else else
return m_aioOUT.read(); return m_aioOUT->read();
} }

View File

@ -106,9 +106,9 @@ namespace upm {
private: private:
mraa::MraaIo mraaIo; mraa::MraaIo mraaIo;
mraa::Gpio m_gpioLOPlus; mraa::Gpio *m_gpioLOPlus;
mraa::Gpio m_gpioLOMinus; mraa::Gpio *m_gpioLOMinus;
mraa::Aio m_aioOUT; mraa::Aio *m_aioOUT;
float m_aref; float m_aref;
int m_ares; int m_ares;

View File

@ -69,7 +69,7 @@ adafruitss::adafruitss(std::string initStr) : mraaIo(initStr)
std::vector<std::string> upmTokens; std::vector<std::string> upmTokens;
if (mraaIo.getLeftoverStr() != "") if (!mraaIo.getLeftoverStr().empty())
{ {
upmTokens = UpmStringParser::parse(mraaIo.getLeftoverStr()); upmTokens = UpmStringParser::parse(mraaIo.getLeftoverStr());
} }
@ -78,7 +78,6 @@ adafruitss::adafruitss(std::string initStr) : mraaIo(initStr)
{ {
throw std::invalid_argument(std::string(__FUNCTION__) + throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_i2c_init() failed"); ": mraa_i2c_init() failed");
return;
} }
else else
{ {
@ -86,7 +85,6 @@ adafruitss::adafruitss(std::string initStr) : mraaIo(initStr)
{ {
throw std::invalid_argument(std::string(__FUNCTION__) + throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_i2c_init() failed"); ": mraa_i2c_init() failed");
return;
} }
} }