@@ -115,6 +115,7 @@ void SPIClass::beginTransaction(uint8_t _pin, SPISettings settings)
115
115
spiSettings[idx].clk = settings.clk ;
116
116
spiSettings[idx].dMode = settings.dMode ;
117
117
spiSettings[idx].bOrder = settings.bOrder ;
118
+ spiSettings[idx].noReceive = settings.noReceive ;
118
119
119
120
if ((_pin != CS_PIN_CONTROLLED_BY_USER) && (_spi.pin_ssel == NC)) {
120
121
pinMode (_pin, OUTPUT);
@@ -262,9 +263,8 @@ byte SPIClass::transfer(uint8_t _pin, uint8_t data, SPITransferMode _mode)
262
263
if (_pin > NUM_DIGITAL_PINS) {
263
264
return rx_buffer;
264
265
}
265
-
266
+ uint8_t idx = pinIdx (_pin, GET_IDX);
266
267
if (_pin != _CSPinConfig) {
267
- uint8_t idx = pinIdx (_pin, GET_IDX);
268
268
if (idx >= NB_SPI_SETTINGS) {
269
269
return rx_buffer;
270
270
}
@@ -278,7 +278,7 @@ byte SPIClass::transfer(uint8_t _pin, uint8_t data, SPITransferMode _mode)
278
278
digitalWrite (_pin, LOW);
279
279
}
280
280
281
- spi_transfer (&_spi, &data, &rx_buffer, sizeof (uint8_t ), SPI_TRANSFER_TIMEOUT);
281
+ spi_transfer (&_spi, &data, &rx_buffer, sizeof (uint8_t ), SPI_TRANSFER_TIMEOUT, spiSettings[idx]. noReceive );
282
282
283
283
if ((_pin != CS_PIN_CONTROLLED_BY_USER) && (_mode == SPI_LAST) && (_spi.pin_ssel == NC)) {
284
284
digitalWrite (_pin, HIGH);
@@ -330,7 +330,8 @@ uint16_t SPIClass::transfer16(uint8_t _pin, uint16_t data, SPITransferMode _mode
330
330
digitalWrite (_pin, LOW);
331
331
}
332
332
333
- spi_transfer (&_spi, (uint8_t *)&data, (uint8_t *)&rx_buffer, sizeof (uint16_t ), SPI_TRANSFER_TIMEOUT);
333
+ spi_transfer (&_spi, (uint8_t *)&data, (uint8_t *)&rx_buffer, sizeof (uint16_t ),
334
+ SPI_TRANSFER_TIMEOUT, spiSettings[idx].noReceive );
334
335
335
336
if ((_pin != CS_PIN_CONTROLLED_BY_USER) && (_mode == SPI_LAST) && (_spi.pin_ssel == NC)) {
336
337
digitalWrite (_pin, HIGH);
@@ -363,9 +364,8 @@ void SPIClass::transfer(uint8_t _pin, void *_buf, size_t _count, SPITransferMode
363
364
if ((_count == 0 ) || (_buf == NULL ) || (_pin > NUM_DIGITAL_PINS)) {
364
365
return ;
365
366
}
366
-
367
+ uint8_t idx = pinIdx (_pin, GET_IDX);
367
368
if (_pin != _CSPinConfig) {
368
- uint8_t idx = pinIdx (_pin, GET_IDX);
369
369
if (idx >= NB_SPI_SETTINGS) {
370
370
return ;
371
371
}
@@ -379,7 +379,8 @@ void SPIClass::transfer(uint8_t _pin, void *_buf, size_t _count, SPITransferMode
379
379
digitalWrite (_pin, LOW);
380
380
}
381
381
382
- spi_transfer (&_spi, ((uint8_t *)_buf), ((uint8_t *)_buf), _count, SPI_TRANSFER_TIMEOUT);
382
+ spi_transfer (&_spi, ((uint8_t *)_buf), ((uint8_t *)_buf), _count,
383
+ SPI_TRANSFER_TIMEOUT, spiSettings[idx].noReceive );
383
384
384
385
if ((_pin != CS_PIN_CONTROLLED_BY_USER) && (_mode == SPI_LAST) && (_spi.pin_ssel == NC)) {
385
386
digitalWrite (_pin, HIGH);
@@ -406,9 +407,8 @@ void SPIClass::transfer(byte _pin, void *_bufout, void *_bufin, size_t _count, S
406
407
if ((_count == 0 ) || (_bufout == NULL ) || (_bufin == NULL ) || (_pin > NUM_DIGITAL_PINS)) {
407
408
return ;
408
409
}
409
-
410
+ uint8_t idx = pinIdx (_pin, GET_IDX);
410
411
if (_pin != _CSPinConfig) {
411
- uint8_t idx = pinIdx (_pin, GET_IDX);
412
412
if (idx >= NB_SPI_SETTINGS) {
413
413
return ;
414
414
}
@@ -422,7 +422,8 @@ void SPIClass::transfer(byte _pin, void *_bufout, void *_bufin, size_t _count, S
422
422
digitalWrite (_pin, LOW);
423
423
}
424
424
425
- spi_transfer (&_spi, ((uint8_t *)_bufout), ((uint8_t *)_bufin), _count, SPI_TRANSFER_TIMEOUT);
425
+ spi_transfer (&_spi, ((uint8_t *)_bufout), ((uint8_t *)_bufin), _count,
426
+ SPI_TRANSFER_TIMEOUT, spiSettings[idx].noReceive );
426
427
427
428
if ((_pin != CS_PIN_CONTROLLED_BY_USER) && (_mode == SPI_LAST) && (_spi.pin_ssel == NC)) {
428
429
digitalWrite (_pin, HIGH);
0 commit comments