diff --git a/src/ldt0028/ldt0028.cxx b/src/ldt0028/ldt0028.cxx index 19e712f1..f8cbec14 100644 --- a/src/ldt0028/ldt0028.cxx +++ b/src/ldt0028/ldt0028.cxx @@ -31,7 +31,7 @@ using namespace upm; LDT0028::LDT0028(unsigned int pin) { // initialize analog input - if ( !(m_pin = mraa_aio_init(pin)) ) + if ( !(m_pin = mraa_aio_init(pin)) ) { throw std::invalid_argument(std::string(__FUNCTION__) + ": mraa_aio_init() failed, invalid pin?"); @@ -40,6 +40,26 @@ LDT0028::LDT0028(unsigned int pin) { m_name = "ldt0-028"; } +LDT0028::LDT0028(std::string initStr) : mraaIo(initStr) { + mraa_io_descriptor* descs = mraaIo.getMraaDescriptors(); + + if(!descs->aios) + { + throw std::invalid_argument(std::string(__FUNCTION__) + + ": mraa_aio_init() failed, invalid pin?"); + } + else + { + if( !(m_pin = descs->aios[0]) ) + { + throw std::invalid_argument(std::string(__FUNCTION__) + + ": mraa_aio_init() failed, invalid pin?"); + + } + } + m_name = "ldt0-028"; +} + LDT0028::~LDT0028() { // close analog input mraa_aio_close(m_pin); diff --git a/src/ldt0028/ldt0028.hpp b/src/ldt0028/ldt0028.hpp index 8cfe28f2..3e9d58a3 100644 --- a/src/ldt0028/ldt0028.hpp +++ b/src/ldt0028/ldt0028.hpp @@ -25,6 +25,8 @@ #include #include +#include +#include namespace upm { @@ -61,6 +63,13 @@ class LDT0028 { */ LDT0028(unsigned int pin); + /** + * Instantiates LDT0-028 Sensor object based on a given string. + * + * @param initStr string containing specific information for LDT0-028 Sensor initialization. + */ + LDT0028(std::string initStr); + /** * LDT0028 destructor */ @@ -82,6 +91,7 @@ class LDT0028 { protected: std::string m_name; //!< name of this sensor + mraa::MraaIo mraaIo; mraa_aio_context m_pin; //!< AIO pin };