/* * Copyright (c) 2022, Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include #define GRTC_SLEW_TICKS 10 ZTEST(nrf_grtc_timer, test_get_ticks) { k_timeout_t t = K_MSEC(1); uint64_t exp_ticks = z_nrf_grtc_timer_read() + t.ticks; int64_t ticks; /* Relative 1ms from now timeout converted to GRTC */ ticks = z_nrf_grtc_timer_get_ticks(t); zassert_true((ticks >= exp_ticks) && (ticks <= (exp_ticks + GRTC_SLEW_TICKS)), "Unexpected result %" PRId64 " (expected: %" PRId64 ")", ticks, exp_ticks); /* Absolute timeout 1ms in the past */ t = Z_TIMEOUT_TICKS(Z_TICK_ABS(sys_clock_tick_get() - K_MSEC(1).ticks)); exp_ticks = z_nrf_grtc_timer_read() - K_MSEC(1).ticks; ticks = z_nrf_grtc_timer_get_ticks(t); zassert_true((ticks >= exp_ticks) && (ticks <= (exp_ticks + GRTC_SLEW_TICKS)), "Unexpected result %" PRId64 " (expected: %" PRId64 ")", ticks, exp_ticks); /* Absolute timeout 10ms in the future */ t = Z_TIMEOUT_TICKS(Z_TICK_ABS(sys_clock_tick_get() + K_MSEC(10).ticks)); exp_ticks = z_nrf_grtc_timer_read() + K_MSEC(10).ticks; ticks = z_nrf_grtc_timer_get_ticks(t); zassert_true((ticks >= exp_ticks) && (ticks <= (exp_ticks + GRTC_SLEW_TICKS)), "Unexpected result %" PRId64 " (expected: %" PRId64 ")", ticks, exp_ticks); } ZTEST_SUITE(nrf_grtc_timer, NULL, NULL, NULL, NULL, NULL);