@@ -151,6 +151,16 @@ STATIC mp_obj_t time_time(void) {
151
151
}
152
152
MP_DEFINE_CONST_FUN_OBJ_0 (time_time_obj , time_time );
153
153
154
+ STATIC mp_obj_t time_time_us (void ) {
155
+ struct timeval tv ;
156
+ if (gettimeofday (& tv , NULL ) != 0 ) {
157
+ mp_raise_OSError (errno );
158
+ }
159
+ long long usec = ((long long )tv .tv_sec - EPOCH_DELTA ) * 1000000 + (long long )tv .tv_usec ;
160
+ return mp_obj_new_int_from_ll (usec );
161
+ }
162
+ MP_DEFINE_CONST_FUN_OBJ_0 (time_time_us_obj , time_time_us );
163
+
154
164
STATIC mp_obj_t time_tzset (mp_obj_t tz ) {
155
165
// tz is something like PST+8PDT,M3.2.0/2,M11.1.0/2
156
166
const char * zone = mp_obj_str_get_str (tz );
@@ -160,14 +170,16 @@ STATIC mp_obj_t time_tzset(mp_obj_t tz) {
160
170
}
161
171
MP_DEFINE_CONST_FUN_OBJ_1 (time_tzset_obj , time_tzset );
162
172
163
- STATIC mp_obj_t time_settime (const mp_obj_t seconds_in ) {
164
- struct timeval tv = { mp_obj_get_int (seconds_in ) + EPOCH_DELTA , 0 };
173
+ STATIC mp_obj_t time_settime (const mp_obj_t secs_in , const mp_obj_t usecs_in ) {
174
+ mp_int_t secs = mp_obj_get_int (secs_in );
175
+ mp_int_t usecs = mp_obj_get_int (usecs_in );
176
+ struct timeval tv = { secs + EPOCH_DELTA , usecs };
165
177
if (settimeofday (& tv , NULL ) != 0 ) {
166
178
mp_raise_OSError (errno );
167
179
}
168
180
return mp_const_none ;
169
181
}
170
- MP_DEFINE_CONST_FUN_OBJ_1 (time_settime_obj , time_settime );
182
+ MP_DEFINE_CONST_FUN_OBJ_2 (time_settime_obj , time_settime );
171
183
172
184
STATIC mp_obj_t time_adjtime (const mp_obj_t microseconds_in ) {
173
185
// esp-idf is adjtime is broken in that it returns the current adjustment instead of
@@ -203,6 +215,7 @@ STATIC const mp_rom_map_elem_t time_module_globals_table[] = {
203
215
{ MP_ROM_QSTR (MP_QSTR_mktime ), MP_ROM_PTR (& time_mktime_obj ) },
204
216
{ MP_ROM_QSTR (MP_QSTR_tzset ), MP_ROM_PTR (& time_tzset_obj ) },
205
217
{ MP_ROM_QSTR (MP_QSTR_time ), MP_ROM_PTR (& time_time_obj ) },
218
+ { MP_ROM_QSTR (MP_QSTR_time_us ), MP_ROM_PTR (& time_time_us_obj ) },
206
219
{ MP_ROM_QSTR (MP_QSTR_settime ), MP_ROM_PTR (& time_settime_obj ) },
207
220
{ MP_ROM_QSTR (MP_QSTR_adjtime ), MP_ROM_PTR (& time_adjtime_obj ) },
208
221
{ MP_ROM_QSTR (MP_QSTR_sleep ), MP_ROM_PTR (& mp_utime_sleep_obj ) },
0 commit comments