# CAN loopback device configuration options

# Copyright (c) 2019 Alexander Wachter
# SPDX-License-Identifier: Apache-2.0

config CAN_LOOPBACK
	bool "Emulated CAN loopback driver"
	default y
	depends on DT_HAS_ZEPHYR_CAN_LOOPBACK_ENABLED
	select CAN_HAS_CANFD
	help
	  This is an emulated driver that can only loopback messages.

if CAN_LOOPBACK

config CAN_MAX_FILTER
	int "Maximum number of concurrent active filters"
	default 16
	range 1 1024
	help
	  Defines the array size of the filters.
	  Must be at least the size of concurrent reads.

config CAN_LOOPBACK_TX_THREAD_STACK_SIZE
	int "TX thread stack size"
	default 256
	help
	  Stack size of the TX thread.
	  The TX thread calls the callbacks of the receiver
	  if the filter matches.

config CAN_LOOPBACK_TX_THREAD_PRIORITY
	int "TX thread priority"
	default 2
	help
	  Priority of the TX thread.
	  The TX thread calls the callbacks of the receiver
	  if the filter matches.

config CAN_LOOPBACK_TX_MSGQ_SIZE
	int "TX message queue size"
	default 16
	help
	  Number of TX frames that can be buffered.
	  The send functions puts frame int this queue and TX thread takes the
	  messages from this msgq and calls the respective receiver if the
	  filter matches.

endif # CAN_LOOPBACK
