# Copyright (c) 2020 PHYTEC Messtechnik GmbH
# SPDX-License-Identifier: Apache-2.0

menuconfig MODBUS
	bool "Modbus support"
	select CRC

if MODBUS

config MODBUS_BUFFER_SIZE
	int "Modbus buffer size"
	default 256
	range 64 256
	help
	  Modbus buffer size.

choice
	prompt "Supported node roles"
	default MODBUS_ROLE_CLIENT_SERVER
	help
	  Specify the type of supported node roles.

config MODBUS_ROLE_CLIENT
	bool "Client support"

config MODBUS_ROLE_SERVER
	bool "Server support"

config MODBUS_ROLE_CLIENT_SERVER
	bool "Client and server support"

endchoice

config MODBUS_SERVER
	bool
	default y if MODBUS_ROLE_SERVER || MODBUS_ROLE_CLIENT_SERVER

config MODBUS_CLIENT
	bool
	default y if MODBUS_ROLE_CLIENT || MODBUS_ROLE_CLIENT_SERVER

config MODBUS_SERIAL
	bool "Modbus over serial line support"
	default y
	depends on SERIAL && SERIAL_HAS_DRIVER
	depends on DT_HAS_ZEPHYR_MODBUS_SERIAL_ENABLED
	imply UART_USE_RUNTIME_CONFIGURE
	help
	  Enable Modbus over serial line support.

config MODBUS_SERIAL_ASYNC_API
	depends on MODBUS_SERIAL && UART_ASYNC_API
	bool "Modbus over serial line UART ASYNC API support"
	help
	  Use UART ASYNC API for Modbus over serial line.

config MODBUS_ASCII_MODE
	depends on MODBUS_SERIAL
	bool "Modbus transmission mode ASCII"
	help
	  Enable ASCII transmission mode.

config MODBUS_RAW_ADU
	bool "Modbus raw ADU support"
	help
	  Enable Modbus raw ADU support.

config MODBUS_NUMOF_RAW_ADU
	int "Number of raw ADU instances"
	depends on MODBUS_RAW_ADU
	range 1 4
	help
	  Number of raw ADU instances.

config MODBUS_FP_EXTENSIONS
	bool "Floating-Point extensions"
	default y
	help
	  Enable Floating-Point extensions

config MODBUS_FC08_DIAGNOSTIC
	bool "FC08 Diagnostic support"
	depends on MODBUS_SERVER
	default y
	help
	  Enable function code 08 Diagnostic support

config MODBUS_NONCOMPLIANT_SERIAL_MODE
	bool "Non-compliant serial mode"
	depends on MODBUS_SERIAL
	help
	  Allow non-compliant stop and parity bit settings.

module = MODBUS
module-str = Modbus Support
module-help = Sets log level for Modbus support
source "subsys/logging/Kconfig.template.log_config"

endif
