@@ -51,11 +51,10 @@ STATIC mp_obj_t power_off(void) {
51
51
STATIC MP_DEFINE_CONST_FUN_OBJ_0 (power_off_obj , power_off );
52
52
53
53
STATIC mp_obj_t power_deep_sleep (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
54
- enum { ARG_ms , ARG_pins , ARG_buttons , ARG_run_every };
54
+ enum { ARG_ms , ARG_wake_on , ARG_run_every };
55
55
static const mp_arg_t allowed_args [] = {
56
56
{ MP_QSTR_ms , MP_ARG_OBJ , {.u_rom_obj = MP_ROM_NONE } },
57
- { MP_QSTR_pins , MP_ARG_OBJ , {.u_rom_obj = MP_ROM_NONE } },
58
- { MP_QSTR_buttons , MP_ARG_OBJ , {.u_rom_obj = MP_ROM_NONE } },
57
+ { MP_QSTR_wake_on , MP_ARG_OBJ , {.u_rom_obj = MP_ROM_NONE } },
59
58
{ MP_QSTR_run_every , MP_ARG_BOOL , {.u_bool = false} },
60
59
};
61
60
@@ -64,25 +63,17 @@ STATIC mp_obj_t power_deep_sleep(size_t n_args, const mp_obj_t *pos_args, mp_map
64
63
65
64
microbit_hal_power_clear_wake_sources ();
66
65
67
- if (args [ARG_pins ].u_obj != mp_const_none ) {
68
- mp_obj_t * items ;
69
- size_t len = get_array (& args [ARG_pins ].u_obj , & items );
70
- for (size_t i = 0 ; i < len ; ++ i ) {
66
+ // Configure wake-up sources.
67
+ mp_obj_t * items ;
68
+ size_t len = get_array (& args [ARG_wake_on ].u_obj , & items );
69
+ for (size_t i = 0 ; i < len ; ++ i ) {
70
+ const mp_obj_type_t * type = mp_obj_get_type (items [i ]);
71
+ if (microbit_obj_type_is_button (type )) {
72
+ microbit_hal_power_wake_on_button (microbit_obj_get_button_id (items [i ]), true);
73
+ } else if (microbit_obj_type_is_pin (type )) {
71
74
microbit_hal_power_wake_on_pin (microbit_obj_get_pin_name (items [i ]), true);
72
- }
73
- }
74
-
75
- if (args [ARG_buttons ].u_obj != mp_const_none ) {
76
- mp_obj_t * items ;
77
- size_t len = get_array (& args [ARG_buttons ].u_obj , & items );
78
- for (size_t i = 0 ; i < len ; ++ i ) {
79
- if (items [i ] == MP_OBJ_FROM_PTR (& microbit_button_a_obj )) {
80
- microbit_hal_power_wake_on_button (0 , true);
81
- } else if (items [i ] == MP_OBJ_FROM_PTR (& microbit_button_b_obj )) {
82
- microbit_hal_power_wake_on_button (1 , true);
83
- } else {
84
- mp_raise_ValueError (MP_ERROR_TEXT ("expecting a button" ));
85
- }
75
+ } else {
76
+ mp_raise_ValueError (MP_ERROR_TEXT ("expecting a pin or button" ));
86
77
}
87
78
}
88
79
0 commit comments