3838#include "components/soc/src/esp32s2/include/hal/gpio_ll.h"
3939#include "components/xtensa/include/esp_debug_helpers.h"
4040
41- void common_hal_alarm_pin_pin_alarm_construct ( alarm_pin_pin_alarm_obj_t * self , mcu_pin_obj_t * pin , bool value , bool edge , bool pull ) {
41+ void common_hal_alarm_pin_pinalarm_construct ( alarm_pin_pinalarm_obj_t * self , mcu_pin_obj_t * pin , bool value , bool edge , bool pull ) {
4242 if (edge ) {
4343 mp_raise_ValueError (translate ("Cannot wake on pin edge. Only level." ));
4444 }
@@ -51,41 +51,41 @@ void common_hal_alarm_pin_pin_alarm_construct(alarm_pin_pin_alarm_obj_t *self, m
5151 self -> pull = pull ;
5252}
5353
54- mcu_pin_obj_t * common_hal_alarm_pin_pin_alarm_get_pin ( alarm_pin_pin_alarm_obj_t * self ) {
54+ mcu_pin_obj_t * common_hal_alarm_pin_pinalarm_get_pin ( alarm_pin_pinalarm_obj_t * self ) {
5555 return self -> pin ;
5656}
5757
58- bool common_hal_alarm_pin_pin_alarm_get_value ( alarm_pin_pin_alarm_obj_t * self ) {
58+ bool common_hal_alarm_pin_pinalarm_get_value ( alarm_pin_pinalarm_obj_t * self ) {
5959 return self -> value ;
6060}
6161
62- bool common_hal_alarm_pin_pin_alarm_get_edge ( alarm_pin_pin_alarm_obj_t * self ) {
62+ bool common_hal_alarm_pin_pinalarm_get_edge ( alarm_pin_pinalarm_obj_t * self ) {
6363 return false;
6464}
6565
66- bool common_hal_alarm_pin_pin_alarm_get_pull ( alarm_pin_pin_alarm_obj_t * self ) {
66+ bool common_hal_alarm_pin_pinalarm_get_pull ( alarm_pin_pinalarm_obj_t * self ) {
6767 return self -> pull ;
6868}
6969
7070gpio_isr_handle_t gpio_interrupt_handle ;
7171// Low and high are relative to pin number. 32+ is high. <32 is low.
72- static volatile uint32_t low_pin_status = 0 ;
73- static volatile uint32_t high_pin_status = 0 ;
72+ static volatile uint32_t pin_31_0_status = 0 ;
73+ static volatile uint32_t pin_63_32_status = 0 ;
7474void gpio_interrupt (void * arg ) {
7575 (void ) arg ;
7676
77- gpio_ll_get_intr_status (& GPIO , xPortGetCoreID (), (uint32_t * ) & low_pin_status );
78- gpio_ll_clear_intr_status (& GPIO , low_pin_status );
79- gpio_ll_get_intr_status_high (& GPIO , xPortGetCoreID (), (uint32_t * ) & high_pin_status );
80- gpio_ll_clear_intr_status_high (& GPIO , high_pin_status );
77+ gpio_ll_get_intr_status (& GPIO , xPortGetCoreID (), (uint32_t * ) & pin_31_0_status );
78+ gpio_ll_clear_intr_status (& GPIO , pin_31_0_status );
79+ gpio_ll_get_intr_status_high (& GPIO , xPortGetCoreID (), (uint32_t * ) & pin_63_32_status );
80+ gpio_ll_clear_intr_status_high (& GPIO , pin_63_32_status );
8181
8282 // disable the interrupts that fired, maybe all of them
8383 for (size_t i = 0 ; i < 32 ; i ++ ) {
8484 uint32_t mask = 1 << i ;
85- if ((low_pin_status & mask ) != 0 ) {
85+ if ((pin_31_0_status & mask ) != 0 ) {
8686 gpio_ll_intr_disable (& GPIO , i );
8787 }
88- if ((high_pin_status & mask ) != 0 ) {
88+ if ((pin_63_32_status & mask ) != 0 ) {
8989 gpio_ll_intr_disable (& GPIO , 32 + i );
9090 }
9191 }
@@ -96,18 +96,18 @@ void gpio_interrupt(void *arg) {
9696 }
9797}
9898
99- bool alarm_pin_pin_alarm_woke_us_up (void ) {
100- return low_pin_status != 0 || high_pin_status != 0 ;
99+ bool alarm_pin_pinalarm_woke_us_up (void ) {
100+ return pin_31_0_status != 0 || pin_63_32_status != 0 ;
101101}
102102
103- mp_obj_t alarm_pin_pin_alarm_get_wakeup_alarm (size_t n_alarms , const mp_obj_t * alarms ) {
103+ mp_obj_t alarm_pin_pinalarm_get_wakeup_alarm (size_t n_alarms , const mp_obj_t * alarms ) {
104104 // First, check to see if we match any given alarms.
105- uint64_t pin_status = ((uint64_t ) high_pin_status ) << 32 | low_pin_status ;
105+ uint64_t pin_status = ((uint64_t ) pin_63_32_status ) << 32 | pin_31_0_status ;
106106 for (size_t i = 0 ; i < n_alarms ; i ++ ) {
107- if (!MP_OBJ_IS_TYPE (alarms [i ], & alarm_pin_pin_alarm_type )) {
107+ if (!MP_OBJ_IS_TYPE (alarms [i ], & alarm_pin_pinalarm_type )) {
108108 continue ;
109109 }
110- alarm_pin_pin_alarm_obj_t * alarm = MP_OBJ_TO_PTR (alarms [i ]);
110+ alarm_pin_pinalarm_obj_t * alarm = MP_OBJ_TO_PTR (alarms [i ]);
111111 if ((pin_status & (1ull << alarm -> pin -> number )) != 0 ) {
112112 return alarms [i ];
113113 }
@@ -131,8 +131,8 @@ mp_obj_t alarm_pin_pin_alarm_get_wakeup_alarm(size_t n_alarms, const mp_obj_t *a
131131 }
132132 }
133133
134- alarm_pin_pin_alarm_obj_t * alarm = m_new_obj (alarm_pin_pin_alarm_obj_t );
135- alarm -> base .type = & alarm_pin_pin_alarm_type ;
134+ alarm_pin_pinalarm_obj_t * alarm = m_new_obj (alarm_pin_pinalarm_obj_t );
135+ alarm -> base .type = & alarm_pin_pinalarm_type ;
136136 alarm -> pin = NULL ;
137137 // Map the pin number back to a pin object.
138138 for (size_t i = 0 ; i < mcu_pin_globals .map .used ; i ++ ) {
@@ -151,7 +151,7 @@ static uint64_t high_alarms = 0;
151151static uint64_t low_alarms = 0 ;
152152static uint64_t pull_pins = 0 ;
153153
154- void alarm_pin_pin_alarm_reset (void ) {
154+ void alarm_pin_pinalarm_reset (void ) {
155155 if (gpio_interrupt_handle != NULL ) {
156156 esp_intr_free (gpio_interrupt_handle );
157157 gpio_interrupt_handle = NULL ;
@@ -168,21 +168,21 @@ void alarm_pin_pin_alarm_reset(void) {
168168 high_alarms = 0 ;
169169 low_alarms = 0 ;
170170 pull_pins = 0 ;
171- high_pin_status = 0 ;
172- low_pin_status = 0 ;
171+ pin_63_32_status = 0 ;
172+ pin_31_0_status = 0 ;
173173}
174174
175- void alarm_pin_pin_alarm_set_alarms (bool deep_sleep , size_t n_alarms , const mp_obj_t * alarms ) {
175+ void alarm_pin_pinalarm_set_alarms (bool deep_sleep , size_t n_alarms , const mp_obj_t * alarms ) {
176176 // Bitmask of wake up settings.
177177 size_t high_count = 0 ;
178178 size_t low_count = 0 ;
179179
180180 for (size_t i = 0 ; i < n_alarms ; i ++ ) {
181181 // TODO: Check for ULP or touch alarms because they can't coexist with GPIO alarms.
182- if (!MP_OBJ_IS_TYPE (alarms [i ], & alarm_pin_pin_alarm_type )) {
182+ if (!MP_OBJ_IS_TYPE (alarms [i ], & alarm_pin_pinalarm_type )) {
183183 continue ;
184184 }
185- alarm_pin_pin_alarm_obj_t * alarm = MP_OBJ_TO_PTR (alarms [i ]);
185+ alarm_pin_pinalarm_obj_t * alarm = MP_OBJ_TO_PTR (alarms [i ]);
186186
187187 gpio_num_t pin_number = alarm -> pin -> number ;
188188 if (alarm -> value ) {
@@ -239,8 +239,8 @@ void alarm_pin_pin_alarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_o
239239 }
240240 // Set GPIO interrupts so they wake us from light sleep or from idle via the
241241 // interrupt handler above.
242- low_pin_status = 0 ;
243- high_pin_status = 0 ;
242+ pin_31_0_status = 0 ;
243+ pin_63_32_status = 0 ;
244244 if (gpio_isr_register (gpio_interrupt , NULL , 0 , & gpio_interrupt_handle ) != ESP_OK ) {
245245 mp_raise_ValueError (translate ("Can only alarm on RTC IO from deep sleep." ));
246246 }
@@ -282,7 +282,7 @@ void alarm_pin_pin_alarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_o
282282}
283283
284284
285- void alarm_pin_pin_alarm_prepare_for_deep_sleep (void ) {
285+ void alarm_pin_pinalarm_prepare_for_deep_sleep (void ) {
286286 if (pull_pins == 0 ) {
287287 return ;
288288 }
0 commit comments