From 2274922d5e6f988870cdbc9d9f69573299d858dd Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Sun, 7 Sep 2014 14:24:23 +0200 Subject: [PATCH] Ethernet library now use SPI_HAS_EXTENDED_CS_PIN_HANDLING to detect when Extended SPI API is available --- libraries/Ethernet/src/utility/w5100.cpp | 10 +++--- libraries/Ethernet/src/utility/w5100.h | 40 ++++++++++++------------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/libraries/Ethernet/src/utility/w5100.cpp b/libraries/Ethernet/src/utility/w5100.cpp index 5af61ae03..48409e03e 100644 --- a/libraries/Ethernet/src/utility/w5100.cpp +++ b/libraries/Ethernet/src/utility/w5100.cpp @@ -26,7 +26,7 @@ void W5100Class::init(void) { delay(300); -#if defined(ARDUINO_ARCH_AVR) +#if !defined(SPI_HAS_EXTENDED_CS_PIN_HANDLING) SPI.begin(); initSS(); #else @@ -136,7 +136,7 @@ void W5100Class::read_data(SOCKET s, volatile uint16_t src, volatile uint8_t *ds uint8_t W5100Class::write(uint16_t _addr, uint8_t _data) { -#if defined(ARDUINO_ARCH_AVR) +#if !defined(SPI_HAS_EXTENDED_CS_PIN_HANDLING) setSS(); SPI.transfer(0xF0); SPI.transfer(_addr >> 8); @@ -156,7 +156,7 @@ uint16_t W5100Class::write(uint16_t _addr, const uint8_t *_buf, uint16_t _len) { for (uint16_t i=0; i<_len; i++) { -#if defined(ARDUINO_ARCH_AVR) +#if !defined(SPI_HAS_EXTENDED_CS_PIN_HANDLING) setSS(); SPI.transfer(0xF0); SPI.transfer(_addr >> 8); @@ -177,7 +177,7 @@ uint16_t W5100Class::write(uint16_t _addr, const uint8_t *_buf, uint16_t _len) uint8_t W5100Class::read(uint16_t _addr) { -#if defined(ARDUINO_ARCH_AVR) +#if !defined(SPI_HAS_EXTENDED_CS_PIN_HANDLING) setSS(); SPI.transfer(0x0F); SPI.transfer(_addr >> 8); @@ -197,7 +197,7 @@ uint16_t W5100Class::read(uint16_t _addr, uint8_t *_buf, uint16_t _len) { for (uint16_t i=0; i<_len; i++) { -#if defined(ARDUINO_ARCH_AVR) +#if !defined(SPI_HAS_EXTENDED_CS_PIN_HANDLING) setSS(); SPI.transfer(0x0F); SPI.transfer(_addr >> 8); diff --git a/libraries/Ethernet/src/utility/w5100.h b/libraries/Ethernet/src/utility/w5100.h index fd9ea35ec..7c1a1c7e2 100644 --- a/libraries/Ethernet/src/utility/w5100.h +++ b/libraries/Ethernet/src/utility/w5100.h @@ -14,7 +14,7 @@ #define SPI_CS 10 -#if defined(ARDUINO_ARCH_AVR) +#if !defined(SPI_HAS_EXTENDED_CS_PIN_HANDLING) #define SPI_ETHERNET_SETTINGS SPISettings(4000000, MSBFIRST, SPI_MODE0) #else #define SPI_ETHERNET_SETTINGS SPI_CS,SPISettings(4000000, MSBFIRST, SPI_MODE0) @@ -330,25 +330,25 @@ private: uint16_t RBASE[SOCKETS]; // Rx buffer base address private: -#if defined(ARDUINO_ARCH_AVR) -#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - inline static void initSS() { DDRB |= _BV(4); }; - inline static void setSS() { PORTB &= ~_BV(4); }; - inline static void resetSS() { PORTB |= _BV(4); }; -#elif defined(__AVR_ATmega32U4__) - inline static void initSS() { DDRB |= _BV(6); }; - inline static void setSS() { PORTB &= ~_BV(6); }; - inline static void resetSS() { PORTB |= _BV(6); }; -#elif defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB162__) - inline static void initSS() { DDRB |= _BV(0); }; - inline static void setSS() { PORTB &= ~_BV(0); }; - inline static void resetSS() { PORTB |= _BV(0); }; -#else - inline static void initSS() { DDRB |= _BV(2); }; - inline static void setSS() { PORTB &= ~_BV(2); }; - inline static void resetSS() { PORTB |= _BV(2); }; -#endif -#endif // ARDUINO_ARCH_AVR +#if !defined(SPI_HAS_EXTENDED_CS_PIN_HANDLING) + #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + inline static void initSS() { DDRB |= _BV(4); }; + inline static void setSS() { PORTB &= ~_BV(4); }; + inline static void resetSS() { PORTB |= _BV(4); }; + #elif defined(__AVR_ATmega32U4__) + inline static void initSS() { DDRB |= _BV(6); }; + inline static void setSS() { PORTB &= ~_BV(6); }; + inline static void resetSS() { PORTB |= _BV(6); }; + #elif defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB162__) + inline static void initSS() { DDRB |= _BV(0); }; + inline static void setSS() { PORTB &= ~_BV(0); }; + inline static void resetSS() { PORTB |= _BV(0); }; + #else + inline static void initSS() { DDRB |= _BV(2); }; + inline static void setSS() { PORTB &= ~_BV(2); }; + inline static void resetSS() { PORTB |= _BV(2); }; + #endif +#endif // !SPI_HAS_EXTENDED_CS_PIN_HANDLING }; extern W5100Class W5100;