Skip to content

Commit fec8ecc

Browse files
Merge branch 'greiman-SPI_const_qualifier'
2 parents 347a1e3 + 9e539ce commit fec8ecc

File tree

4 files changed

+25
-25
lines changed

4 files changed

+25
-25
lines changed

STM32F1/libraries/SPI/src/SPI.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -350,10 +350,10 @@ void SPIClass::write(uint16 data, uint32 n)
350350
while ( (regs->SR & SPI_SR_BSY) != 0); // wait until BSY=0 before returning
351351
}
352352

353-
void SPIClass::write(void *data, uint32 length)
353+
void SPIClass::write(const void *data, uint32 length)
354354
{
355355
spi_dev * spi_d = _currentSetting->spi_d;
356-
spi_tx(spi_d, (void*)data, length); // data can be array of bytes or words
356+
spi_tx(spi_d, data, length); // data can be array of bytes or words
357357
while (spi_is_tx_empty(spi_d) == 0); // "5. Wait until TXE=1 ..."
358358
while (spi_is_busy(spi_d) != 0); // "... and then wait until BSY=0 before disabling the SPI."
359359
}
@@ -391,7 +391,7 @@ uint16_t SPIClass::transfer16(uint16_t data) const
391391
* On exit TX buffer is not modified, and RX buffer cotains the received data.
392392
* Still in progress.
393393
*/
394-
void SPIClass::dmaTransferSet(void *transmitBuf, void *receiveBuf) {
394+
void SPIClass::dmaTransferSet(const void *transmitBuf, void *receiveBuf) {
395395
dma_init(_currentSetting->spiDmaDev);
396396
//spi_rx_dma_enable(_currentSetting->spi_d);
397397
//spi_tx_dma_enable(_currentSetting->spi_d);
@@ -401,11 +401,11 @@ void SPIClass::dmaTransferSet(void *transmitBuf, void *receiveBuf) {
401401
if (!transmitBuf) {
402402
transmitBuf = &ff;
403403
dma_setup_transfer(_currentSetting->spiDmaDev, _currentSetting->spiTxDmaChannel, &_currentSetting->spi_d->regs->DR, dma_bit_size,
404-
transmitBuf, dma_bit_size, (DMA_FROM_MEM));// Transmit FF repeatedly
404+
(volatile void*)transmitBuf, dma_bit_size, (DMA_FROM_MEM));// Transmit FF repeatedly
405405
}
406406
else {
407407
dma_setup_transfer(_currentSetting->spiDmaDev, _currentSetting->spiTxDmaChannel, &_currentSetting->spi_d->regs->DR, dma_bit_size,
408-
transmitBuf, dma_bit_size, (DMA_MINC_MODE | DMA_FROM_MEM ));// Transmit buffer DMA
408+
(volatile void*)transmitBuf, dma_bit_size, (DMA_MINC_MODE | DMA_FROM_MEM ));// Transmit buffer DMA
409409
}
410410
dma_set_priority(_currentSetting->spiDmaDev, _currentSetting->spiTxDmaChannel, DMA_PRIORITY_LOW);
411411
dma_set_priority(_currentSetting->spiDmaDev, _currentSetting->spiRxDmaChannel, DMA_PRIORITY_VERY_HIGH);
@@ -451,7 +451,7 @@ uint8 SPIClass::dmaTransferRepeat(uint16 length) {
451451
* Still in progress.
452452
*/
453453

454-
uint8 SPIClass::dmaTransfer(void *transmitBuf, void *receiveBuf, uint16 length) {
454+
uint8 SPIClass::dmaTransfer(const void *transmitBuf, void *receiveBuf, uint16 length) {
455455
dmaTransferSet(transmitBuf, receiveBuf);
456456
return dmaTransferRepeat(length);
457457
}
@@ -463,12 +463,12 @@ uint8 SPIClass::dmaTransfer(void *transmitBuf, void *receiveBuf, uint16 length)
463463
* 2016 - stevstrong - reworked to automatically detect bit size from SPI setting
464464
*/
465465

466-
void SPIClass::dmaSendSet(void * transmitBuf, bool minc) {
466+
void SPIClass::dmaSendSet(const void * transmitBuf, bool minc) {
467467
uint32 flags = ( (DMA_MINC_MODE*minc) | DMA_FROM_MEM | DMA_TRNS_CMPLT);
468468
dma_init(_currentSetting->spiDmaDev);
469469
dma_xfer_size dma_bit_size = (_currentSetting->dataSize==DATA_SIZE_16BIT) ? DMA_SIZE_16BITS : DMA_SIZE_8BITS;
470470
dma_setup_transfer(_currentSetting->spiDmaDev, _currentSetting->spiTxDmaChannel, &_currentSetting->spi_d->regs->DR, dma_bit_size,
471-
transmitBuf, dma_bit_size, flags);// Transmit buffer DMA
471+
(volatile void*)transmitBuf, dma_bit_size, flags);// Transmit buffer DMA
472472
dma_set_priority(_currentSetting->spiDmaDev, _currentSetting->spiTxDmaChannel, DMA_PRIORITY_LOW);
473473
}
474474

@@ -498,12 +498,12 @@ uint8 SPIClass::dmaSendRepeat(uint16 length) {
498498
return b;
499499
}
500500

501-
uint8 SPIClass::dmaSend(void * transmitBuf, uint16 length, bool minc) {
501+
uint8 SPIClass::dmaSend(const void * transmitBuf, uint16 length, bool minc) {
502502
dmaSendSet(transmitBuf, minc);
503503
return dmaSendRepeat(length);
504504
}
505505

506-
uint8 SPIClass::dmaSendAsync(void * transmitBuf, uint16 length, bool minc) {
506+
uint8 SPIClass::dmaSendAsync(const void * transmitBuf, uint16 length, bool minc) {
507507
uint8 b = 0;
508508

509509
if (_currentSetting->state != SPI_STATE_READY)
@@ -529,7 +529,7 @@ uint8 SPIClass::dmaSendAsync(void * transmitBuf, uint16 length, bool minc) {
529529
// TX
530530
dma_xfer_size dma_bit_size = (_currentSetting->dataSize==DATA_SIZE_16BIT) ? DMA_SIZE_16BITS : DMA_SIZE_8BITS;
531531
dma_setup_transfer(_currentSetting->spiDmaDev, _currentSetting->spiTxDmaChannel, &_currentSetting->spi_d->regs->DR, dma_bit_size,
532-
transmitBuf, dma_bit_size, flags);// Transmit buffer DMA
532+
(volatile void*)transmitBuf, dma_bit_size, flags);// Transmit buffer DMA
533533
dma_set_num_transfers(_currentSetting->spiDmaDev, _currentSetting->spiTxDmaChannel, length);
534534
dma_clear_isr_bits(_currentSetting->spiDmaDev, _currentSetting->spiTxDmaChannel);
535535
dma_enable(_currentSetting->spiDmaDev, _currentSetting->spiTxDmaChannel);// enable transmit

STM32F1/libraries/SPI/src/SPI.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ class SPIClass {
278278
* @param buffer Bytes/words to transmit.
279279
* @param length Number of bytes/words in buffer to transmit.
280280
*/
281-
void write(void * buffer, uint32 length);
281+
void write(const void * buffer, uint32 length);
282282

283283
/**
284284
* @brief Transmit a byte, then return the next unread byte.
@@ -301,8 +301,8 @@ class SPIClass {
301301
* @param receiveBuf buffer Bytes to save received data.
302302
* @param length Number of bytes in buffer to transmit.
303303
*/
304-
uint8 dmaTransfer(void * transmitBuf, void * receiveBuf, uint16 length);
305-
void dmaTransferSet(void *transmitBuf, void *receiveBuf);
304+
uint8 dmaTransfer(const void * transmitBuf, void * receiveBuf, uint16 length);
305+
void dmaTransferSet(const void *transmitBuf, void *receiveBuf);
306306
uint8 dmaTransferRepeat(uint16 length);
307307

308308
/**
@@ -315,11 +315,11 @@ class SPIClass {
315315
* @param length Number of bytes in buffer to transmit.
316316
* @param minc Set to use Memory Increment mode, clear to use Circular mode.
317317
*/
318-
uint8 dmaSend(void * transmitBuf, uint16 length, bool minc = 1);
319-
void dmaSendSet(void * transmitBuf, bool minc);
318+
uint8 dmaSend(const void * transmitBuf, uint16 length, bool minc = 1);
319+
void dmaSendSet(const void * transmitBuf, bool minc);
320320
uint8 dmaSendRepeat(uint16 length);
321321

322-
uint8 dmaSendAsync(void * transmitBuf, uint16 length, bool minc = 1);
322+
uint8 dmaSendAsync(const void * transmitBuf, uint16 length, bool minc = 1);
323323
/*
324324
* Pin accessors
325325
*/

STM32F4/libraries/SPI/src/SPI.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ void SPIClass::write(uint16 data, uint32 n)
372372
while ( (regs->SR & SPI_SR_BSY) != 0); // wait until BSY=0 before returning
373373
}
374374

375-
void SPIClass::write(void *data, uint32 length)
375+
void SPIClass::write(const void *data, uint32 length)
376376
{
377377
spi_dev * spi_d = _currentSetting->spi_d;
378378
spi_tx(spi_d, (void*)data, length); // data can be array of bytes or words
@@ -407,7 +407,7 @@ uint16_t SPIClass::transfer16(uint16_t wr_data) const
407407
* On exit TX buffer is not modified, and RX buffer contains the received data.
408408
* Still in progress.
409409
*/
410-
uint8 SPIClass::dmaTransfer(void * transmitBuf, void * receiveBuf, uint16 length)
410+
uint8 SPIClass::dmaTransfer(const void * transmitBuf, void * receiveBuf, uint16 length)
411411
{
412412
if (length == 0) return 0;
413413

@@ -442,7 +442,7 @@ uint8 SPIClass::dmaTransfer(void * transmitBuf, void * receiveBuf, uint16 length
442442
_currentSetting->spiDmaChannel,
443443
dma_bit_size,
444444
&_currentSetting->spi_d->regs->DR, // peripheral address
445-
transmitBuf, // memory bank 0 address
445+
(volatile void*)transmitBuf, // memory bank 0 address
446446
NULL, // memory bank 1 address
447447
flags
448448
);
@@ -477,7 +477,7 @@ uint8 SPIClass::dmaTransfer(void * transmitBuf, void * receiveBuf, uint16 length
477477
* Still in progress.
478478
* 2016 - stevstrong - reworked to automatically detect bit size from SPI setting
479479
*/
480-
uint8 SPIClass::dmaSend(void * transmitBuf, uint16 length, bool minc)
480+
uint8 SPIClass::dmaSend(const void * transmitBuf, uint16 length, bool minc)
481481
{
482482
if (length == 0) return 0;
483483
uint8 b = 0;
@@ -489,7 +489,7 @@ uint8 SPIClass::dmaSend(void * transmitBuf, uint16 length, bool minc)
489489
_currentSetting->spiDmaChannel,
490490
dma_bit_size,
491491
&_currentSetting->spi_d->regs->DR, // peripheral address
492-
transmitBuf, // memory bank 0 address
492+
(volatile void*)transmitBuf, // memory bank 0 address
493493
NULL, // memory bank 1 address
494494
( (DMA_MINC_MODE*minc) | DMA_FROM_MEM ) //| DMA_TRNS_CMPLT ) // flags
495495
);// Transmit buffer DMA

STM32F4/libraries/SPI/src/SPI.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ class SPIClass {
248248
* @param buffer Bytes/words to transmit.
249249
* @param length Number of bytes/words in buffer to transmit.
250250
*/
251-
void write(void * buffer, uint32 length);
251+
void write(const void * buffer, uint32 length);
252252

253253
/**
254254
* @brief Transmit a byte, then return the next unread byte.
@@ -272,7 +272,7 @@ class SPIClass {
272272
* @param receiveBuf buffer Bytes to save received data.
273273
* @param length Number of bytes in buffer to transmit.
274274
*/
275-
uint8 dmaTransfer(void * transmitBuf, void * receiveBuf, uint16 length);
275+
uint8 dmaTransfer(const void * transmitBuf, void * receiveBuf, uint16 length);
276276

277277
/**
278278
* @brief Sets up a DMA Transmit for SPI 8 or 16 bit transfer mode.
@@ -283,7 +283,7 @@ class SPIClass {
283283
* @param data buffer half words to transmit,
284284
* @param length Number of bytes in buffer to transmit.
285285
*/
286-
uint8 dmaSend(void * transmitBuf, uint16 length, bool minc = 1);
286+
uint8 dmaSend(const void * transmitBuf, uint16 length, bool minc = 1);
287287
#endif
288288

289289
/*

0 commit comments

Comments
 (0)