summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-10-29 17:30:05 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-10-29 17:30:05 +0300
commitd86cac4b8268bbe9203cdd7ab8d8c2a65d142986 (patch)
treee42a9b6c8c5270fb84786cb4e6421cec4f82533b
parentc62679bdaadea2277291aa3f8bc1e36757b1c61d (diff)
downloadmicropython-d86cac4b8268bbe9203cdd7ab8d8c2a65d142986.tar.gz
micropython-d86cac4b8268bbe9203cdd7ab8d8c2a65d142986.zip
extmod/utime_mphal: Implement ticks_add(), add to all maintained ports.
-rw-r--r--esp8266/modutime.c1
-rw-r--r--extmod/utime_mphal.c8
-rw-r--r--extmod/utime_mphal.h1
-rw-r--r--stmhal/modutime.c1
-rw-r--r--unix/modtime.c1
-rw-r--r--zephyr/modutime.c1
6 files changed, 13 insertions, 0 deletions
diff --git a/esp8266/modutime.c b/esp8266/modutime.c
index abfe069cc3..f3dfc462dc 100644
--- a/esp8266/modutime.c
+++ b/esp8266/modutime.c
@@ -119,6 +119,7 @@ STATIC const mp_map_elem_t time_module_globals_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR_ticks_ms), (mp_obj_t)&mp_utime_ticks_ms_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ticks_us), (mp_obj_t)&mp_utime_ticks_us_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ticks_cpu), (mp_obj_t)&mp_utime_ticks_cpu_obj },
+ { MP_ROM_QSTR(MP_QSTR_ticks_add), MP_ROM_PTR(&mp_utime_ticks_add_obj) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ticks_diff), (mp_obj_t)&mp_utime_ticks_diff_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_time), (mp_obj_t)&time_time_obj },
};
diff --git a/extmod/utime_mphal.c b/extmod/utime_mphal.c
index 9bdf841889..609a0da84a 100644
--- a/extmod/utime_mphal.c
+++ b/extmod/utime_mphal.c
@@ -93,4 +93,12 @@ STATIC mp_obj_t time_ticks_diff(mp_obj_t end_in, mp_obj_t start_in) {
}
MP_DEFINE_CONST_FUN_OBJ_2(mp_utime_ticks_diff_obj, time_ticks_diff);
+STATIC mp_obj_t time_ticks_add(mp_obj_t ticks_in, mp_obj_t delta_in) {
+ // we assume that first argument come from ticks_xx so is small int
+ uint32_t ticks = MP_OBJ_SMALL_INT_VALUE(ticks_in);
+ uint32_t delta = (uint32_t)mp_obj_get_int(delta_in);
+ return MP_OBJ_NEW_SMALL_INT((ticks + delta) & MP_SMALL_INT_POSITIVE_MASK);
+}
+MP_DEFINE_CONST_FUN_OBJ_2(mp_utime_ticks_add_obj, time_ticks_add);
+
#endif // MICROPY_PY_UTIME_MP_HAL
diff --git a/extmod/utime_mphal.h b/extmod/utime_mphal.h
index c7611e251b..644387b676 100644
--- a/extmod/utime_mphal.h
+++ b/extmod/utime_mphal.h
@@ -34,3 +34,4 @@ MP_DECLARE_CONST_FUN_OBJ_0(mp_utime_ticks_ms_obj);
MP_DECLARE_CONST_FUN_OBJ_0(mp_utime_ticks_us_obj);
MP_DECLARE_CONST_FUN_OBJ_0(mp_utime_ticks_cpu_obj);
MP_DECLARE_CONST_FUN_OBJ_2(mp_utime_ticks_diff_obj);
+MP_DECLARE_CONST_FUN_OBJ_2(mp_utime_ticks_add_obj);
diff --git a/stmhal/modutime.c b/stmhal/modutime.c
index fae360bb02..501b625822 100644
--- a/stmhal/modutime.c
+++ b/stmhal/modutime.c
@@ -142,6 +142,7 @@ STATIC const mp_map_elem_t time_module_globals_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR_ticks_ms), (mp_obj_t)&mp_utime_ticks_ms_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ticks_us), (mp_obj_t)&mp_utime_ticks_us_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ticks_cpu), (mp_obj_t)&mp_utime_ticks_cpu_obj },
+ { MP_ROM_QSTR(MP_QSTR_ticks_add), MP_ROM_PTR(&mp_utime_ticks_add_obj) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ticks_diff), (mp_obj_t)&mp_utime_ticks_diff_obj },
};
diff --git a/unix/modtime.c b/unix/modtime.c
index 33cf1cdab8..e90826f14a 100644
--- a/unix/modtime.c
+++ b/unix/modtime.c
@@ -152,6 +152,7 @@ STATIC const mp_rom_map_elem_t mp_module_time_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_time), MP_ROM_PTR(&mod_time_time_obj) },
{ MP_ROM_QSTR(MP_QSTR_ticks_ms), MP_ROM_PTR(&mp_utime_ticks_ms_obj) },
{ MP_ROM_QSTR(MP_QSTR_ticks_us), MP_ROM_PTR(&mp_utime_ticks_us_obj) },
+ { MP_ROM_QSTR(MP_QSTR_ticks_add), MP_ROM_PTR(&mp_utime_ticks_add_obj) },
{ MP_ROM_QSTR(MP_QSTR_ticks_diff), MP_ROM_PTR(&mp_utime_ticks_diff_obj) },
{ MP_ROM_QSTR(MP_QSTR_strftime), MP_ROM_PTR(&mod_time_strftime_obj) },
};
diff --git a/zephyr/modutime.c b/zephyr/modutime.c
index b18d6b837c..8b96a5ab1e 100644
--- a/zephyr/modutime.c
+++ b/zephyr/modutime.c
@@ -53,6 +53,7 @@ STATIC const mp_rom_map_elem_t mp_module_time_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_ticks_ms), MP_ROM_PTR(&mp_utime_ticks_ms_obj) },
{ MP_ROM_QSTR(MP_QSTR_ticks_us), MP_ROM_PTR(&mp_utime_ticks_us_obj) },
{ MP_ROM_QSTR(MP_QSTR_ticks_cpu), MP_ROM_PTR(&mp_utime_ticks_cpu_obj) },
+ { MP_ROM_QSTR(MP_QSTR_ticks_add), MP_ROM_PTR(&mp_utime_ticks_add_obj) },
{ MP_ROM_QSTR(MP_QSTR_ticks_diff), MP_ROM_PTR(&mp_utime_ticks_diff_obj) },
};