summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rwxr-xr-xmain.c54
1 files changed, 30 insertions, 24 deletions
diff --git a/main.c b/main.c
index 5b719dc4b..80b163f60 100755
--- a/main.c
+++ b/main.c
@@ -81,6 +81,10 @@
#include "supervisor/shared/bluetooth.h"
#endif
+#if CIRCUITPY_CANIO
+#include "common-hal/canio/CAN.h"
+#endif
+
void do_str(const char *src, mp_parse_input_kind_t input_kind) {
mp_lexer_t *lex = mp_lexer_new_from_str_len(MP_QSTR__lt_stdin_gt_, src, strlen(src), 0);
if (lex == NULL) {
@@ -226,27 +230,38 @@ void cleanup_after_vm(supervisor_allocation* heap) {
free_memory(heap);
supervisor_move_memory();
- reset_port();
+ #if CIRCUITPY_CANIO
+ common_hal_canio_reset();
+ #endif
+
+ // reset_board_busses() first because it may release pins from the never_reset state, so that
+ // reset_port() can reset them.
#if CIRCUITPY_BOARD
reset_board_busses();
#endif
+ reset_port();
reset_board();
reset_status_led();
}
+void print_code_py_status_message(safe_mode_t safe_mode) {
+ if (autoreload_is_enabled()) {
+ serial_write_compressed(translate("Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.\n"));
+ } else {
+ serial_write_compressed(translate("Auto-reload is off.\n"));
+ }
+ if (safe_mode != NO_SAFE_MODE) {
+ serial_write_compressed(translate("Running in safe mode! "));
+ serial_write_compressed(translate("Not running saved code.\n"));
+ }
+}
+
bool run_code_py(safe_mode_t safe_mode) {
bool serial_connected_at_start = serial_connected();
#if CIRCUITPY_AUTORELOAD_DELAY_MS > 0
if (serial_connected_at_start) {
serial_write("\n");
- if (autoreload_is_enabled()) {
- serial_write_compressed(translate("Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.\n"));
- } else if (safe_mode != NO_SAFE_MODE) {
- serial_write_compressed(translate("Running in safe mode! "));
- serial_write_compressed(translate("Auto-reload is off.\n"));
- } else if (!autoreload_is_enabled()) {
- serial_write_compressed(translate("Auto-reload is off.\n"));
- }
+ print_code_py_status_message(safe_mode);
}
#endif
@@ -258,10 +273,7 @@ bool run_code_py(safe_mode_t safe_mode) {
bool found_main = false;
- if (safe_mode != NO_SAFE_MODE) {
- serial_write_compressed(translate("Running in safe mode! "));
- serial_write_compressed(translate("Not running saved code.\n"));
- } else {
+ if (safe_mode == NO_SAFE_MODE) {
new_status_color(MAIN_RUNNING);
static const char * const supported_filenames[] = STRING_LIST("code.txt", "code.py", "main.py", "main.txt");
@@ -314,16 +326,8 @@ bool run_code_py(safe_mode_t safe_mode) {
}
if (!serial_connected_before_animation && serial_connected()) {
- if (serial_connected_at_start) {
- serial_write("\n\n");
- }
-
if (!serial_connected_at_start) {
- if (autoreload_is_enabled()) {
- serial_write_compressed(translate("Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.\n"));
- } else {
- serial_write_compressed(translate("Auto-reload is off.\n"));
- }
+ print_code_py_status_message(safe_mode);
}
print_safe_mode_message(safe_mode);
serial_write("\n");
@@ -478,8 +482,10 @@ int __attribute__((used)) main(void) {
reset_devices();
reset_board();
- // Turn on autoreload by default but before boot.py in case it wants to change it.
- autoreload_enable();
+ // If not in safe mode turn on autoreload by default but before boot.py in case it wants to change it.
+ if (safe_mode == NO_SAFE_MODE) {
+ autoreload_enable();
+ }
// By default our internal flash is readonly to local python code and
// writable over USB. Set it here so that boot.py can change it.