38
38
#include "components/soc/src/esp32s2/include/hal/gpio_ll.h"
39
39
#include "components/xtensa/include/esp_debug_helpers.h"
40
40
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 ) {
42
42
if (edge ) {
43
43
mp_raise_ValueError (translate ("Cannot wake on pin edge. Only level." ));
44
44
}
@@ -51,41 +51,41 @@ void common_hal_alarm_pin_pin_alarm_construct(alarm_pin_pin_alarm_obj_t *self, m
51
51
self -> pull = pull ;
52
52
}
53
53
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 ) {
55
55
return self -> pin ;
56
56
}
57
57
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 ) {
59
59
return self -> value ;
60
60
}
61
61
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 ) {
63
63
return false;
64
64
}
65
65
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 ) {
67
67
return self -> pull ;
68
68
}
69
69
70
70
gpio_isr_handle_t gpio_interrupt_handle ;
71
71
// 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 ;
74
74
void gpio_interrupt (void * arg ) {
75
75
(void ) arg ;
76
76
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 );
81
81
82
82
// disable the interrupts that fired, maybe all of them
83
83
for (size_t i = 0 ; i < 32 ; i ++ ) {
84
84
uint32_t mask = 1 << i ;
85
- if ((low_pin_status & mask ) != 0 ) {
85
+ if ((pin_31_0_status & mask ) != 0 ) {
86
86
gpio_ll_intr_disable (& GPIO , i );
87
87
}
88
- if ((high_pin_status & mask ) != 0 ) {
88
+ if ((pin_63_32_status & mask ) != 0 ) {
89
89
gpio_ll_intr_disable (& GPIO , 32 + i );
90
90
}
91
91
}
@@ -96,18 +96,18 @@ void gpio_interrupt(void *arg) {
96
96
}
97
97
}
98
98
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 ;
101
101
}
102
102
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 ) {
104
104
// 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 ;
106
106
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 )) {
108
108
continue ;
109
109
}
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 ]);
111
111
if ((pin_status & (1ull << alarm -> pin -> number )) != 0 ) {
112
112
return alarms [i ];
113
113
}
@@ -131,8 +131,8 @@ mp_obj_t alarm_pin_pin_alarm_get_wakeup_alarm(size_t n_alarms, const mp_obj_t *a
131
131
}
132
132
}
133
133
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 ;
136
136
alarm -> pin = NULL ;
137
137
// Map the pin number back to a pin object.
138
138
for (size_t i = 0 ; i < mcu_pin_globals .map .used ; i ++ ) {
@@ -151,7 +151,7 @@ static uint64_t high_alarms = 0;
151
151
static uint64_t low_alarms = 0 ;
152
152
static uint64_t pull_pins = 0 ;
153
153
154
- void alarm_pin_pin_alarm_reset (void ) {
154
+ void alarm_pin_pinalarm_reset (void ) {
155
155
if (gpio_interrupt_handle != NULL ) {
156
156
esp_intr_free (gpio_interrupt_handle );
157
157
gpio_interrupt_handle = NULL ;
@@ -168,21 +168,21 @@ void alarm_pin_pin_alarm_reset(void) {
168
168
high_alarms = 0 ;
169
169
low_alarms = 0 ;
170
170
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 ;
173
173
}
174
174
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 ) {
176
176
// Bitmask of wake up settings.
177
177
size_t high_count = 0 ;
178
178
size_t low_count = 0 ;
179
179
180
180
for (size_t i = 0 ; i < n_alarms ; i ++ ) {
181
181
// 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 )) {
183
183
continue ;
184
184
}
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 ]);
186
186
187
187
gpio_num_t pin_number = alarm -> pin -> number ;
188
188
if (alarm -> value ) {
@@ -239,8 +239,8 @@ void alarm_pin_pin_alarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_o
239
239
}
240
240
// Set GPIO interrupts so they wake us from light sleep or from idle via the
241
241
// 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 ;
244
244
if (gpio_isr_register (gpio_interrupt , NULL , 0 , & gpio_interrupt_handle ) != ESP_OK ) {
245
245
mp_raise_ValueError (translate ("Can only alarm on RTC IO from deep sleep." ));
246
246
}
@@ -282,7 +282,7 @@ void alarm_pin_pin_alarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_o
282
282
}
283
283
284
284
285
- void alarm_pin_pin_alarm_prepare_for_deep_sleep (void ) {
285
+ void alarm_pin_pinalarm_prepare_for_deep_sleep (void ) {
286
286
if (pull_pins == 0 ) {
287
287
return ;
288
288
}
0 commit comments