From cbe211c8cfab6985f556b8662829595c00fed11d Mon Sep 17 00:00:00 2001 From: Brendan Le Foll Date: Fri, 29 Aug 2014 15:35:00 +0100 Subject: [PATCH] max5847: work with std chipselect Signed-off-by: Brendan Le Foll --- src/max5487/max5487.cxx | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) 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; } -- 2.7.4