summaryrefslogtreecommitdiff
path: root/shared-bindings
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2018-04-08 22:06:09 -0700
committerGitHub <noreply@github.com>2018-04-08 22:06:09 -0700
commit4e053cea0df0105e05052087077b2431cad26718 (patch)
tree2677159158c32390cc7a7ae7255d753a13ba7830 /shared-bindings
parent93e09e7ee55f7193cb7be6c1279d07aad4dc08b4 (diff)
parentcc644032ea81783de0e1e15b90dac2ce7913011b (diff)
Merge pull request #628 from sommersoft/super_status
Added Function To Check the Serial Connection From CircuitPython Layer
Diffstat (limited to 'shared-bindings')
-rwxr-xr-xshared-bindings/supervisor/Runtime.c93
-rwxr-xr-xshared-bindings/supervisor/Runtime.h42
-rw-r--r--shared-bindings/supervisor/__init__.c29
-rwxr-xr-xshared-bindings/supervisor/__init__.h39
4 files changed, 198 insertions, 5 deletions
diff --git a/shared-bindings/supervisor/Runtime.c b/shared-bindings/supervisor/Runtime.c
new file mode 100755
index 000000000..b061595cf
--- /dev/null
+++ b/shared-bindings/supervisor/Runtime.c
@@ -0,0 +1,93 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2018 Michael Schroeder
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include <stdbool.h>
+#include "py/objproperty.h"
+#include "shared-bindings/supervisor/Runtime.h"
+
+//TODO: add USB, REPL to description once they're operational
+//| .. currentmodule:: supervisor
+//|
+//| :class:`Runtime` --- Supervisor Runtime information
+//| ----------------------------------------------------
+//|
+//| Get current status of runtime objects.
+//|
+//| Usage::
+//|
+//| import supervisor
+//| if supervisor.runtime.serial_connected:
+//| print("Hello World!")
+//|
+
+//| .. class:: Runtime()
+//|
+//| You cannot create an instance of `supervisor.Runtime`.
+//| Use `supervisor.runtime` to access the sole instance available.
+//|
+
+//| .. attribute:: runtime.serial_connected
+//|
+//| Returns the USB serial communication status (read-only).
+//|
+//| .. note::
+//|
+//| SAMD: Will return ``True`` if the USB serial connection
+//| has been established at any point. Will not reset if
+//| USB is disconnected but power remains (e.g. battery connected)
+//|
+//| Feather52 (nRF52832): Currently returns ``True`` regardless
+//| of USB connection status.
+//|
+
+STATIC mp_obj_t supervisor_get_serial_connected(mp_obj_t self){
+ if (!common_hal_get_serial_connected()) {
+ return mp_const_false;
+ }
+ else {
+ return mp_const_true;
+ }
+}
+MP_DEFINE_CONST_FUN_OBJ_1(supervisor_get_serial_connected_obj, supervisor_get_serial_connected);
+
+const mp_obj_property_t supervisor_serial_connected_obj = {
+ .base.type = &mp_type_property,
+ .proxy = {(mp_obj_t)&supervisor_get_serial_connected_obj,
+ (mp_obj_t)&mp_const_none_obj,
+ (mp_obj_t)&mp_const_none_obj},
+};
+
+STATIC const mp_rom_map_elem_t supervisor_runtime_locals_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR_serial_connected), MP_ROM_PTR(&supervisor_serial_connected_obj) },
+};
+
+STATIC MP_DEFINE_CONST_DICT(supervisor_runtime_locals_dict, supervisor_runtime_locals_dict_table);
+
+const mp_obj_type_t supervisor_runtime_type = {
+ .base = { &mp_type_type },
+ .name = MP_QSTR_Runtime,
+ .locals_dict = (mp_obj_t)&supervisor_runtime_locals_dict,
+};
diff --git a/shared-bindings/supervisor/Runtime.h b/shared-bindings/supervisor/Runtime.h
new file mode 100755
index 000000000..4a67925ec
--- /dev/null
+++ b/shared-bindings/supervisor/Runtime.h
@@ -0,0 +1,42 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2018 Michael Schroeder
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_RUNTIME_STATUS_H
+#define MICROPY_INCLUDED_SHARED_BINDINGS_RUNTIME_STATUS_H
+
+#include <stdbool.h>
+#include "py/obj.h"
+
+
+const mp_obj_type_t supervisor_runtime_type;
+
+bool common_hal_get_serial_connected(void);
+
+//TODO: placeholders for future functions
+//bool common_hal_get_repl_active(void);
+//bool common_hal_get_usb_enumerated(void);
+
+#endif // MICROPY_INCLUDED_SHARED_BINDINGS_SUPERVISOR_RUNTIME_H
diff --git a/shared-bindings/supervisor/__init__.c b/shared-bindings/supervisor/__init__.c
index cbb138beb..a82459ad7 100644
--- a/shared-bindings/supervisor/__init__.c
+++ b/shared-bindings/supervisor/__init__.c
@@ -27,13 +27,31 @@
#include "py/runtime.h"
#include "supervisor/shared/autoreload.h"
#include "supervisor/shared/rgb_led_status.h"
-
+
+ #include "shared-bindings/supervisor/__init__.h"
+ #include "shared-bindings/supervisor/Runtime.h"
//| :mod:`supervisor` --- Supervisor settings
//| =================================================
//|
//| .. module:: supervisor
//| :synopsis: Supervisor settings
-//| :platform: SAMD21
+//| :platform: SAMD21/51 (All), nRF (Runtime only)
+//|
+//| The `supervisor` module. (TODO: expand description)
+//|
+//| Libraries
+//|
+//| .. toctree::
+//| :maxdepth: 3
+//|
+//| Runtime
+//|
+
+//| .. attribute:: runtime
+//|
+//| Runtime information, such as `runtime.serial_connected`
+//| (USB serial connection status).
+//| This object is the sole instance of `supervisor.Runtime`.
//|
//| .. method:: enable_autoreload()
@@ -75,9 +93,10 @@ MP_DEFINE_CONST_FUN_OBJ_1(supervisor_set_rgb_status_brightness_obj, supervisor_s
STATIC const mp_rom_map_elem_t supervisor_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_supervisor) },
- { MP_OBJ_NEW_QSTR(MP_QSTR_enable_autoreload), MP_ROM_PTR(&supervisor_enable_autoreload_obj)},
- { MP_OBJ_NEW_QSTR(MP_QSTR_disable_autoreload), MP_ROM_PTR(&supervisor_disable_autoreload_obj)},
- { MP_OBJ_NEW_QSTR(MP_QSTR_set_rgb_status_brightness), MP_ROM_PTR(&supervisor_set_rgb_status_brightness_obj)},
+ { MP_OBJ_NEW_QSTR(MP_QSTR_enable_autoreload), MP_ROM_PTR(&supervisor_enable_autoreload_obj) },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_disable_autoreload), MP_ROM_PTR(&supervisor_disable_autoreload_obj) },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_set_rgb_status_brightness), MP_ROM_PTR(&supervisor_set_rgb_status_brightness_obj) },
+ { MP_ROM_QSTR(MP_QSTR_runtime), MP_ROM_PTR(&common_hal_supervisor_runtime_obj) },
};
STATIC MP_DEFINE_CONST_DICT(supervisor_module_globals, supervisor_module_globals_table);
diff --git a/shared-bindings/supervisor/__init__.h b/shared-bindings/supervisor/__init__.h
new file mode 100755
index 000000000..d2e568945
--- /dev/null
+++ b/shared-bindings/supervisor/__init__.h
@@ -0,0 +1,39 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2018 Michael Schroeder
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_SUPERVISOR___INIT___H
+#define MICROPY_INCLUDED_SHARED_BINDINGS_SUPERVISOR___INIT___H
+
+//#include "py/mpconfig.h"
+#include "py/obj.h"
+
+#include "common-hal/supervisor/Runtime.h"
+
+extern const super_runtime_obj_t common_hal_supervisor_runtime_obj;
+
+
+
+#endif // MICROPY_INCLUDED_SHARED_BINDINGS_SUPERVISOR___INIT___H \ No newline at end of file