Skip to content

Commit 113688a

Browse files
committed
espressif SPI: wait_for_lock impl specific to FreeRTOS
1 parent c2ab753 commit 113688a

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

  • ports/espressif/common-hal/busio

ports/espressif/common-hal/busio/SPI.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,11 +157,17 @@ bool common_hal_busio_spi_configure(busio_spi_obj_t *self,
157157
return true;
158158
}
159159

160-
bool common_hal_busio_spi_try_lock(busio_spi_obj_t *self) {
160+
// Wait as long as needed for the lock. This is used by SD card access from USB.
161+
// Overrides the default busy-wait implementation in shared-bindings/busio/SPI.c
162+
bool common_hal_busio_spi_wait_for_lock(busio_spi_obj_t *self, uint32_t timeout_ms) {
161163
if (common_hal_busio_spi_deinited(self)) {
162164
return false;
163165
}
164-
return xSemaphoreTake(self->mutex, 0) == pdTRUE;
166+
return xSemaphoreTake(self->mutex, pdMS_TO_TICKS(timeout_ms)) == pdTRUE;
167+
}
168+
169+
bool common_hal_busio_spi_try_lock(busio_spi_obj_t *self) {
170+
return common_hal_busio_spi_wait_for_lock(self, 0);
165171
}
166172

167173
bool common_hal_busio_spi_has_lock(busio_spi_obj_t *self) {

0 commit comments

Comments
 (0)