From 50b710d2675ba88355b4d0787f4e35223faad781 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 8 Dec 2017 16:06:11 +0800 Subject: [PATCH] newlib/time: fix compilation error when only RTC is used as clock source Fixes https://github.com/espressif/esp-idf/issues/1245 --- components/newlib/time.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/components/newlib/time.c b/components/newlib/time.c index edb9a59fe..8aeb5b37e 100644 --- a/components/newlib/time.c +++ b/components/newlib/time.c @@ -74,13 +74,15 @@ static uint64_t get_rtc_time_us() // when RTC is used to persist time, two RTC_STORE registers are used to store boot time #elif defined(WITH_FRC1) static uint64_t s_boot_time; -#endif +#endif // WITH_RTC #if defined(WITH_RTC) || defined(WITH_FRC1) static _lock_t s_boot_time_lock; #endif -#ifdef WITH_RTC +// Offset between FRC timer and the RTC. +// Initialized after reset or light sleep. +#if defined(WITH_RTC) && defined(WITH_FRC1) uint64_t s_microseconds_offset; #endif @@ -171,10 +173,14 @@ static uint64_t get_time_since_boot() { uint64_t microseconds = 0; #ifdef WITH_FRC1 +#ifdef WITH_RTC microseconds = s_microseconds_offset + esp_timer_get_time(); +#else + microseconds = esp_timer_get_time(); +#endif // WITH_RTC #elif defined(WITH_RTC) microseconds = get_rtc_time_us(); -#endif +#endif // WITH_FRC1 return microseconds; } #endif // defined( WITH_FRC1 ) || defined( WITH_RTC )