@@ -136,6 +136,22 @@ STATIC mp_obj_t mcu_reset(void) {
136136}
137137STATIC MP_DEFINE_CONST_FUN_OBJ_0 (mcu_reset_obj , mcu_reset );
138138
139+ //| def sleep() -> None:
140+ //| """Microcontroller will go into deep sleep.
141+ //| cpy will restart when wakeup func. is triggered`.
142+ //|
143+ //| .. warning:: This may result in file system corruption when connected to a
144+ //| host computer. Be very careful when calling this! Make sure the device
145+ //| "Safely removed" on Windows or "ejected" on Mac OSX and Linux."""
146+ //| ...
147+ //|
148+ STATIC mp_obj_t mcu_sleep (void ) {
149+ common_hal_mcu_sleep ();
150+ // We won't actually get here because mcu is going into sleep.
151+ return mp_const_none ;
152+ }
153+ STATIC MP_DEFINE_CONST_FUN_OBJ_0 (mcu_sleep_obj , mcu_sleep );
154+
139155//| nvm: Optional[ByteArray]
140156//| """Available non-volatile memory.
141157//| This object is the sole instance of `nvm.ByteArray` when available or ``None`` otherwise.
@@ -171,6 +187,7 @@ STATIC const mp_rom_map_elem_t mcu_module_globals_table[] = {
171187 { MP_ROM_QSTR (MP_QSTR_enable_interrupts ), MP_ROM_PTR (& mcu_enable_interrupts_obj ) },
172188 { MP_ROM_QSTR (MP_QSTR_on_next_reset ), MP_ROM_PTR (& mcu_on_next_reset_obj ) },
173189 { MP_ROM_QSTR (MP_QSTR_reset ), MP_ROM_PTR (& mcu_reset_obj ) },
190+ { MP_ROM_QSTR (MP_QSTR_sleep ), MP_ROM_PTR (& mcu_sleep_obj ) },
174191 #if CIRCUITPY_INTERNAL_NVM_SIZE > 0
175192 { MP_ROM_QSTR (MP_QSTR_nvm ), MP_ROM_PTR (& common_hal_mcu_nvm_obj ) },
176193 #else
0 commit comments