soft reboot for pretending deep sleep.
This commit is contained in:
parent
15764b4c24
commit
6e9429d779
19
main.c
19
main.c
|
@ -404,10 +404,10 @@ STATIC bool run_code_py(safe_mode_t safe_mode) {
|
||||||
new_status_color(BLACK);
|
new_status_color(BLACK);
|
||||||
board_deinit();
|
board_deinit();
|
||||||
if (!supervisor_workflow_active()) {
|
if (!supervisor_workflow_active()) {
|
||||||
// Enter true deep sleep. When we wake up we'll be back at the
|
// Enter deep sleep. When we wake up we'll return from
|
||||||
// top of main(), not in this loop.
|
// this loop.
|
||||||
common_hal_alarm_enter_deep_sleep();
|
common_hal_alarm_enter_deep_sleep();
|
||||||
// Does not return.
|
// Does not return.
|
||||||
} else {
|
} else {
|
||||||
serial_write_compressed(translate("Pretending to deep sleep until alarm, CTRL-C or file write.\n"));
|
serial_write_compressed(translate("Pretending to deep sleep until alarm, CTRL-C or file write.\n"));
|
||||||
}
|
}
|
||||||
|
@ -426,10 +426,21 @@ STATIC bool run_code_py(safe_mode_t safe_mode) {
|
||||||
|
|
||||||
#if CIRCUITPY_ALARM
|
#if CIRCUITPY_ALARM
|
||||||
common_hal_alarm_pretending_deep_sleep();
|
common_hal_alarm_pretending_deep_sleep();
|
||||||
|
bool serial_in = (serial_connected() &&
|
||||||
|
serial_bytes_available());
|
||||||
|
supervisor_set_run_reason(RUN_REASON_STARTUP);
|
||||||
|
board_init();
|
||||||
|
if (serial_in) {
|
||||||
|
bool ctrl_d = serial_read() == CHAR_CTRL_D;
|
||||||
|
if (ctrl_d) {
|
||||||
|
supervisor_set_run_reason(RUN_REASON_REPL_RELOAD);
|
||||||
|
}
|
||||||
|
return ctrl_d;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
#else
|
#else
|
||||||
port_idle_until_interrupt();
|
port_idle_until_interrupt();
|
||||||
#endif
|
#endif
|
||||||
//return false; // to go REPL
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -346,7 +346,7 @@ void NORETURN common_hal_alarm_enter_deep_sleep(void) {
|
||||||
while(1) ;
|
while(1) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
// old version deep sleep code that was used in alarm_enter_deep_sleep()
|
// old version deep sleep code that was used in common_hal_alarm_enter_deep_sleep()
|
||||||
// for anyone who might want true System OFF sleep ..
|
// for anyone who might want true System OFF sleep ..
|
||||||
#if 0
|
#if 0
|
||||||
void OLD_go_system_off(void) {
|
void OLD_go_system_off(void) {
|
||||||
|
@ -384,6 +384,7 @@ void common_hal_alarm_pretending_deep_sleep(void) {
|
||||||
|
|
||||||
alarm_reset();
|
alarm_reset();
|
||||||
|
|
||||||
|
#if 0
|
||||||
// if one of Alarm event occurred, reset myself
|
// if one of Alarm event occurred, reset myself
|
||||||
if (cause == NRF_SLEEP_WAKEUP_GPIO ||
|
if (cause == NRF_SLEEP_WAKEUP_GPIO ||
|
||||||
cause == NRF_SLEEP_WAKEUP_TIMER ||
|
cause == NRF_SLEEP_WAKEUP_TIMER ||
|
||||||
|
@ -391,9 +392,9 @@ void common_hal_alarm_pretending_deep_sleep(void) {
|
||||||
reset_cpu();
|
reset_cpu();
|
||||||
}
|
}
|
||||||
// else, just return and go into REPL
|
// else, just return and go into REPL
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void common_hal_alarm_gc_collect(void) {
|
void common_hal_alarm_gc_collect(void) {
|
||||||
void* p = shared_alarm_get_wake_alarm();
|
gc_collect_ptr(shared_alarm_get_wake_alarm());
|
||||||
gc_collect_ptr(p);
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue