mbed

Fork of mbed-dev by mbed official

Revision:
167:e84263d55307
Parent:
165:e614a9f1c9e2
Child:
169:e3b6fe271b81
--- a/targets/TARGET_NORDIC/TARGET_NRF5/spi_api.c	Thu Jun 08 15:02:37 2017 +0100
+++ b/targets/TARGET_NORDIC/TARGET_NRF5/spi_api.c	Wed Jun 21 17:46:44 2017 +0100
@@ -141,11 +141,13 @@
 
     if (p_event->type == NRF_DRV_SPI_EVENT_DONE) {
         p_spi_info->flag.busy = false;
+#if DEVICE_SPI_ASYNCH
         if (p_spi_info->handler) {
             void (*handler)(void) = (void (*)(void))p_spi_info->handler;
             p_spi_info->handler = 0;
             handler();
         }
+#endif
     }
 }
 #define MASTER_EVENT_HANDLER(idx) \
@@ -485,6 +487,20 @@
     return p_spi_info->rx_buf;
 }
 
+int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
+    int total = (tx_length > rx_length) ? tx_length : rx_length;
+
+    for (int i = 0; i < total; i++) {
+        char out = (i < tx_length) ? tx_buffer[i] : 0xff;
+        char in = spi_master_write(obj, out);
+        if (i < rx_length) {
+            rx_buffer[i] = in;
+        }
+    }
+
+    return total;
+}
+
 int spi_slave_receive(spi_t *obj)
 {
     spi_info_t *p_spi_info = SPI_INFO(obj);