LDT0-028: Add string based constructor for Piezo Vibration Sensor

Signed-off-by: Adelin Dobre <adelin.dobre1994@gmail.com>
This commit is contained in:
Adelin Dobre 2018-07-03 17:45:42 +03:00 committed by Stefan Andritoiu
parent 1f3520b770
commit f34360c8ec
2 changed files with 31 additions and 1 deletions

View File

@ -31,7 +31,7 @@ using namespace upm;
LDT0028::LDT0028(unsigned int pin) { LDT0028::LDT0028(unsigned int pin) {
// initialize analog input // initialize analog input
if ( !(m_pin = mraa_aio_init(pin)) ) if ( !(m_pin = mraa_aio_init(pin)) )
{ {
throw std::invalid_argument(std::string(__FUNCTION__) + throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_aio_init() failed, invalid pin?"); ": mraa_aio_init() failed, invalid pin?");
@ -40,6 +40,26 @@ LDT0028::LDT0028(unsigned int pin) {
m_name = "ldt0-028"; 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() { LDT0028::~LDT0028() {
// close analog input // close analog input
mraa_aio_close(m_pin); mraa_aio_close(m_pin);

View File

@ -25,6 +25,8 @@
#include <string> #include <string>
#include <mraa/aio.h> #include <mraa/aio.h>
#include <mraa/initio.hpp>
#include <mraa/initio.h>
namespace upm { namespace upm {
@ -61,6 +63,13 @@ class LDT0028 {
*/ */
LDT0028(unsigned int pin); 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 * LDT0028 destructor
*/ */
@ -82,6 +91,7 @@ class LDT0028 {
protected: protected:
std::string m_name; //!< name of this sensor std::string m_name; //!< name of this sensor
mraa::MraaIo mraaIo;
mraa_aio_context m_pin; //!< AIO pin mraa_aio_context m_pin; //!< AIO pin
}; };