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