From 131bbbd5c45022dcab41806ea0e951d86d3c799d Mon Sep 17 00:00:00 2001 From: Renz Bagaporo Date: Mon, 8 Mar 2021 23:02:04 +0800 Subject: [PATCH] esp_system: test system time for rtc compensation --- components/esp_system/test/test_system_time.c | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 components/esp_system/test/test_system_time.c diff --git a/components/esp_system/test/test_system_time.c b/components/esp_system/test/test_system_time.c new file mode 100644 index 0000000000..7cd23cc1e5 --- /dev/null +++ b/components/esp_system/test/test_system_time.c @@ -0,0 +1,36 @@ +#include +#include "unity.h" + +#include "esp_private/system_internal.h" + +#if CONFIG_IDF_TARGET_ESP32 +#include "esp32/clk.h" +#elif CONFIG_IDF_TARGET_ESP32S2 +#include "esp32s2/clk.h" +#elif CONFIG_IDF_TARGET_ESP32S3 +#include "esp32s3/clk.h" +#elif CONFIG_IDF_TARGET_ESP32C3 +#include "esp32c3/clk.h" +#endif + +TEST_CASE("Test effect of rtc clk calibration compensation on system time", "[esp_system]") +{ + uint32_t prev_cal = esp_clk_slowclk_cal_get(); + int64_t t1 = esp_system_get_time(); + + // Modify calibration value + esp_clk_slowclk_cal_set(prev_cal/2); + + // Internally, the origin point of rtc clk has been adjusted + // so that t2 > t1 remains true + int64_t t2 = esp_system_get_time(); + + TEST_ASSERT_GREATER_THAN(t1, t2); + + // Restore calibration value + esp_clk_slowclk_cal_set(prev_cal); + + t2 = esp_system_get_time(); + + TEST_ASSERT_GREATER_THAN(t1, t2); +}