Skip to content

Commit 957f818

Browse files
authored
fixing beginTransaction thread safety
1 parent 534978d commit 957f818

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

cores/esp32/esp32-hal-spi.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -888,13 +888,23 @@ void spiTransferBits(spi_t * spi, uint32_t data, uint32_t * out, uint8_t bits)
888888
#define MSB_24_SET(var, val) { uint8_t * d = (uint8_t *)&(val); (var) = d[2] | (d[1] << 8) | (d[0] << 16); }
889889
#define MSB_16_SET(var, val) { (var) = (((val) & 0xFF00) >> 8) | (((val) & 0xFF) << 8); }
890890
#define MSB_PIX_SET(var, val) { uint8_t * d = (uint8_t *)&(val); (var) = d[1] | (d[0] << 8) | (d[3] << 16) | (d[2] << 24); }
891-
891+
void spiLock(spi_t * spi){
892+
if(!spi) {
893+
return;
894+
}
895+
SPI_MUTEX_LOCK();
896+
}
897+
void spiUnlock(spi_t * spi){
898+
if(!spi) {
899+
return;
900+
}
901+
SPI_MUTEX_UNLOCK();
902+
}
892903
void spiTransaction(spi_t * spi, uint32_t clockDiv, uint8_t dataMode, uint8_t bitOrder)
893904
{
894905
if(!spi) {
895906
return;
896907
}
897-
SPI_MUTEX_LOCK();
898908
spi->dev->clock.val = clockDiv;
899909
switch (dataMode) {
900910
case SPI_MODE1:
@@ -945,7 +955,6 @@ void spiSimpleTransaction(spi_t * spi)
945955
if(!spi) {
946956
return;
947957
}
948-
SPI_MUTEX_LOCK();
949958
}
950959

951960
void spiEndTransaction(spi_t * spi)

0 commit comments

Comments
 (0)