From: Brendan Le Foll Date: Fri, 29 Aug 2014 14:35:00 +0000 (+0100) Subject: max5847: work with std chipselect X-Git-Tag: v0.1.8~7 X-Git-Url: http://review.tizen.org/git/?p=contrib%2Fupm.git;a=commitdiff_plain;h=cbe211c8cfab6985f556b8662829595c00fed11d max5847: work with std chipselect Signed-off-by: Brendan Le Foll --- diff --git a/src/max5487/max5487.cxx b/src/max5487/max5487.cxx index 8120ee5..16b7a78 100644 --- a/src/max5487/max5487.cxx +++ b/src/max5487/max5487.cxx @@ -37,18 +37,21 @@ struct MAX5487Exception : public std::exception { const char* what() const throw () { return message.c_str(); } }; -MAX5487::MAX5487 (int csn) { +MAX5487::MAX5487 (int csn = -1) { mraa_result_t error = MRAA_SUCCESS; m_name = "MAX5487"; - m_csnPinCtx = mraa_gpio_init (csn); - if (m_csnPinCtx == NULL) { - throw MAX5487Exception ("GPIO failed to initilize"); - } - - error = mraa_gpio_dir (m_csnPinCtx, MRAA_GPIO_OUT); - if (error != MRAA_SUCCESS) { - throw MAX5487Exception ("GPIO failed to initilize"); + m_csnPinCtx = NULL; + if (csn != -1) { + m_csnPinCtx = mraa_gpio_init (csn); + if (m_csnPinCtx == NULL) { + throw MAX5487Exception ("GPIO failed to initilize"); + } + + error = mraa_gpio_dir (m_csnPinCtx, MRAA_GPIO_OUT); + if (error != MRAA_SUCCESS) { + throw MAX5487Exception ("GPIO failed to initilize"); + } } m_spi = mraa_spi_init (0); @@ -66,9 +69,11 @@ MAX5487::~MAX5487() { if (error != MRAA_SUCCESS) { mraa_result_print(error); } - error = mraa_gpio_close (m_csnPinCtx); - if (error != MRAA_SUCCESS) { - mraa_result_print(error); + if (m_csnPinCtx != NULL) { + error = mraa_gpio_close (m_csnPinCtx); + if (error != MRAA_SUCCESS) { + mraa_result_print(error); + } } } @@ -108,10 +113,14 @@ MAX5487::setWiperB (uint8_t wiper) { mraa_result_t MAX5487::CSOn () { - return mraa_gpio_write (m_csnPinCtx, LOW); + if (m_csnPinCtx != NULL) + return mraa_gpio_write (m_csnPinCtx, LOW); + return MRAA_SUCCESS; } mraa_result_t MAX5487::CSOff () { - return mraa_gpio_write (m_csnPinCtx, HIGH); + if (m_csnPinCtx != NULL) + return mraa_gpio_write (m_csnPinCtx, HIGH); + return MRAA_SUCCESS; }