From c7866bfce4197bc5ad4c4c4a9c9a89e5a0e41129 Mon Sep 17 00:00:00 2001 From: Cristian Maglie <c.maglie@arduino.cc> Date: Thu, 11 Sep 2014 14:07:16 +0200 Subject: [PATCH] Added SPI block-transfer method --- libraries/SPI/SPI.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libraries/SPI/SPI.h b/libraries/SPI/SPI.h index b40c84cf..333a2f4e 100644 --- a/libraries/SPI/SPI.h +++ b/libraries/SPI/SPI.h @@ -318,6 +318,7 @@ class SPIClass { SPIClass(SERCOM *p_sercom, uint8_t uc_pinMISO, uint8_t uc_pinSCK, uint8_t uc_pinMOSI); byte transfer(uint8_t data); + inline void transfer(void *buf, size_t count); // Transaction Functions void usingInterrupt(uint8_t interruptNumber); @@ -342,6 +343,14 @@ class SPIClass { uint8_t _uc_pinSCK; }; +void SPIClass::transfer(void *buf, size_t count) +{ + // TODO: Optimize for faster block-transfer + uint8_t *buffer = reinterpret_cast<uint8_t *>(buf); + for (size_t i=0; i<count; i++) + buffer[i] = transfer(buffer[i]); +} + #if SPI_INTERFACES_COUNT > 0 extern SPIClass SPI; #endif -- GitLab