@@ -57,7 +57,7 @@ void SPIClass::begin(uint8_t _pin)
5757 return ;
5858
5959 idx = pinIdx (_pin, ADD_NEW_PIN);
60- if (idx = = NB_SPI_SETTINGS)
60+ if (idx > = NB_SPI_SETTINGS)
6161 return ;
6262
6363 if ((_pin != CS_PIN_CONTROLLED_BY_USER) && (_spi.pin_ssel == NC)) {
@@ -93,7 +93,7 @@ void SPIClass::beginTransaction(uint8_t _pin, SPISettings settings)
9393 return ;
9494
9595 idx = pinIdx (_pin, ADD_NEW_PIN);
96- if (idx = = NB_SPI_SETTINGS) {
96+ if (idx > = NB_SPI_SETTINGS) {
9797 return ;
9898 }
9999
@@ -139,7 +139,7 @@ void SPIClass::setBitOrder(uint8_t _pin, BitOrder _bitOrder)
139139 return ;
140140
141141 uint8_t idx = pinIdx (_pin, GET_IDX);
142- if (idx = = NB_SPI_SETTINGS) {
142+ if (idx > = NB_SPI_SETTINGS) {
143143 return ;
144144 }
145145
@@ -162,7 +162,7 @@ void SPIClass::setDataMode(uint8_t _pin, uint8_t _mode)
162162 return ;
163163
164164 uint8_t idx = pinIdx (_pin, GET_IDX);
165- if (idx = = NB_SPI_SETTINGS) {
165+ if (idx > = NB_SPI_SETTINGS) {
166166 return ;
167167 }
168168
@@ -191,7 +191,7 @@ void SPIClass::setClockDivider(uint8_t _pin, uint8_t _divider)
191191 return ;
192192
193193 uint8_t idx = pinIdx (_pin, GET_IDX);
194- if (idx = = NB_SPI_SETTINGS) {
194+ if (idx > = NB_SPI_SETTINGS) {
195195 return ;
196196 }
197197
@@ -234,7 +234,7 @@ byte SPIClass::transfer(uint8_t _pin, uint8_t data, SPITransferMode _mode)
234234
235235 if (_pin != _CSpin) {
236236 uint8_t idx = pinIdx (_pin, GET_IDX);
237- if (idx = = NB_SPI_SETTINGS) {
237+ if (idx > = NB_SPI_SETTINGS) {
238238 return rx_buffer;
239239 }
240240 spi_init (&_spi, spiSettings[idx].clk ,
@@ -262,22 +262,23 @@ uint16_t SPIClass::transfer16(uint8_t _pin, uint16_t data, SPITransferMode _mode
262262 if (_pin > NUM_DIGITAL_PINS)
263263 return rx_buffer;
264264
265- if (spiSettings[ _pin]. msb ) {
266- tmp = ((data & 0xff00 ) >> 8 ) | ((data & 0xff ) << 8 );
267- data = tmp ;
265+ uint8_t idx = pinIdx ( _pin, GET_IDX);
266+ if (idx >= NB_SPI_SETTINGS) {
267+ return rx_buffer ;
268268 }
269269
270270 if (_pin != _CSpin) {
271- uint8_t idx = pinIdx (_pin, GET_IDX);
272- if (idx == NB_SPI_SETTINGS) {
273- return rx_buffer;
274- }
275271 spi_init (&_spi, spiSettings[idx].clk ,
276272 spiSettings[idx].dMode ,
277273 spiSettings[idx].msb );
278274 _CSpin = _pin;
279275 }
280276
277+ if (spiSettings[idx].msb ) {
278+ tmp = ((data & 0xff00 ) >> 8 ) | ((data & 0xff ) << 8 );
279+ data = tmp;
280+ }
281+
281282 if ((_pin != CS_PIN_CONTROLLED_BY_USER) && (_spi.pin_ssel == NC))
282283 digitalWrite (_pin, LOW);
283284
@@ -286,7 +287,7 @@ uint16_t SPIClass::transfer16(uint8_t _pin, uint16_t data, SPITransferMode _mode
286287 if ((_pin != CS_PIN_CONTROLLED_BY_USER) && (_mode == SPI_LAST) && (_spi.pin_ssel == NC))
287288 digitalWrite (_pin, HIGH);
288289
289- if (spiSettings[_pin ].msb ) {
290+ if (spiSettings[idx ].msb ) {
290291 tmp = ((rx_buffer & 0xff00 ) >> 8 ) | ((rx_buffer & 0xff ) << 8 );
291292 rx_buffer = tmp;
292293 }
@@ -301,7 +302,7 @@ void SPIClass::transfer(uint8_t _pin, void *_buf, size_t _count, SPITransferMode
301302
302303 if (_pin != _CSpin) {
303304 uint8_t idx = pinIdx (_pin, GET_IDX);
304- if (idx = = NB_SPI_SETTINGS) {
305+ if (idx > = NB_SPI_SETTINGS) {
305306 return ;
306307 }
307308 spi_init (&_spi, spiSettings[idx].clk ,
@@ -326,7 +327,7 @@ void SPIClass::transfer(byte _pin, void *_bufout, void *_bufin, size_t _count, S
326327
327328 if (_pin != _CSpin) {
328329 uint8_t idx = pinIdx (_pin, GET_IDX);
329- if (idx = = NB_SPI_SETTINGS) {
330+ if (idx > = NB_SPI_SETTINGS) {
330331 return ;
331332 }
332333 spi_init (&_spi, spiSettings[idx].clk ,
0 commit comments