summaryrefslogtreecommitdiff
path: root/shared-bindings/microcontroller
diff options
context:
space:
mode:
Diffstat (limited to 'shared-bindings/microcontroller')
-rw-r--r--shared-bindings/microcontroller/Processor.c4
-rw-r--r--shared-bindings/microcontroller/Processor.h1
-rw-r--r--shared-bindings/microcontroller/ResetReason.c7
-rw-r--r--shared-bindings/microcontroller/ResetReason.h14
-rw-r--r--shared-bindings/microcontroller/__init__.c14
-rw-r--r--shared-bindings/microcontroller/__init__.h2
6 files changed, 29 insertions, 13 deletions
diff --git a/shared-bindings/microcontroller/Processor.c b/shared-bindings/microcontroller/Processor.c
index b0ab842f4..ea4368821 100644
--- a/shared-bindings/microcontroller/Processor.c
+++ b/shared-bindings/microcontroller/Processor.c
@@ -76,9 +76,9 @@ STATIC mp_obj_t mcu_processor_get_reset_reason(mp_obj_t self) {
MP_DEFINE_CONST_FUN_OBJ_1(mcu_processor_get_reset_reason_obj, mcu_processor_get_reset_reason);
-const mp_obj_property_t mcu_reset_reason_obj = {
+const mp_obj_property_t mcu_processor_reset_reason_obj = {
.base.type = &mp_type_property,
- .proxy = {(mp_obj_t)&mcu_processor_get_reason_reason_obj, // getter
+ .proxy = {(mp_obj_t)&mcu_processor_get_reset_reason_obj, // getter
(mp_obj_t)&mp_const_none_obj, // no setter
(mp_obj_t)&mp_const_none_obj, // no deleter
},
diff --git a/shared-bindings/microcontroller/Processor.h b/shared-bindings/microcontroller/Processor.h
index a842e06f3..98d479087 100644
--- a/shared-bindings/microcontroller/Processor.h
+++ b/shared-bindings/microcontroller/Processor.h
@@ -29,6 +29,7 @@
#include "py/obj.h"
+#include "common-hal/microcontroller/Processor.h"
#include "shared-bindings/microcontroller/ResetReason.h"
extern const mp_obj_type_t mcu_processor_type;
diff --git a/shared-bindings/microcontroller/ResetReason.c b/shared-bindings/microcontroller/ResetReason.c
index 151fcf315..61891934a 100644
--- a/shared-bindings/microcontroller/ResetReason.c
+++ b/shared-bindings/microcontroller/ResetReason.c
@@ -35,6 +35,7 @@ MAKE_ENUM_VALUE(mcu_reset_reason_type, reset_reason, SOFTWARE, RESET_REASON_SOFT
MAKE_ENUM_VALUE(mcu_reset_reason_type, reset_reason, DEEP_SLEEP_ALARM, RESET_REASON_DEEP_SLEEP_ALARM);
MAKE_ENUM_VALUE(mcu_reset_reason_type, reset_reason, RESET_PIN, RESET_REASON_RESET_PIN);
MAKE_ENUM_VALUE(mcu_reset_reason_type, reset_reason, WATCHDOG, RESET_REASON_WATCHDOG);
+MAKE_ENUM_VALUE(mcu_reset_reason_type, reset_reason, UNKNOWN, RESET_REASON_UNKNOWN);
//| class ResetReason:
//| """The reason the microntroller was last reset"""
@@ -55,7 +56,10 @@ MAKE_ENUM_VALUE(mcu_reset_reason_type, reset_reason, WATCHDOG, RESET_REASON_WATC
//| """The microntroller was reset by a signal on its reset pin. The pin might be connected to a reset button."""
//|
//| WATCHDOG: object
-//| """The chip microcontroller reset by its watchdog timer."""
+//| """The microcontroller was reset by its watchdog timer."""
+//|
+//| UNKNOWN: object
+//| """The microntroller restarted for an unknown reason."""
//|
MAKE_ENUM_MAP(mcu_reset_reason) {
MAKE_ENUM_MAP_ENTRY(reset_reason, POWER_ON),
@@ -64,6 +68,7 @@ MAKE_ENUM_MAP(mcu_reset_reason) {
MAKE_ENUM_MAP_ENTRY(reset_reason, DEEP_SLEEP_ALARM),
MAKE_ENUM_MAP_ENTRY(reset_reason, RESET_PIN),
MAKE_ENUM_MAP_ENTRY(reset_reason, WATCHDOG),
+ MAKE_ENUM_MAP_ENTRY(reset_reason, UNKNOWN),
};
STATIC MP_DEFINE_CONST_DICT(mcu_reset_reason_locals_dict, mcu_reset_reason_locals_table);
diff --git a/shared-bindings/microcontroller/ResetReason.h b/shared-bindings/microcontroller/ResetReason.h
index df1abf266..8ed5e4831 100644
--- a/shared-bindings/microcontroller/ResetReason.h
+++ b/shared-bindings/microcontroller/ResetReason.h
@@ -24,8 +24,8 @@
* THE SOFTWARE.
*/
-#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MCU__RESET_REASON__H
-#define MICROPY_INCLUDED_SHARED_BINDINGS_MCU__RESET_REASON__H
+#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MCU_RESET_REASON__H
+#define MICROPY_INCLUDED_SHARED_BINDINGS_MCU_RESET_REASON__H
#include "py/obj.h"
#include "py/enum.h"
@@ -37,15 +37,9 @@ typedef enum {
RESET_REASON_DEEP_SLEEP_ALARM,
RESET_REASON_RESET_PIN,
RESET_REASON_WATCHDOG,
+ RESET_REASON_UNKNOWN,
} mcu_reset_reason_t;
-extern const cp_enum_obj_t reset_reason_POWER_ON_obj;
-extern const cp_enum_obj_t reset_reason_BROWNOUT_obj;
-extern const cp_enum_obj_t reset_reason_SOFTWARE_obj;
-extern const cp_enum_obj_t reset_reason_DEEP_SLEEP_ALARM_obj;
-extern const cp_enum_obj_t reset_reason_RESET_PIN_obj;
-extern const cp_enum_obj_t reset_reason_WATCHDOG_obj;
-
extern const mp_obj_type_t mcu_reset_reason_type;
-#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MCU__RESET_REASON__H
+#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MCU_RESET_REASON__H
diff --git a/shared-bindings/microcontroller/__init__.c b/shared-bindings/microcontroller/__init__.c
index d09cf8f44..d6ce323c5 100644
--- a/shared-bindings/microcontroller/__init__.c
+++ b/shared-bindings/microcontroller/__init__.c
@@ -56,6 +56,19 @@
//| This object is the sole instance of `microcontroller.Processor`."""
//|
+//| def deep_sleep() -> None:
+//| Go into deep sleep. If the board is connected via USB, disconnect USB first.
+//|
+//| The board will awake from deep sleep only if the reset button is pressed
+//| or it is awoken by an alarm set by `alarm.set_deep_sleep_alarms()`.
+//| ...
+//|
+STATIC mp_obj_t mcu_deep_sleep(void){
+
+ return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_0(mcu_deep_sleep_obj, mcu_deep_sleep);
+
//| def delay_us(delay: int) -> None:
//| """Dedicated delay method used for very short delays. **Do not** do long delays
//| because this stops all other functions from completing. Think of this as an empty
@@ -164,6 +177,7 @@ const mp_obj_module_t mcu_pin_module = {
STATIC const mp_rom_map_elem_t mcu_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_microcontroller) },
{ MP_ROM_QSTR(MP_QSTR_cpu), MP_ROM_PTR(&common_hal_mcu_processor_obj) },
+ { MP_ROM_QSTR(MP_QSTR_deep_sleep), MP_ROM_PTR(&mcu_deep_sleep_obj) },
{ MP_ROM_QSTR(MP_QSTR_delay_us), MP_ROM_PTR(&mcu_delay_us_obj) },
{ MP_ROM_QSTR(MP_QSTR_disable_interrupts), MP_ROM_PTR(&mcu_disable_interrupts_obj) },
{ MP_ROM_QSTR(MP_QSTR_enable_interrupts), MP_ROM_PTR(&mcu_enable_interrupts_obj) },
diff --git a/shared-bindings/microcontroller/__init__.h b/shared-bindings/microcontroller/__init__.h
index ac71de424..c6ccccea7 100644
--- a/shared-bindings/microcontroller/__init__.h
+++ b/shared-bindings/microcontroller/__init__.h
@@ -43,6 +43,8 @@ extern void common_hal_mcu_enable_interrupts(void);
extern void common_hal_mcu_on_next_reset(mcu_runmode_t runmode);
extern void common_hal_mcu_reset(void);
+extern void common_hal_mcu_deep_sleep(void);
+
extern const mp_obj_dict_t mcu_pin_globals;
extern const mcu_processor_obj_t common_hal_mcu_processor_obj;