@@ -360,38 +360,36 @@ void alarm_pin_pinalarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_ob
360360 if (gpio_isr_register (gpio_interrupt , NULL , 0 , & gpio_interrupt_handle ) != ESP_OK ) {
361361 mp_raise_ValueError (MP_ERROR_TEXT ("Can only alarm on RTC IO from deep sleep." ));
362362 }
363- for (size_t i = 0 ; i < 64 ; i ++ ) {
364- uint64_t mask = 1ull << i ;
363+ for (gpio_num_t pin = 0 ; pin < SOC_GPIO_PIN_COUNT ; pin ++ ) {
364+ uint64_t mask = 1ULL << pin ;
365365 bool high = (high_alarms & mask ) != 0 ;
366366 bool low = (low_alarms & mask ) != 0 ;
367367 bool pull = (pull_pins & mask ) != 0 ;
368368 if (!(high || low )) {
369369 continue ;
370370 }
371- if (rtc_gpio_is_valid_gpio (i )) {
371+ if (rtc_gpio_is_valid_gpio (pin )) {
372372 #ifdef SOC_PM_SUPPORT_RTC_PERIPH_PD
373- rtc_gpio_deinit (i );
373+ rtc_gpio_deinit (pin );
374374 #endif
375375 }
376- gpio_int_type_t interrupt_mode = GPIO_INTR_DISABLE ;
377- gpio_pull_mode_t pull_mode = GPIO_FLOATING ;
378- if (high ) {
379- interrupt_mode = GPIO_INTR_HIGH_LEVEL ;
380- pull_mode = GPIO_PULLDOWN_ONLY ;
381- }
382- if (low ) {
383- interrupt_mode = GPIO_INTR_LOW_LEVEL ;
384- pull_mode = GPIO_PULLUP_ONLY ;
385- }
386- gpio_set_direction (i , GPIO_MODE_DEF_INPUT );
387- PIN_FUNC_SELECT (GPIO_PIN_MUX_REG [i ], PIN_FUNC_GPIO );
376+ gpio_set_direction (pin , GPIO_MODE_INPUT );
388377 if (pull ) {
389- gpio_set_pull_mode (i , pull_mode );
378+ if (high ) {
379+ ESP_ERROR_CHECK (gpio_set_pull_mode (pin , GPIO_PULLDOWN_ONLY ));
380+ } else {
381+ ESP_ERROR_CHECK (gpio_set_pull_mode (pin , GPIO_PULLUP_ONLY ));
382+ }
383+ } else {
384+ ESP_ERROR_CHECK (gpio_set_pull_mode (pin , GPIO_FLOATING ));
390385 }
391- never_reset_pin_number (i );
392- // Sets interrupt type and wakeup bits.
393- gpio_wakeup_enable (i , interrupt_mode );
394- gpio_intr_enable (i );
386+ gpio_int_type_t intr = GPIO_INTR_DISABLE ;
387+ if (high ) intr = GPIO_INTR_HIGH_LEVEL ;
388+ if (low ) intr = GPIO_INTR_LOW_LEVEL ;
389+ never_reset_pin_number (pin );
390+ gpio_wakeup_enable (pin , intr );
391+ gpio_set_intr_type (pin , intr );
392+ gpio_intr_enable (pin );
395393 }
396394 // Wait for any pulls to settle.
397395 mp_hal_delay_ms (50 );
0 commit comments