summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoy Hooper <rhooper@toybox.ca>2018-05-14 17:41:17 -0400
committerRoy Hooper <rhooper@toybox.ca>2018-05-14 17:41:17 -0400
commit92b1cb574320578abe022c021c4b1891cfafbae6 (patch)
tree8aeec206f7fd34ad8823057c46535ac6e936f50e
parent698912633fab70b7a0fa19a84c730face41b10ff (diff)
move reload exception to reload.c
-rw-r--r--py/py.mk1
-rw-r--r--py/reload.c16
-rw-r--r--py/reload.h10
-rw-r--r--shared-bindings/supervisor/__init__.c9
4 files changed, 29 insertions, 7 deletions
diff --git a/py/py.mk b/py/py.mk
index 21f81c35d..e934c3a83 100644
--- a/py/py.mk
+++ b/py/py.mk
@@ -188,6 +188,7 @@ PY_O_BASENAME = \
objtype.o \
objzip.o \
opmethods.o \
+ reload.o \
sequence.o \
stream.o \
binary.o \
diff --git a/py/reload.c b/py/reload.c
new file mode 100644
index 000000000..95305f2c9
--- /dev/null
+++ b/py/reload.c
@@ -0,0 +1,16 @@
+//
+// Created by Roy Hooper on 2018-05-14.
+//
+
+#include "reload.h"
+#include "py/mpstate.h"
+
+void mp_raise_reload_exception(void) {
+ MP_STATE_VM(mp_pending_exception) = MP_OBJ_FROM_PTR(&MP_STATE_VM(mp_reload_exception));
+#if MICROPY_ENABLE_SCHEDULER
+ if (MP_STATE_VM(sched_state) == MP_SCHED_IDLE) {
+ MP_STATE_VM(sched_state) = MP_SCHED_PENDING;
+ }
+#endif
+
+}
diff --git a/py/reload.h b/py/reload.h
new file mode 100644
index 000000000..72e84e5ca
--- /dev/null
+++ b/py/reload.h
@@ -0,0 +1,10 @@
+//
+// Created by Roy Hooper on 2018-05-14.
+//
+
+#ifndef CIRCUITPYTHON_RELOAD_H
+#define CIRCUITPYTHON_RELOAD_H
+
+void mp_raise_reload_exception(void);
+
+#endif //CIRCUITPYTHON_RELOAD_H
diff --git a/shared-bindings/supervisor/__init__.c b/shared-bindings/supervisor/__init__.c
index 4eae40406..b2b0c80d9 100644
--- a/shared-bindings/supervisor/__init__.c
+++ b/shared-bindings/supervisor/__init__.c
@@ -25,6 +25,7 @@
*/
#include "py/obj.h"
#include "py/runtime.h"
+ #include "py/reload.h"
#include "lib/utils/interrupt_char.h"
#include "supervisor/shared/autoreload.h"
@@ -101,13 +102,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(supervisor_set_rgb_status_brightness_obj, supervisor_s
//|
STATIC mp_obj_t supervisor_reload(void) {
reload_requested = true;
-
- MP_STATE_VM(mp_pending_exception) = MP_OBJ_FROM_PTR(&MP_STATE_VM(mp_reload_exception));
- #if MICROPY_ENABLE_SCHEDULER
- if (MP_STATE_VM(sched_state) == MP_SCHED_IDLE) {
- MP_STATE_VM(sched_state) = MP_SCHED_PENDING;
- }
- #endif
+ mp_raise_reload_exception();
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_0(supervisor_reload_obj, supervisor_reload);