summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2020-11-20 14:53:13 -0600
committerJeff Epler <jepler@gmail.com>2020-12-29 14:06:32 -0600
commit05ba1431c387db97dbd66c07d3494a4dae7fc570 (patch)
tree13bf7b9d88050a07e49624b06b95f0a5b306fdf4
parentd024df6b065c125f07c929371c94a48b058eff22 (diff)
esp32s2: espidf: Add IDFError
this is an exception class for "generic" IDF errors that don't have their own exception type.
-rw-r--r--ports/esp32s2/bindings/espidf/__init__.c27
-rw-r--r--ports/esp32s2/bindings/espidf/__init__.h1
2 files changed, 24 insertions, 4 deletions
diff --git a/ports/esp32s2/bindings/espidf/__init__.c b/ports/esp32s2/bindings/espidf/__init__.c
index 554bfaa39..5d3950f04 100644
--- a/ports/esp32s2/bindings/espidf/__init__.c
+++ b/ports/esp32s2/bindings/espidf/__init__.c
@@ -65,12 +65,12 @@ STATIC mp_obj_t espidf_heap_caps_get_largest_free_block(void) {
}
MP_DEFINE_CONST_FUN_OBJ_0(espidf_heap_caps_get_largest_free_block_obj, espidf_heap_caps_get_largest_free_block);
-//| class MemoryError(MemoryError):
-//| """Raised when an ESP IDF memory allocation fails."""
+//| class IDFError(OSError):
+//| """Raised for certain generic ESP IDF errors."""
//| ...
//|
-NORETURN void mp_raise_espidf_MemoryError(void) {
- nlr_raise(mp_obj_new_exception(&mp_type_espidf_MemoryError));
+NORETURN void mp_raise_espidf_IDFError(void) {
+ nlr_raise(mp_obj_new_exception(&mp_type_espidf_IDFError));
}
void espidf_exception_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t kind) {
@@ -83,6 +83,24 @@ void espidf_exception_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kin
mp_obj_exception_print(print, o_in, kind);
}
+const mp_obj_type_t mp_type_espidf_IDFError = {
+ { &mp_type_type },
+ .name = MP_QSTR_IDFError,
+ .print = espidf_exception_print,
+ .make_new = mp_obj_exception_make_new,
+ .attr = mp_obj_exception_attr,
+ .parent = &mp_type_OSError,
+};
+
+
+//| class MemoryError(MemoryError):
+//| """Raised when an ESP IDF memory allocation fails."""
+//| ...
+//|
+NORETURN void mp_raise_espidf_MemoryError(void) {
+ nlr_raise(mp_obj_new_exception(&mp_type_espidf_MemoryError));
+}
+
const mp_obj_type_t mp_type_espidf_MemoryError = {
{ &mp_type_type },
.name = MP_QSTR_MemoryError,
@@ -99,6 +117,7 @@ STATIC const mp_rom_map_elem_t espidf_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_heap_caps_get_free_size), MP_ROM_PTR(&espidf_heap_caps_get_free_size_obj)},
{ MP_ROM_QSTR(MP_QSTR_heap_caps_get_largest_free_block), MP_ROM_PTR(&espidf_heap_caps_get_largest_free_block_obj)},
+ { MP_ROM_QSTR(MP_QSTR_IDFError), MP_ROM_PTR(&mp_type_espidf_IDFError) },
{ MP_ROM_QSTR(MP_QSTR_MemoryError), MP_ROM_PTR(&mp_type_espidf_MemoryError) },
};
diff --git a/ports/esp32s2/bindings/espidf/__init__.h b/ports/esp32s2/bindings/espidf/__init__.h
index 356c1c814..e35ec24b8 100644
--- a/ports/esp32s2/bindings/espidf/__init__.h
+++ b/ports/esp32s2/bindings/espidf/__init__.h
@@ -27,6 +27,7 @@
#ifndef MICROPY_INCLUDED_ESP32S2_BINDINGS_ESPIDF___INIT___H
#define MICROPY_INCLUDED_ESP32S2_BINDINGS_ESPIDF___INIT___H
+extern const mp_obj_type_t mp_type_espidf_IDFError;
extern const mp_obj_type_t mp_type_espidf_MemoryError;
NORETURN void mp_raise_espidf_MemoryError(void);