Skip to content

Conversation

@meirarmon
Copy link
Contributor

@meirarmon meirarmon commented Jun 21, 2025

Summary

When waking from deep sleep, it could be helpful to know what pins triggered the wake up since the wake pins could be configured to multiple pins.

Based on work that @m-cas did in this PR - #15498.

Testing

Tested ESP32_GENERIC_C3 with:

import machine
import esp32
esp32.wake_on_gpio((machine.Pin(5),machine.Pin(2)), esp32.WAKEUP_ANY_HIGH)
machine.deepsleep()

After wakeup checked that machine.wake_pins() returned the correct pin that trigerred the wake.

Trade-offs and Alternatives

I decided to place the method in machine together with wake_reason, since it is feasible that other ports
will want the exact same interface.

Copy link
Contributor

@projectgus projectgus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like a useful function to me, and a good abstraction to eventually support on other ports as well. Thanks @meirarmon!

len += (status & ((uint64_t)1 << index)) ? 1 : 0;
}
if (len) {
tuple = alloca(len * sizeof(*tuple));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather than using alloca here suggest doing something like:

#include "py/objtuple.h"

mp_obj_tuple_t *tuple = MP_OBJ_TO_PTR(mp_obj_new_tuple(len, NULL));
[...]
   tuple->items[i] = MP_OBJ_NEW_SMALL_INT(index)
[...]
return MP_OBJ_FROM_PTR(tuple)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@projectgus Done, shall we get this merged :-) ?

When waking from deep sleep, it could be helpful to know
what pins triggered the wake up since the wake pins
could be configured to multiple pins.

Signed-off-by: Meir Armon <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants