@@ -64,12 +64,27 @@ STATIC mp_obj_t time_sleep_us(mp_obj_t arg) {
6464}
6565STATIC MP_DEFINE_CONST_FUN_OBJ_1 (time_sleep_us_obj , time_sleep_us );
6666
67+ STATIC mp_obj_t time_ticks_ms (void ) {
68+ return MP_OBJ_NEW_SMALL_INT (mp_hal_ticks_ms () & MP_SMALL_INT_POSITIVE_MASK );
69+ }
70+ STATIC MP_DEFINE_CONST_FUN_OBJ_0 (time_ticks_ms_obj , time_ticks_ms );
71+
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+
6780STATIC const mp_map_elem_t time_module_globals_table [] = {
6881 { MP_OBJ_NEW_QSTR (MP_QSTR___name__ ), MP_OBJ_NEW_QSTR (MP_QSTR_utime ) },
6982
7083 { MP_OBJ_NEW_QSTR (MP_QSTR_sleep ), (mp_obj_t )& time_sleep_obj },
7184 { MP_OBJ_NEW_QSTR (MP_QSTR_sleep_ms ), (mp_obj_t )& time_sleep_ms_obj },
7285 { MP_OBJ_NEW_QSTR (MP_QSTR_sleep_us ), (mp_obj_t )& time_sleep_us_obj },
86+ { 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 },
7388};
7489
7590STATIC MP_DEFINE_CONST_DICT (time_module_globals , time_module_globals_table );
0 commit comments