#
# 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
	imply UART_USE_RUNTIME_CONFIGURE
	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_SKIP_MARK_BYTE
	bool "Skip sending the initial marking byte (0xFF)"
	help
	  As per the OSDP specification, the first byte in the channel has
	  to be a MARK byte which is 0xFF. Since this is not stated in the
	  packet structure definition, some commercial CPs and PDs do not
	  handle the initial mark byte correctly. This option can be used to
	  completely disable sending/expecting a mark byte to work with
	  such non-conforming devices.

config OSDP_SC_ENABLED
	bool "OSDP Secure Channel"
	depends on CSPRNG_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
