# SPDX-License-Identifier: Apache-2.0
# Copyright (c) 2022 Intel Corporation

mainmenu "Timer Behavior Test"

config SYS_CLOCK_TICKS_PER_SEC
	default 8192 if NRF_RTC_TIMER && TICKLESS_KERNEL

source "Kconfig.zephyr"

config TIMER_TEST_SAMPLES
	int "The number of timer samples to gather for statistics"
	default 1000 if (SRAM_SIZE < 24)
	default 2000 if (SRAM_SIZE < 32)
	default 3000 if (SRAM_SIZE < 48)
	default 5000 if (SRAM_SIZE < 64)
	default 7000 if (SRAM_SIZE < 96)
	default 10000

config TIMER_TEST_PERIOD
	int "The number of microseconds to for the timer period"
	default 1000

config TIMER_TEST_MAX_STDDEV
	int "Maximum standard deviation in microseconds allowed"
	default 10

config TIMER_TEST_MAX_DRIFT
	int "Maximum drift in microseconds allowed (should be about 1 period allowance)"
	default 1000

config TIMER_TEST_PERIOD_MAX_DRIFT_PERCENT
	int "Maximum drift percentage for the timer period"
	# Use 13% on nRF platforms using the RTC timer because one tick there is
	# ~122 us (see SYS_CLOCK_TICKS_PER_SEC configuration above) and one tick
	# difference in the test period is nothing unusual (it can happen for
	# example if a new tick elapses right after the kernel gets the number
	# of elapsed ticks when scheduling a new timeout but before the timer
	# driver sets up that timeout).
	default 13 if NRF_RTC_TIMER && TICKLESS_KERNEL
	default 10
	help
	  A value of 10 means 10%.

config TIMER_EXTERNAL_TEST
	bool "Perform test using an external tool"
	help
	  Toggles a GPIO pin, on every period, that can be used by an external
	  tool (such as a logic analyzer) to gather timing data. A pytest harness
	  is used to get the data collected by the tool and evaluate it.

if TIMER_EXTERNAL_TEST

config TIMER_EXTERNAL_TEST_MAX_DRIFT_PPM
	int "Maximum drift in PPM for tests using external tool"
	default 4500
	help
	  Parts Per Million of allowed drift when using an external tool
	  connected to a GPIO pin is used to measure time behaviour.

config TIMER_EXTERNAL_TEST_PERIOD_MAX_DRIFT_PPM
	int "Maximum timer period drift in PPM for tests using external tool"
	default 100000
	help
	  Parts Per Million of allowed period drift when using an external tool
	  connected to a GPIO pin is used to measure time behaviour.

config TIMER_EXTERNAL_TEST_SYNC_DELAY
	int "Delay, in seconds, between tests, so that external tool can be ready"
	default 3

endif # TIMER_EXTERNAL_TEST
