@@ -307,7 +307,6 @@ void clock_resynchronize(FAR struct timespec *rtc_diff)
307
307
struct timespec curr_ts ;
308
308
struct timespec rtc_diff_tmp ;
309
309
irqstate_t flags ;
310
- int32_t carry ;
311
310
int ret ;
312
311
313
312
if (rtc_diff == NULL )
@@ -344,17 +343,7 @@ void clock_resynchronize(FAR struct timespec *rtc_diff)
344
343
* was last set, this gives us the current time.
345
344
*/
346
345
347
- curr_ts .tv_sec = bias .tv_sec + g_basetime .tv_sec ;
348
- curr_ts .tv_nsec = bias .tv_nsec + g_basetime .tv_nsec ;
349
-
350
- /* Handle carry to seconds. */
351
-
352
- if (curr_ts .tv_nsec >= NSEC_PER_SEC )
353
- {
354
- carry = curr_ts .tv_nsec / NSEC_PER_SEC ;
355
- curr_ts .tv_sec += carry ;
356
- curr_ts .tv_nsec -= (carry * NSEC_PER_SEC );
357
- }
346
+ clock_timespec_add (& bias , & g_basetime , & curr_ts );
358
347
359
348
/* Check if RTC has advanced past system time. */
360
349
@@ -375,29 +364,7 @@ void clock_resynchronize(FAR struct timespec *rtc_diff)
375
364
{
376
365
/* Output difference between time at entry and new current time. */
377
366
378
- rtc_diff -> tv_sec = rtc_time .tv_sec - curr_ts .tv_sec ;
379
- rtc_diff -> tv_nsec = rtc_time .tv_nsec - curr_ts .tv_nsec ;
380
-
381
- /* Handle carry to seconds. */
382
-
383
- if (rtc_diff -> tv_nsec < 0 )
384
- {
385
- carry = - ((- (rtc_diff -> tv_nsec + 1 )) / NSEC_PER_SEC + 1 );
386
- }
387
- else if (rtc_diff -> tv_nsec >= NSEC_PER_SEC )
388
- {
389
- carry = rtc_diff -> tv_nsec / NSEC_PER_SEC ;
390
- }
391
- else
392
- {
393
- carry = 0 ;
394
- }
395
-
396
- if (carry != 0 )
397
- {
398
- rtc_diff -> tv_sec += carry ;
399
- rtc_diff -> tv_nsec -= (carry * NSEC_PER_SEC );
400
- }
367
+ clock_timespec_subtract (& rtc_time , & curr_ts , rtc_diff );
401
368
402
369
/* Add the sleep time to correct system timer */
403
370
0 commit comments