diff options
author | Dave Hylands <dhylands@gmail.com> | 2014-07-01 23:46:53 -0700 |
---|---|---|
committer | Dave Hylands <dhylands@gmail.com> | 2014-07-25 14:00:06 -0700 |
commit | 5b7fd20fea6d4329bb3ab45f63df41f46f242688 (patch) | |
tree | 10f806ab0d883bc6c087cc22b55b787adbdcf815 /py/modmicropython.c | |
parent | 05c255f039b5c0fbdcb0754748fd5d36135acfd9 (diff) |
Add support for storing args during an exception raised by an irq.
The user code should call micropython.alloc_emergency_exception_buf(size)
where size is the size of the buffer used to print the argument
passed to the exception.
With the test code from #732, and a call to
micropython.alloc_emergenncy_exception_buf(100) the following error is
now printed:
```python
>>> import heartbeat_irq
Uncaught exception in Timer(4) interrupt handler
Traceback (most recent call last):
File "0://heartbeat_irq.py", line 14, in heartbeat_cb
NameError: name 'led' is not defined
```
Diffstat (limited to 'py/modmicropython.c')
-rw-r--r-- | py/modmicropython.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/py/modmicropython.c b/py/modmicropython.c index 0d559c42a..78beb88af 100644 --- a/py/modmicropython.c +++ b/py/modmicropython.c @@ -51,6 +51,10 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_micropython_mem_current_obj, mp_micropython_ STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_micropython_mem_peak_obj, mp_micropython_mem_peak); #endif +#if MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF && (MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE == 0) +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_alloc_emergency_exception_buf_obj, mp_alloc_emergency_exception_buf); +#endif + STATIC const mp_map_elem_t mp_module_micropython_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_micropython) }, #if MICROPY_MEM_STATS @@ -58,6 +62,9 @@ STATIC const mp_map_elem_t mp_module_micropython_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_mem_current), (mp_obj_t)&mp_micropython_mem_current_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_mem_peak), (mp_obj_t)&mp_micropython_mem_peak_obj }, #endif +#if MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF && (MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE == 0) + { MP_OBJ_NEW_QSTR(MP_QSTR_alloc_emergency_exception_buf), (mp_obj_t)&mp_alloc_emergency_exception_buf_obj }, +#endif }; STATIC const mp_obj_dict_t mp_module_micropython_globals = { |