From d02f6a9956760425188f517f3708c76123e53d2a Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Thu, 22 Dec 2016 00:29:32 +0300 Subject: extmod/modutimeq: Refactor into optimized class. import utimeq, utime # Max queue size, the queue allocated statically on creation q = utimeq.utimeq(10) q.push(utime.ticks_ms(), data1, data2) res = [0, 0, 0] # Items in res are filled up with results q.pop(res) --- py/builtin.h | 1 + py/mpconfig.h | 5 +++++ py/objmodule.c | 3 +++ py/py.mk | 1 + 4 files changed, 10 insertions(+) (limited to 'py') diff --git a/py/builtin.h b/py/builtin.h index 893e47104..282eb1cc9 100644 --- a/py/builtin.h +++ b/py/builtin.h @@ -110,6 +110,7 @@ extern const mp_obj_module_t mp_module_ubinascii; extern const mp_obj_module_t mp_module_urandom; extern const mp_obj_module_t mp_module_uselect; extern const mp_obj_module_t mp_module_ussl; +extern const mp_obj_module_t mp_module_utimeq; extern const mp_obj_module_t mp_module_machine; extern const mp_obj_module_t mp_module_lwip; extern const mp_obj_module_t mp_module_websocket; diff --git a/py/mpconfig.h b/py/mpconfig.h index 7a71ebd95..8cf4bbb77 100644 --- a/py/mpconfig.h +++ b/py/mpconfig.h @@ -945,6 +945,11 @@ typedef double mp_float_t; #define MICROPY_PY_UHEAPQ (0) #endif +// Optimized heap queue for relative timestamps +#ifndef MICROPY_PY_UTIMEQ +#define MICROPY_PY_UTIMEQ (0) +#endif + #ifndef MICROPY_PY_UHASHLIB #define MICROPY_PY_UHASHLIB (0) #endif diff --git a/py/objmodule.c b/py/objmodule.c index 6f7d35d42..1c79e1a18 100644 --- a/py/objmodule.c +++ b/py/objmodule.c @@ -189,6 +189,9 @@ STATIC const mp_rom_map_elem_t mp_builtin_module_table[] = { #if MICROPY_PY_UHEAPQ { MP_ROM_QSTR(MP_QSTR_uheapq), MP_ROM_PTR(&mp_module_uheapq) }, #endif +#if MICROPY_PY_UTIMEQ + { MP_ROM_QSTR(MP_QSTR_utimeq), MP_ROM_PTR(&mp_module_utimeq) }, +#endif #if MICROPY_PY_UHASHLIB { MP_ROM_QSTR(MP_QSTR_uhashlib), MP_ROM_PTR(&mp_module_uhashlib) }, #endif diff --git a/py/py.mk b/py/py.mk index 79436aa9e..ec22fbe63 100644 --- a/py/py.mk +++ b/py/py.mk @@ -212,6 +212,7 @@ PY_O_BASENAME = \ ../extmod/modure.o \ ../extmod/moduzlib.o \ ../extmod/moduheapq.o \ + ../extmod/modutimeq.o \ ../extmod/moduhashlib.o \ ../extmod/modubinascii.o \ ../extmod/virtpin.o \ -- cgit v1.2.3