spi: return int instead of uint8_t in mraa_spi_write
authorBrendan Le Foll <brendan.le.foll@intel.com>
Tue, 3 Mar 2015 16:20:29 +0000 (16:20 +0000)
committerBrendan Le Foll <brendan.le.foll@intel.com>
Tue, 3 Mar 2015 16:20:30 +0000 (16:20 +0000)
This stops the error code getting lost since -1 wraps around to 0xFF when cast
to a uint8_t. This fixes #146

Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
api/mraa/spi.h
api/mraa/spi.hpp
src/spi/spi.c

index 40929da..5b92fe4 100644 (file)
@@ -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.
index fa586d9..577b783 100644 (file)
@@ -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);
         }
 
index 6315395..ddda73d 100644 (file)
@@ -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