my9221: 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 16:16:27 -06:00 committed by Mihai Tudor Panu
parent dc49f36e83
commit f4e5a5109f

View File

@ -23,6 +23,8 @@
*/
#include <iostream>
#include <string>
#include <stdexcept>
#include <unistd.h>
#include <stdlib.h>
@ -30,9 +32,24 @@
using namespace upm;
MY9221::MY9221 (uint8_t di, uint8_t dcki) : m_clkPinCtx(dcki), m_dataPinCtx(di) {
MY9221::MY9221 (uint8_t di, uint8_t dcki) {
mraa::Result error = mraa::SUCCESS;
mraa::init();
mraa_init();
// init clock context
m_clkPinCtx = mraa_gpio_init(dcki);
if (m_clkPinCtx == NULL) {
throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_gpio_init(dcki) failed, invalid pin?");
return;
}
// init data context
m_dataPinCtx = mraa_gpio_init(di);
if (m_dataPinCtx == NULL) {
throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_gpio_init(di) failed, invalid pin?");
return;
}
// set direction (out)
error = m_clkPinCtx.dir(mraa::DIR_OUT);