diff --git a/api/mraa/spi.h b/api/mraa/spi.h index 40929da..5b92fe4 100644 --- a/api/mraa/spi.h +++ b/api/mraa/spi.h @@ -102,9 +102,9 @@ mraa_result_t mraa_spi_frequency(mraa_spi_context dev, int hz); * * @param dev The Spi context * @param data Data to send - * @return Data received on the miso line + * @return Data received on the miso line or -1 in case of error */ -uint8_t mraa_spi_write(mraa_spi_context dev, uint8_t data); +int mraa_spi_write(mraa_spi_context dev, uint8_t data); /** *Write Two Bytes to the SPI device. diff --git a/api/mraa/spi.hpp b/api/mraa/spi.hpp index fa586d9..577b783 100644 --- a/api/mraa/spi.hpp +++ b/api/mraa/spi.hpp @@ -93,9 +93,9 @@ class Spi { * Write single byte to the SPI device * * @param data the byte to send - * @return data received on the miso line + * @return data received on the miso line or -1 in case of error */ - uint8_t writeByte(uint8_t data) { + int writeByte(uint8_t data) { return mraa_spi_write(m_spi, (uint8_t) data); } diff --git a/src/spi/spi.c b/src/spi/spi.c index 6315395..ddda73d 100644 --- a/src/spi/spi.c +++ b/src/spi/spi.c @@ -234,7 +234,7 @@ mraa_spi_bit_per_word(mraa_spi_context dev, unsigned int bits) return MRAA_SUCCESS; } -uint8_t +int mraa_spi_write(mraa_spi_context dev, uint8_t data) { struct spi_ioc_transfer msg; @@ -242,7 +242,7 @@ mraa_spi_write(mraa_spi_context dev, uint8_t data) uint16_t length = 1; - uint8_t recv = 0; + unsigned long recv = 0; msg.tx_buf = (unsigned long) &data; msg.rx_buf = (unsigned long) &recv; msg.speed_hz = dev->clock; @@ -253,7 +253,7 @@ mraa_spi_write(mraa_spi_context dev, uint8_t data) syslog(LOG_ERR, "spi: Failed to perform dev transfer"); return -1; } - return recv; + return (int) recv; } uint16_t