@@ -69,13 +69,22 @@ STATIC mp_obj_t time_ticks_ms(void) {
6969}
7070STATIC MP_DEFINE_CONST_FUN_OBJ_0 (time_ticks_ms_obj ,time_ticks_ms );
7171
72+ STATIC mp_obj_t time_ticks_diff (mp_obj_t start_in ,mp_obj_t end_in ) {
73+ // we assume that the arguments come from ticks_xx so are small ints
74+ uint32_t start = MP_OBJ_SMALL_INT_VALUE (start_in );
75+ uint32_t end = MP_OBJ_SMALL_INT_VALUE (end_in );
76+ return MP_OBJ_NEW_SMALL_INT ((end - start )& MP_SMALL_INT_POSITIVE_MASK );
77+ }
78+ STATIC MP_DEFINE_CONST_FUN_OBJ_2 (time_ticks_diff_obj ,time_ticks_diff );
79+
7280STATIC const mp_map_elem_t time_module_globals_table []= {
7381 {MP_OBJ_NEW_QSTR (MP_QSTR___name__ ),MP_OBJ_NEW_QSTR (MP_QSTR_utime ) },
7482
7583 {MP_OBJ_NEW_QSTR (MP_QSTR_sleep ), (mp_obj_t )& time_sleep_obj },
7684 {MP_OBJ_NEW_QSTR (MP_QSTR_sleep_ms ), (mp_obj_t )& time_sleep_ms_obj },
7785 {MP_OBJ_NEW_QSTR (MP_QSTR_sleep_us ), (mp_obj_t )& time_sleep_us_obj },
7886 {MP_OBJ_NEW_QSTR (MP_QSTR_ticks_ms ), (mp_obj_t )& time_ticks_ms_obj },
87+ {MP_OBJ_NEW_QSTR (MP_QSTR_ticks_diff ), (mp_obj_t )& time_ticks_diff_obj },
7988};
8089
8190STATIC MP_DEFINE_CONST_DICT (time_module_globals ,time_module_globals_table );