diff --git a/src/ehr/ehr.cxx b/src/ehr/ehr.cxx index 39667efe..42ff9a2d 100644 --- a/src/ehr/ehr.cxx +++ b/src/ehr/ehr.cxx @@ -46,6 +46,23 @@ EHR::EHR(int pin) m_beatCounter = 0; } +EHR::EHR(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?"); + } else { + m_gpio = descs->gpios[0]; + } + + mraa_gpio_dir(m_gpio, MRAA_GPIO_IN); + + initClock(); + m_beatCounter = 0; +} + EHR::~EHR() { mraa_gpio_close(m_gpio); diff --git a/src/ehr/ehr.hpp b/src/ehr/ehr.hpp index f22f5f4c..eb460709 100644 --- a/src/ehr/ehr.hpp +++ b/src/ehr/ehr.hpp @@ -27,6 +27,7 @@ #include #include #include +#include #include namespace upm { @@ -60,6 +61,13 @@ namespace upm { * @param pin Digital pin to use */ EHR(int pin); + /** + * Instantiates EHR Heart Rate sensor based on a given string. + * + * @param initStr string containing specific information for EHR initialization. + */ + EHR(std::string initStr); + /** * EHR destructor */ @@ -128,5 +136,6 @@ namespace upm { volatile uint32_t m_beatCounter; struct timeval m_startTime; mraa_gpio_context m_gpio; + mraa::MraaIo mraaIo; }; }