diff options
Diffstat (limited to 'os/io')
-rw-r--r-- | os/io/platforms/STM32/spi_lld.c | 24 | ||||
-rw-r--r-- | os/io/platforms/STM32/spi_lld.h | 2 | ||||
-rw-r--r-- | os/io/spi.c | 34 | ||||
-rw-r--r-- | os/io/spi.h | 2 | ||||
-rw-r--r-- | os/io/templates/spi_lld.c | 22 | ||||
-rw-r--r-- | os/io/templates/spi_lld.h | 2 |
6 files changed, 51 insertions, 35 deletions
diff --git a/os/io/platforms/STM32/spi_lld.c b/os/io/platforms/STM32/spi_lld.c index 934501cf6..8cd7ba8e1 100644 --- a/os/io/platforms/STM32/spi_lld.c +++ b/os/io/platforms/STM32/spi_lld.c @@ -301,9 +301,13 @@ void spi_lld_unselect(SPIDriver *spip) { * @details This function performs a simultaneous transmit/receive operation.
*
* @param[in] spip pointer to the @p SPIDriver object
- * @param n number of words to exchange
- * @param rxbuf the pointer to the receive buffer
- * @param txbuf the pointer to the transmit buffer
+ * @param[in] n number of words to exchange
+ * @param[in] txbuf the pointer to the transmit buffer. Note that the buffer is
+ * organized as an uint8_t array for data sizes below or equal
+ * to 8 bits else it is organized as an uint16_t array.
+ * @param[out] rxbuf the pointer to the receive buffer. Note that the buffer is
+ * organized as an uint8_t array for data sizes below or equal
+ * to 8 bits else it is organized as an uint16_t array.
* @return The operation status is returned.
* @retval RDY_OK operation complete.
* @retval RDY_RESET hardware failure.
@@ -311,7 +315,7 @@ void spi_lld_unselect(SPIDriver *spip) { * @note The buffers are organized as uint8_t arrays for data sizes below or
* equal to 8 bits else it is organized as uint16_t arrays.
*/
-msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf) {
+msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *txbuf, void *rxbuf) {
spip->spd_dmarx->CCR = DMA_CCR1_TCIE | DMA_CCR1_MINC | DMA_CCR1_TEIE;
spip->spd_dmatx->CCR = DMA_CCR1_DIR | DMA_CCR1_MINC | DMA_CCR1_TEIE;
@@ -323,8 +327,10 @@ msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf) { * @brief Sends data ever the SPI bus.
*
* @param[in] spip pointer to the @p SPIDriver object
- * @param n number of words to send
- * @param txbuf the pointer to the transmit buffer
+ * @param[in] n number of words to send
+ * @param[in] txbuf the pointer to the transmit buffer. Note that the buffer is
+ * organized as an uint8_t array for data sizes below or equal
+ * to 8 bits else it is organized as an uint16_t array.
* @return The operation status is returned.
* @retval RDY_OK operation complete.
* @retval RDY_RESET hardware failure.
@@ -344,8 +350,10 @@ msg_t spi_lld_send(SPIDriver *spip, size_t n, void *txbuf) { * @brief Receives data from the SPI bus.
*
* @param[in] spip pointer to the @p SPIDriver object
- * @param n number of words to receive
- * @param rxbuf the pointer to the receive buffer
+ * @param[in] n number of words to receive
+ * @param[out] rxbuf the pointer to the receive buffer. Note that the buffer is
+ * organized as an uint8_t array for data sizes below or equal
+ * to 8 bits else it is organized as an uint16_t array.
* @return The operation status is returned.
* @retval RDY_OK operation complete.
* @retval RDY_RESET hardware failure.
diff --git a/os/io/platforms/STM32/spi_lld.h b/os/io/platforms/STM32/spi_lld.h index 671659d72..077c7be7f 100644 --- a/os/io/platforms/STM32/spi_lld.h +++ b/os/io/platforms/STM32/spi_lld.h @@ -186,7 +186,7 @@ extern "C" { void spi_lld_stop(SPIDriver *spip);
void spi_lld_select(SPIDriver *spip);
void spi_lld_unselect(SPIDriver *spip);
- msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf);
+ msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *txbuf, void *rxbuf);
msg_t spi_lld_send(SPIDriver *spip, size_t n, void *txbuf);
msg_t spi_lld_receive(SPIDriver *spip, size_t n, void *rxbuf);
#ifdef __cplusplus
diff --git a/os/io/spi.c b/os/io/spi.c index 5cf51e76e..231fc7ad2 100644 --- a/os/io/spi.c +++ b/os/io/spi.c @@ -125,19 +125,15 @@ void spiUnselect(SPIDriver *spip) { * @details This function performs a simultaneous transmit/receive operation.
* * @param[in] spip pointer to the @p SPIDriver object
- * @param n number of words to be exchanged - * @param rxbuf the pointer to the receive buffer, if @p NULL is specified then
- * the input data is discarded.
- * Note that the buffer is organized as an uint8_t array for
- * data sizes below or equal to 8 bits else it is organized as
- * an uint16_t array.
- * @param txbuf the pointer to the transmit buffer, if @p NULL is specified all
- * ones are transmitted.
- * Note that the buffer is organized as an uint8_t array for
- * data sizes below or equal to 8 bits else it is organized as
- * an uint16_t array. + * @param[in] n number of words to be exchanged + * @param[in] txbuf the pointer to the transmit buffer. Note that the buffer is
+ * organized as an uint8_t array for data sizes below or equal
+ * to 8 bits else it is organized as an uint16_t array. + * @param[out] rxbuf the pointer to the receive buffer. Note that the buffer is
+ * organized as an uint8_t array for data sizes below or equal
+ * to 8 bits else it is organized as an uint16_t array.
*/
-msg_t spiExchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf) {
+msg_t spiExchange(SPIDriver *spip, size_t n, void *txbuf, void *rxbuf) {
chDbgCheck((spip != NULL) && (n > 0) && (rxbuf != NULL) && (txbuf != NULL),
"spiExchange");
@@ -145,15 +141,17 @@ msg_t spiExchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf) { "spiExchange(), #1",
"not active");
- return spi_lld_exchange(spip, n, rxbuf, txbuf);
+ return spi_lld_exchange(spip, n, txbuf, rxbuf);
}
/**
* @brief Sends data ever the SPI bus.
*
* @param[in] spip pointer to the @p SPIDriver object
- * @param n number of words to send
- * @param txbuf the pointer to the transmit buffer
+ * @param[in] n number of words to send
+ * @param[in] txbuf the pointer to the transmit buffer. Note that the buffer is
+ * organized as an uint8_t array for data sizes below or equal
+ * to 8 bits else it is organized as an uint16_t array.
* @return The operation status is returned.
* @retval RDY_OK operation complete.
* @retval RDY_RESET hardware failure.
@@ -176,8 +174,10 @@ msg_t spiSend(SPIDriver *spip, size_t n, void *txbuf) { * @brief Receives data from the SPI bus.
*
* @param[in] spip pointer to the @p SPIDriver object
- * @param n number of words to receive
- * @param rxbuf the pointer to the receive buffer
+ * @param[in] n number of words to receive
+ * @param[out] rxbuf the pointer to the receive buffer. Note that the buffer is
+ * organized as an uint8_t array for data sizes below or equal
+ * to 8 bits else it is organized as an uint16_t array.
* @return The operation status is returned.
* @retval RDY_OK operation complete.
* @retval RDY_RESET hardware failure.
diff --git a/os/io/spi.h b/os/io/spi.h index e0a163db2..b8e434cd5 100644 --- a/os/io/spi.h +++ b/os/io/spi.h @@ -59,7 +59,7 @@ extern "C" { void spiStop(SPIDriver *spip);
void spiSelect(SPIDriver *spip);
void spiUnselect(SPIDriver *spip);
- msg_t spiExchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf);
+ msg_t spiExchange(SPIDriver *spip, size_t n, void *txbuf, void *rxbuf);
msg_t spiSend(SPIDriver *spip, size_t n, void *txbuf);
msg_t spiReceive(SPIDriver *spip, size_t n, void *rxbuf);
#if SPI_USE_MUTUAL_EXCLUSION
diff --git a/os/io/templates/spi_lld.c b/os/io/templates/spi_lld.c index c212946e0..dc2efca24 100644 --- a/os/io/templates/spi_lld.c +++ b/os/io/templates/spi_lld.c @@ -92,9 +92,13 @@ void spi_lld_unselect(SPIDriver *spip) { * @details This function performs a simultaneous transmit/receive operation.
*
* @param[in] spip pointer to the @p SPIDriver object
- * @param n number of words to exchange
- * @param rxbuf the pointer to the receive buffer
- * @param txbuf the pointer to the transmit buffer
+ * @param[in] n number of words to exchange
+ * @param[in] txbuf the pointer to the transmit buffer. Note that the buffer is
+ * organized as an uint8_t array for data sizes below or equal
+ * to 8 bits else it is organized as an uint16_t array.
+ * @param[out] rxbuf the pointer to the receive buffer. Note that the buffer is
+ * organized as an uint8_t array for data sizes below or equal
+ * to 8 bits else it is organized as an uint16_t array.
* @return The operation status is returned.
* @retval RDY_OK operation complete.
* @retval RDY_RESET hardware failure.
@@ -110,8 +114,10 @@ msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf) { * @brief Sends data ever the SPI bus.
*
* @param[in] spip pointer to the @p SPIDriver object
- * @param n number of words to send
- * @param txbuf the pointer to the transmit buffer
+ * @param[in] n number of words to send
+ * @param[in] txbuf the pointer to the transmit buffer. Note that the buffer is
+ * organized as an uint8_t array for data sizes below or equal
+ * to 8 bits else it is organized as an uint16_t array.
* @return The operation status is returned.
* @retval RDY_OK operation complete.
* @retval RDY_RESET hardware failure.
@@ -127,8 +133,10 @@ msg_t spi_lld_send(SPIDriver *spip, size_t n, void *txbuf) { * @brief Receives data from the SPI bus.
*
* @param[in] spip pointer to the @p SPIDriver object
- * @param n number of words to receive
- * @param rxbuf the pointer to the receive buffer
+ * @param[in] n number of words to receive
+ * @param[out] rxbuf the pointer to the receive buffer. Note that the buffer is
+ * organized as an uint8_t array for data sizes below or equal
+ * to 8 bits else it is organized as an uint16_t array.
* @return The operation status is returned.
* @retval RDY_OK operation complete.
* @retval RDY_RESET hardware failure.
diff --git a/os/io/templates/spi_lld.h b/os/io/templates/spi_lld.h index 4017d2418..e25dc86dd 100644 --- a/os/io/templates/spi_lld.h +++ b/os/io/templates/spi_lld.h @@ -94,7 +94,7 @@ extern "C" { void spi_lld_stop(SPIDriver *spip);
void spi_lld_select(SPIDriver *spip);
void spi_lld_unselect(SPIDriver *spip);
- msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf);
+ msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *txbuf, void *rxbuf);
msg_t spi_lld_send(SPIDriver *spip, size_t n, void *txbuf);
msg_t spi_lld_receive(SPIDriver *spip, size_t n, void *rxbuf);
#ifdef __cplusplus
|