Private
Public Access
2
0

spi: Add 16bit wide convenience functions for spi

Signed-off-by: Michael Ring <mail@michael-ring.org>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
Michael Ring
2015-02-17 15:34:01 +00:00
committed by Brendan Le Foll
parent 3a5b992524
commit 55ac2e8996
3 changed files with 117 additions and 0 deletions

View File

@@ -104,6 +104,14 @@ mraa_result_t mraa_spi_frequency(mraa_spi_context dev, int hz);
*/
uint8_t mraa_spi_write(mraa_spi_context dev, uint8_t data);
/** Write Two Bytes to the SPI device.
*
* @param dev The Spi context
* @param data Data to send
* @return Data received on the miso line
*/
uint16_t mraa_spi_write_word(mraa_spi_context dev, uint16_t data);
/** Write Buffer of bytes to the SPI device. The pointer return has to be
* free'd by the caller. It will return a NULL pointer in cases of error.
*
@@ -114,6 +122,16 @@ uint8_t mraa_spi_write(mraa_spi_context dev, uint8_t data);
*/
uint8_t* mraa_spi_write_buf(mraa_spi_context dev, uint8_t* data, int length);
/** Write Buffer of uint16 to the SPI device. The pointer return has to be
* free'd by the caller. It will return a NULL pointer in cases of error.
*
* @param dev The Spi context
* @param data to send
* @param length elements (in bytes) within buffer, Max 4096
* @return Data received on the miso line, same length as passed in
*/
uint16_t* mraa_spi_write_buf_word(mraa_spi_context dev, uint16_t* data, int length);
/** Transfer Buffer of bytes to the SPI device. Both send and recv buffers
* are passed in
*
@@ -125,6 +143,17 @@ uint8_t* mraa_spi_write_buf(mraa_spi_context dev, uint8_t* data, int length);
*/
mraa_result_t mraa_spi_transfer_buf(mraa_spi_context dev, uint8_t* data, uint8_t* rxbuf, int length);
/** Transfer Buffer of uint16 to the SPI device. Both send and recv buffers
* are passed in
*
* @param dev The Spi context
* @param data to send
* @param rxbuf buffer to recv data back, may be NULL
* @param length elements (in bytes) within buffer, Max 4096
* @return Result of operation
*/
mraa_result_t mraa_spi_transfer_buf_word(mraa_spi_context dev, uint16_t* data, uint16_t* rxbuf, int length);
/**
* Change the SPI lsb mode
*

View File

@@ -99,6 +99,16 @@ class Spi {
return mraa_spi_write(m_spi, (uint8_t) data);
}
/**
* Write single byte to the SPI device
*
* @param data the byte to send
* @return data received on the miso line
*/
uint16_t write_word(uint16_t data) {
return mraa_spi_write_word(m_spi, (uint16_t) data);
}
/**
* Write buffer of bytes to SPI device The pointer return has to be
* free'd by the caller. It will return a NULL pointer in cases of
@@ -112,6 +122,19 @@ class Spi {
return mraa_spi_write_buf(m_spi, txBuf, length);
}
/**
* Write buffer of bytes to SPI device The pointer return has to be
* free'd by the caller. It will return a NULL pointer in cases of
* error
*
* @param txBuf buffer to send
* @param length size of buffer (in bytes) to send
* @return uint8_t* data received on the miso line. Same length as passed in
*/
uint16_t* write_word(uint16_t* txBuf, int length) {
return mraa_spi_write_buf_word(m_spi, txBuf, length);
}
#ifndef SWIG
/**
* Transfer data to and from SPI device Receive pointer may be null if
@@ -125,6 +148,19 @@ class Spi {
mraa_result_t transfer(uint8_t* txBuf, uint8_t* rxBuf, int length) {
return mraa_spi_transfer_buf(m_spi, txBuf, rxBuf, length);
}
/**
* Transfer data to and from SPI device Receive pointer may be null if
* return data is not needed.
*
* @param data buffer to send
* @param rxBuf buffer to optionally receive data from spi device
* @param length size of buffer to send
* @return Result of operation
*/
mraa_result_t transfer_word(uint16_t* txBuf, uint16_t* rxBuf, int length) {
return mraa_spi_transfer_buf_word(m_spi, txBuf, rxBuf, length);
}
#endif
/**