#
# Copyright (c) 2020 Siddharth Chandrasekaran <siddharth@embedjournal.com>
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig OSDP
	bool "Open Supervised Device Protocol (OSDP) driver"
	select RING_BUFFER
	imply SERIAL_SUPPORT_INTERRUPT
	imply UART_INTERRUPT_DRIVEN
	select CRC
	help
	  Add support for Open Supervised Device Protocol (OSDP)

if OSDP

choice
	prompt "OSDP Mode of Operation"
	config OSDP_MODE_PD
		bool "Configure OSDP in Peripheral Device mode"
		help
		  Configure this device to operate as a PD (Peripheral Device)
	config OSDP_MODE_CP
		bool "Configure OSDP in Control Panel mode"
		help
		  Configure this device to operate as a CP (Control Panel)
endchoice

config OSDP_UART_BAUD_RATE
	int "OSDP UART baud rate"
	default 115200
	help
	  OSDP defines that baud rate can be either 9600 or 38400 or
	  115200.

config OSDP_LOG_LEVEL
	int "OSDP Logging Level"
	default 1
	help
	  Set the logging level for the OSDP driver

config OSDP_UART_BUFFER_LENGTH
	int "OSDP UART buffer length"
	default 256
	help
	  OSDP RX and TX buffer FIFO length.

config OSDP_THREAD_STACK_SIZE
	int "OSDP Thread stack size"
	default 1024
	help
	  Thread stack size for osdp refresh thread

config OSDP_PACKET_TRACE
	bool "Print bytes sent/received over OSDP to console"
	help
	  Prints bytes sent/received over OSDP to console for debugging.
	  LOG_HEXDUMP_DBG() is used to achieve this and can be very verbose.

config OSDP_SC_ENABLED
	bool "OSDP Secure Channel"
	depends on CSPRING_ENABLED
	default y
	select CRYPTO
	select CRYPTO_MBEDTLS_SHIM
	select MBEDTLS
	select MBEDTLS_CIPHER_CCM_ENABLED
	help
	  Secure the OSDP communication channel with encryption and mutual
	  authentication.

if OSDP_SC_ENABLED

config OSDP_SC_RETRY_WAIT_SEC
	int "Retry wait time in seconds after a Secure Channel error"
	default 600
	help
	  Time in seconds to wait after a secure channel failure, and before
	  retrying to establish it.

config OSDP_CRYPTO_DRV_NAME
	string "Crypto driver to use with OSDP"
	default "CRYPTO_MTLS"
	help
	  OSDP Secure Channel uses AES-128 to secure communication between
	  CP and PD. Provide an available crypto driver name here.

endif # OSDP_SC_ENABLED

if OSDP_MODE_PD
source "subsys/mgmt/osdp/Kconfig.pd"
endif

if OSDP_MODE_CP
source "subsys/mgmt/osdp/Kconfig.cp"
endif

endif # OSDP
