@@ -48,7 +48,6 @@ typedef struct _mach_rtc_obj_t {
4848 bool synced ;
4949} mach_rtc_obj_t ;
5050
51- static RTC_DATA_ATTR uint64_t delta_from_epoch_til_boot ;
5251static RTC_DATA_ATTR uint32_t rtc_user_mem_len ;
5352static RTC_DATA_ATTR uint8_t rtc_user_mem_data [MEM_USER_MAXLEN ];
5453
@@ -61,10 +60,10 @@ void rtc_init0(void) {
6160
6261void mach_rtc_set_us_since_epoch (uint64_t nowus ) {
6362 struct timeval tv ;
64-
6563 // store the packet timestamp
66- gettimeofday (& tv , NULL );
67- delta_from_epoch_til_boot = nowus - (uint64_t )((tv .tv_sec * 1000000ull ) + tv .tv_usec );
64+ tv .tv_usec = nowus % 1000000ull ;
65+ tv .tv_sec = nowus / 1000000ull ;
66+ settimeofday (& tv , NULL );
6867}
6968
7069void mach_rtc_synced (void ) {
@@ -78,8 +77,9 @@ bool mach_is_rtc_synced (void) {
7877uint64_t mach_rtc_get_us_since_epoch (void ) {
7978 struct timeval tv ;
8079 gettimeofday (& tv , NULL );
81- return (uint64_t )((tv .tv_sec * 1000000ull ) + tv .tv_usec ) + delta_from_epoch_til_boot ;
82- };
80+ return (uint64_t )(tv .tv_sec * 1000000ull ) + (tv .tv_usec );
81+
82+ }
8383
8484STATIC uint64_t mach_rtc_datetime_us (const mp_obj_t datetime ) {
8585 timeutils_struct_time_t tm ;
@@ -132,8 +132,6 @@ STATIC void mach_rtc_datetime(const mp_obj_t datetime) {
132132 if (datetime != mp_const_none ) {
133133 useconds = mach_rtc_datetime_us (datetime );
134134 mach_rtc_set_us_since_epoch (useconds );
135- } else {
136- mach_rtc_set_us_since_epoch (0 );
137135 }
138136}
139137
@@ -197,14 +195,10 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(mach_rtc_init_obj, 1, mach_rtc_init);
197195STATIC mp_obj_t mach_rtc_now (mp_obj_t self_in ) {
198196 timeutils_struct_time_t tm ;
199197 uint64_t useconds ;
198+
199+ useconds = mach_rtc_get_us_since_epoch ();
200200
201- struct timeval now ;
202- gettimeofday (& now , NULL );
203-
204- // get the time from the RTC
205- useconds = (now .tv_sec * 1000000ull ) + (now .tv_usec );
206201 timeutils_seconds_since_epoch_to_struct_time ((useconds ) / 1000000ull , & tm );
207-
208202 mp_obj_t tuple [8 ] = {
209203 mp_obj_new_int (tm .tm_year ),
210204 mp_obj_new_int (tm .tm_mon ),
0 commit comments