grove: throw exception(s) on fatal errors

Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
This commit is contained in:
Jon Trulson 2015-09-08 13:37:55 -06:00 committed by Mihai Tudor Panu
parent d4d29307a2
commit 38351cbe6e

View File

@ -25,6 +25,8 @@
*/
#include <iostream>
#include <string>
#include <stdexcept>
#include "grove.h"
#include "math.h"
@ -35,8 +37,12 @@ using namespace upm;
GroveLed::GroveLed(int pin)
{
mraa_init();
m_gpio = mraa_gpio_init(pin);
if ( !(m_gpio = mraa_gpio_init(pin)) ) {
throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_gpio_init() failed, invalid pin?");
return;
}
mraa_gpio_dir(m_gpio, MRAA_GPIO_OUT);
m_name = "LED Socket";
}
@ -68,8 +74,11 @@ mraa_result_t GroveLed::off()
GroveRelay::GroveRelay(unsigned int pin)
{
mraa_init();
m_gpio = mraa_gpio_init(pin);
if ( !(m_gpio = mraa_gpio_init(pin)) ) {
throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_gpio_init() failed, invalid pin?");
return;
}
mraa_gpio_dir(m_gpio, MRAA_GPIO_OUT);
m_name = "Relay Switch";
}
@ -103,8 +112,11 @@ bool GroveRelay::isOff()
GroveTemp::GroveTemp(unsigned int pin)
{
mraa_init();
m_aio = mraa_aio_init(pin);
if ( !(m_aio = mraa_aio_init(pin)) ) {
throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_aio_init() failed, invalid pin?");
return;
}
m_name = "Temperature Sensor";
}
@ -130,8 +142,11 @@ float GroveTemp::raw_value()
GroveLight::GroveLight(unsigned int pin)
{
mraa_init();
m_aio = mraa_aio_init(pin);
if ( !(m_aio = mraa_aio_init(pin)) ) {
throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_aio_init() failed, invalid pin?");
return;
}
m_name = "Light Sensor";
}
@ -157,8 +172,11 @@ float GroveLight::raw_value()
GroveRotary::GroveRotary(unsigned int pin)
{
mraa_init();
m_aio = mraa_aio_init(pin);
if ( !(m_aio = mraa_aio_init(pin)) ) {
throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_aio_init() failed, invalid pin?");
return;
}
m_name = "Rotary Angle Sensor";
}
@ -201,8 +219,11 @@ float GroveRotary::rel_rad()
GroveSlide::GroveSlide(unsigned int pin, float ref_voltage)
{
mraa_init();
m_aio = mraa_aio_init(pin);
if ( !(m_aio = mraa_aio_init(pin)) ) {
throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_aio_init() failed, invalid pin?");
return;
}
m_ref_voltage = ref_voltage;
m_name = "Slide Potentiometer";
}
@ -234,8 +255,11 @@ float GroveSlide::ref_voltage()
GroveButton::GroveButton(unsigned int pin)
{
mraa_init();
m_gpio = mraa_gpio_init(pin);
if ( !(m_gpio = mraa_gpio_init(pin)) ) {
throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_gpio_init() failed, invalid pin?");
return;
}
mraa_gpio_dir(m_gpio, MRAA_GPIO_IN);
m_name = "Button Sensor";
}