Skip to content

Commit 2690fae

Browse files
committed
Moved checks for invalid pin to common-hal/microcontroller/Pin.c
1 parent ed6cc64 commit 2690fae

File tree

5 files changed

+24
-12
lines changed
  • ports
    • atmel-samd/common-hal/microcontroller
    • esp32s2/common-hal/microcontroller
    • nrf/common-hal
    • stm/common-hal/microcontroller

5 files changed

+24
-12
lines changed

ports/atmel-samd/common-hal/microcontroller/Pin.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ void reset_all_pins(void) {
106106
}
107107

108108
void never_reset_pin_number(uint8_t pin_number) {
109+
if (pin_number >= PORT_BITS) {
110+
return;
111+
}
112+
109113
never_reset_pins[GPIO_PORT(pin_number)] |= 1 << GPIO_PIN(pin_number);
110114
}
111115

ports/esp32s2/common-hal/microcontroller/Pin.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ bool apa102_mosi_in_use;
4545
bool apa102_sck_in_use;
4646

4747
void never_reset_pin_number(gpio_num_t pin_number) {
48+
if (pin_number == -1 ) {
49+
return;
50+
}
4851
never_reset_pins[pin_number / 32] |= 1 << pin_number % 32;
4952
}
5053

@@ -54,6 +57,9 @@ void common_hal_never_reset_pin(const mcu_pin_obj_t* pin) {
5457

5558
// Mark pin as free and return it to a quiescent state.
5659
void reset_pin_number(gpio_num_t pin_number) {
60+
if (pin_number == -1 ) {
61+
return;
62+
}
5763
never_reset_pins[pin_number / 32] &= ~(1 << pin_number % 32);
5864
in_use[pin_number / 32] &= ~(1 << pin_number % 32);
5965

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

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,8 @@ void common_hal_busio_spi_never_reset(busio_spi_obj_t *self) {
104104
never_reset[i] = true;
105105

106106
never_reset_pin_number(self->clock_pin_number);
107-
if ( self->MOSI_pin_number != NO_PIN) {
108-
never_reset_pin_number(self->MOSI_pin_number);
109-
}
110-
if ( self->MISO_pin_number != NO_PIN) {
111-
never_reset_pin_number(self->MISO_pin_number);
112-
}
107+
never_reset_pin_number(self->MOSI_pin_number);
108+
never_reset_pin_number(self->MISO_pin_number);
113109
break;
114110
}
115111
}
@@ -208,12 +204,8 @@ void common_hal_busio_spi_deinit(busio_spi_obj_t *self) {
208204
nrfx_spim_uninit(&self->spim_peripheral->spim);
209205

210206
reset_pin_number(self->clock_pin_number);
211-
if ( self->MOSI_pin_number != NO_PIN) {
212-
reset_pin_number(self->MOSI_pin_number);
213-
}
214-
if ( self->MISO_pin_number != NO_PIN) {
215-
reset_pin_number(self->MISO_pin_number);
216-
}
207+
reset_pin_number(self->MOSI_pin_number);
208+
reset_pin_number(self->MISO_pin_number);
217209
}
218210

219211
bool common_hal_busio_spi_configure(busio_spi_obj_t *self, uint32_t baudrate, uint8_t polarity, uint8_t phase, uint8_t bits) {

ports/nrf/common-hal/microcontroller/Pin.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ void reset_pin_number(uint8_t pin_number) {
123123

124124

125125
void never_reset_pin_number(uint8_t pin_number) {
126+
if (pin_number == NO_PIN) {
127+
return;
128+
}
126129
never_reset_pins[nrf_pin_port(pin_number)] |= 1 << nrf_relative_pin_number(pin_number);
127130
}
128131

ports/stm/common-hal/microcontroller/Pin.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ void reset_all_pins(void) {
7070

7171
// Mark pin as free and return it to a quiescent state.
7272
void reset_pin_number(uint8_t pin_port, uint8_t pin_number) {
73+
if ( pin_number == NO_PIN ) {
74+
return;
75+
}
76+
7377
if (pin_port == 0x0F) {
7478
return;
7579
}
@@ -88,6 +92,9 @@ void reset_pin_number(uint8_t pin_port, uint8_t pin_number) {
8892
}
8993

9094
void never_reset_pin_number(uint8_t pin_port, uint8_t pin_number) {
95+
if ( pin_number == NO_PIN ) {
96+
return;
97+
}
9198
never_reset_pins[pin_port] |= 1<<pin_number;
9299
// Make sure never reset pins are also always claimed
93100
claimed_pins[pin_port] |= 1<<pin_number;

0 commit comments

Comments
 (0)