summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHierophect <hierophect@gmail.com>2019-09-30 13:33:20 -0400
committerHierophect <hierophect@gmail.com>2019-09-30 13:33:20 -0400
commit1f90cffc896b84cdc571aef88dfe09655471adfe (patch)
tree20ebeec7f58edb1d4f3b29ab0d69d8cd8afe2403
parent56eb9666ead5a6d59e1bbc7a6850d9420cd8385b (diff)
protect against edge case
-rw-r--r--ports/stm32f4/common-hal/busio/SPI.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/ports/stm32f4/common-hal/busio/SPI.c b/ports/stm32f4/common-hal/busio/SPI.c
index a13b3dfdb..d64ec542a 100644
--- a/ports/stm32f4/common-hal/busio/SPI.c
+++ b/ports/stm32f4/common-hal/busio/SPI.c
@@ -97,10 +97,12 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
if (mcu_spi_mosi_list[j].pin == mosi) {
//miso
for(uint k=0; k<miso_len;k++) {
- if ((mcu_spi_miso_list[k].pin == miso)
+ if ((mcu_spi_miso_list[k].pin == miso) //everything needs the same index
&& (mcu_spi_sck_list[i].spi_index == mcu_spi_mosi_list[j].spi_index)
&& (mcu_spi_sck_list[i].spi_index == mcu_spi_miso_list[k].spi_index)) {
- //everything needs the same index
+ //keep looking if the SPI is taken, edge case
+ if(reserved_spi[mcu_spi_sck_list[i].spi_index-1]) continue;
+ //store pins if not
self->sck = &mcu_spi_sck_list[j];
self->mosi = &mcu_spi_mosi_list[j];
self->miso = &mcu_spi_miso_list[k];