From 28cc900343f88dd562a57024d9bba4601d2113df Mon Sep 17 00:00:00 2001 From: Robin Giese Date: Sun, 23 Aug 2020 21:18:19 -0700 Subject: [PATCH] Help library compile for Spark/Particle --- Adafruit_SPIDevice.cpp | 11 ++++++++++- Adafruit_SPIDevice.h | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Adafruit_SPIDevice.cpp b/Adafruit_SPIDevice.cpp index 50eece8..353f286 100644 --- a/Adafruit_SPIDevice.cpp +++ b/Adafruit_SPIDevice.cpp @@ -112,7 +112,16 @@ bool Adafruit_SPIDevice::begin(void) { void Adafruit_SPIDevice::transfer(uint8_t *buffer, size_t len) { if (_spi) { // hardware SPI is easy - _spi->transfer(buffer, len); + #ifdef SPARK + // Spark uses asynchronous DMA for multi-byte transfers; + // just use the single-byte method for sync transfers. + for (size_t i = 0; i < len; i++) { + _spi->transfer(buffer[i]); + } + #else + _spi->transfer(buffer, len); + #endif + return; } diff --git a/Adafruit_SPIDevice.h b/Adafruit_SPIDevice.h index f1ef0cc..764f316 100644 --- a/Adafruit_SPIDevice.h +++ b/Adafruit_SPIDevice.h @@ -5,7 +5,7 @@ // some modern SPI definitions don't have BitOrder enum #if (defined(__AVR__) && !defined(ARDUINO_ARCH_MEGAAVR)) || \ - defined(ESP8266) || defined(TEENSYDUINO) || \ + defined(ESP8266) || defined(TEENSYDUINO) || defined(SPARK) || \ defined(ARDUINO_ARCH_SPRESENSE) || defined(ARDUINO_attinyxy7) || \ defined(ARDUINO_attinyxy6) || defined(ARDUINO_attinyxy4) || \ defined(ARDUINO_attinyxy2) || defined(ARDUINO_AVR_ATmega4809) || \