#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

menu "Segger RTT drivers"

config SEGGER_RTT
	bool
	---help---
		Enable Segger J-Link RTT libraries for platforms that support it.
		Selection of this option enables use of RTT for various subsystems.
		Note that by enabling this option, RTT buffers consume more RAM.

if SEGGER_RTT

config SEGGER_RTT_SECTION
	string "Segger RTT Control Block Section"
	default ""
	---help---
		Declare _SEGGER_RTT global variable in the specific data section.

config SEGGER_RTT_BUFFER_SECTION
	string "Segger RTT Buffer Block Section"
	default SEGGER_RTT_SECTION
	---help---
		Declare _acUpBuffer/_acDownBuffer global variables in the specific
		data section.

config SEGGER_RTT_CPU_CACHE_LINE_SIZE
	int "Segger RTT Cache Line Size"
	default 0
	---help---
		Largest cache line size (in bytes) in the target system.

config SEGGER_RTT_UNCACHED_OFF
	int "Segger RTT uncached offset"
	default 0
	---help---
		Address alias where RTT CB and buffers can be accessed uncached

config SEGGER_RTT_MAX_NUM_UP_BUFFERS
	int "Segger RTT Maximum Number of UP Buffers"
	default 3
	---help---
		Number of up-buffers (T->H) available on this target

config SEGGER_RTT_MAX_NUM_DOWN_BUFFERS
	int "Segger RTT Maximum Number of Down Buffers"
	default SEGGER_RTT_MAX_NUM_UP_BUFFERS
	---help---
		Number of down-buffers (H->T) available on this target

config SEGGER_RTT_BUFFER_SIZE_UP
	int "Segger RTT UP Buffer Size"
	default 1024
	---help---
		Size of the buffer for terminal output of target, up to host

config SEGGER_RTT_BUFFER_SIZE_DOWN
	int "Segger RTT Down Buffer Size"
	default 16
	---help---
		Size of the buffer for terminal input to target from host (Usually keyboard input)

config SEGGER_RTT1_BUFFER_SIZE_UP
	int "Segger RTT Channel 1 UP Buffer Size"
	depends on SEGGER_RTT_MAX_NUM_UP_BUFFERS >= 2
	default SEGGER_RTT_BUFFER_SIZE_UP
	---help---
		Size of the buffer for channel 1 output of target, up to host

config SEGGER_RTT1_BUFFER_SIZE_DOWN
	int "Segger RTT Channel 1 DOWN Buffer Size"
	depends on SEGGER_RTT_MAX_NUM_DOWN_BUFFERS >= 2
	default SEGGER_RTT_BUFFER_SIZE_DOWN
	---help---
		Size of the buffer for channel 1 input to target from host

config SEGGER_RTT2_BUFFER_SIZE_UP
	int "Segger RTT Channel 2 UP Buffer Size"
	depends on SEGGER_RTT_MAX_NUM_UP_BUFFERS >= 3
	default SEGGER_RTT_BUFFER_SIZE_UP
	---help---
		Size of the buffer for channel 2 output of target, up to host

config SEGGER_RTT2_BUFFER_SIZE_DOWN
	int "Segger RTT Channel 2 Down Buffer Size"
	depends on SEGGER_RTT_MAX_NUM_DOWN_BUFFERS >= 3
	default SEGGER_RTT_BUFFER_SIZE_DOWN
	---help---
		Size of the buffer for channel 2 input to target from host

choice
	prompt "SEGGER_RTT_MODE"
	default SEGGER_RTT_MODE_NO_BLOCK_SKIP

config SEGGER_RTT_MODE_NO_BLOCK_SKIP
	bool "Skip. Do not block, output nothing. (Default)"

config SEGGER_RTT_MODE_NO_BLOCK_TRIM
	bool "Trim: Do not block, output as much as fits."

config SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL
	bool "Block: Wait until there is space in the buffer."

endchoice # SEGGER_RTT_MODE

endif # SEGGER_RTT

config STREAM_RTT
	bool "Stream to/from Segger J-Link RTT"
	select SEGGER_RTT
	default n
	---help---
		Use Segger J-Link RTT as a stream input and output.

config SYSLOG_RTT
	bool "Log to Segger J-Link RTT"
	select SEGGER_RTT
	default n
	---help---
		Use Segger J-Link RTT as a SYSLOG output device.

config SYSLOG_RTT_CHANNEL
	int "SYSLOG RTT channel"
	depends on SYSLOG_RTT
	default 0
	---help---
		SYSLOG RTT channel number

config SERIAL_RTT
	bool
	select SEGGER_RTT
	select SERIAL_RXDMA
	select SERIAL_TXDMA
	default n
	---help---
		This option is used to enable RTT serial device
		In Segger RTT serial driver, RTT channel buffer and serial DMA buffer are shared,
		So you cannot use RTT stream to operate it

config SERIAL_RTT_POLLING_INTERVAL
	int "Segger RTT serial pilling interval (us)"
	depends on SERIAL_RTT
	default USEC_PER_TICK
	---help---
		This option is used to configure the RTT serial polling interval

config SERIAL_RTT0
	bool "Segger RTT serial for channel 0"
	select SERIAL_RTT
	depends on SERIAL
	default n
	---help---
		This option is used to enable the serial driver of channel 0

config SERIAL_RTT1
	bool "Segger RTT serial for channel 1"
	select SERIAL_RTT
	depends on SERIAL
	default n
	---help---
		This option is used to enable the serial driver of channel 1

config SERIAL_RTT2
	bool "Segger RTT serial for channel 2"
	select SERIAL_RTT
	depends on SERIAL
	default n
	---help---
		This option is used to enable the serial driver of channel 2

config SERIAL_RTT_CONSOLE
	bool "Segger RTT console support"
	depends on SERIAL_RTT
	default y
	---help---
		If this opsion is selected, then RTT channel can be used as console

config SERIAL_RTT_CONSOLE_CHANNEL
	int "Segger RTT console channel"
	depends on SERIAL_RTT && SERIAL_RTT_CONSOLE
	default 0 if SERIAL_RTT0
	default 1 if SERIAL_RTT1
	default 2 if SERIAL_RTT2
	default -1
	---help---
		Select RTT console channel, using RTT channel 0 by default.
		The buffer size of RTT channel 0 is configured by SEGGER_RTT_BUFFER_SIZE_UP/DOWN
		You need to turn off other console devices before using Segger RTT console

if DRIVERS_NOTE

config NOTE_RTT
	bool "Note RTT driver, write note into Segger J-Link RTTLog"
	default n
	---help---
		If this option is selected, then jlink rtt is enabled to capture
		scheduler instrumentation data.

if NOTE_RTT

config NOTE_RTT_CHANNEL
	int "Note RTT driver, Segger J-Link stream channel"
	default 0
	---help---
		Channel of notertt jlink stream channel

config NOTE_RTT_BUFFER_SIZE_UP
	int "Note RTT driver, Segger J-Link buffer size"
	default 1024
	---help---
		Buffer size config for notertt jlink config buffer

endif # NOTE_RTT

config SEGGER_SYSVIEW
	bool "Note SEGGER SystemView driver"
	select SEGGER_RTT
	---help---
		SystemView is a real-time recording and visualization tool for embedded
		systems that reveals the true runtime behavior of an application,
		going far deeper than the system insights provided by debuggers. This is
		particularly effective when developing and working with complex embedded
		systems comprising multiple threads and interrupts. SystemView can ensure
		unintended interactions and resource conflicts.

if SEGGER_SYSVIEW

config SEGGER_SYSVIEW_RTT_CHANNEL
	int "Segger System View RTT channel"
	default 0
	---help---
		The RTT channel number for SystemView, zero find the unused one.

config SEGGER_SYSVIEW_RTT_BUFFER_SIZE
	int "Segger System View buffer size"
	default SEGGER_RTT_BUFFER_SIZE_UP
	---help---
		Number of bytes that SystemView uses for the RTT buffer.

config SEGGER_SYSVIEW_RAM_BASE
	int "Segger System View Ram Base"
	default 0
	---help---
		The lowest RAM address used for IDs

endif # SEGGER_SYSVIEW

endif # DRIVERS_NOTE

endmenu # Segger RTT drivers