# Feature configuration options for BACnet-Stack

# Copyright (c) 2020 Legrand North America, LLC.
# SPDX-License-Identifier: MIT

menuconfig BACNETSTACK
	bool "BACnet-Stack Support"
	select REQUIRES_FULL_LIBC
	help
	  This option enables the BACnet-Stack BACnet library.

if BACNETSTACK

module = BACNETSTACK
module-str = Log level for BACnet
module-help = Enable BACnet library to output debug messages
source "$(ZEPHYR_BASE)/subsys/logging/Kconfig.template.log_config"

config BACNET_VENDOR_NAME
	string "BACnet Vendor Name"
	default "BACnet Stack at SourceForge"
	help
		BACnet Vendor Name string

config BACNET_VENDOR_IDENTIFIER
	int "BACnet Vendor Identifier"
	default 260
	help
		BACnet Vendir Identifier

config BACNET_PROTOCOL_REVISION
	int "BACnet Stack protocol-revision number"
	default 24
	help
		BACnet Stack protocol-revision number

config BAC_ROUTING
	bool "BACnet Routing"
	help
	  Enable BACnet routing

config BACNET_PROPERTY_LISTS
	bool "BACnet Property Lists"
	help
	  Enable BACnet Property Lists

config BACDL_ETHERNET
	bool "BACnet Ethernet datalink"
	help
	  Enable BACnet Ethernet datalink

config BACDL_MSTP
	bool "BACnet MSTP datalink"
	help
	  Enable BACnet MSTP datalink

config BACDL_ARCNET
	bool "BACnet ARCNET datalink"
	help
	  Enable BACnet ARCNET datalink

config BACDL_BIP
	bool "BACnet BIP datalink"
	help
	  Enable BACnet BIP datalink

config BACDL_NONE
	bool "BACnet without datalink"
	help
	  Enable BACnet without datalink

config BACAPP_PRINT_ENABLED
	bool "BACnet app print"
	help
		Enable BACnet app print

config BACAPP_SNPRINTF_ENABLED
	bool "BACnet app snprintf"
	help
		Enable BACnet app snprintf

config BACDL_BIP_PORT
	int "BACnet IPv4 UDP port"
	default 47808
	depends on BACDL_BIP
	help
		UDP port to listen on (default=47808)

config MAX_BBMD_ENTRIES
	int "Maximum number of Broadcast Device Table entries"
	default 5
	depends on BACDL_BIP
	help
		Maximum number of Broadcast Device Table entries

config MAX_FD_ENTRIES
	int "Maximum number of Foreign Device Table entries"
	default 5
	depends on BACDL_BIP
	help
		Maximum number of Foreign Device Table entries

config BACDL_BIP_ADDRESS_INDEX
	int "Address index"
	depends on BACDL_BIP
	default 0
	help
		Select IPv4 address

config BACDL_BIP6
	bool "BACnet BIP6"
	help
	  Enable BACnet BIP6

config BACDL_BIP6_ADDRESS_INDEX
	int "Unicast address index"
	depends on BACDL_BIP6
	default 0
	help
		Select IPv6 unicast address

config BACDL_BIP6_MCAST_ADDRESS
	string "IPv6 multicast destination"
	default "FF0E::BAC0"
	depends on BACDL_BIP6
	help
		IPv6 multicast group address for BACNET.

config BACDL_BIP6_PORT
	int "BACnet IPv6 UDP port"
	default 47808
	depends on BACDL_BIP6
	help
		UDP port to listen on (default=47808)

config BACNET_MAX_TSM_TRANSACTIONS
	int "Number of initiated confirmed-message transactions"
	default 1
	help
		Number of initiated confirmed-message transactions

config BACNET_MAX_ADDRESS_CACHE
	int "Number of address entries for I-Am bindings"
	default 1
	help
		Number of address entries for I-Am bindings

config BACNET_MAX_CHARACTER_STRING_BYTES
	int "Maximum number of bytes in a BACnet character string"
	default 64
	help
		Maximum number of bytes in a BACnet character string

config BACNET_MAX_OCTET_STRING_BYTES
	int "Maximum number of bytes in a BACnet octet string"
	default 64
	help
		Maximum number of bytes in a BACnet octet string

config BACNET_ADDRESS_CACHE_FILE
	bool "BACnet Address Cache file functionality"
	help
		BACnet Address Cache file functionality

config BACNET_USE_SECTION_ITERABLE_OBJECT_TABLE
	bool "Use the Section Iterable for the Object Table"
	default true
	help
		Use the Section Iterable for the Object Table

config BACNET_BASIC_OBJECTS_ACCESS
	bool "Use the BACnet basic access control objects"
	default false
	help
		Use the BACnet basic access control objects

config BACNET_BASIC_OBJECT_ACCUMULATOR
	bool "Use the BACnet basic accumulator object"
	default false
	help
		Use the BACnet basic accumulator object

config BACNET_BASIC_OBJECT_ANALOG_INPUT
	bool "Use the BACnet basic analog input object"
	default false
	help
		Use the BACnet basic analog input object

config BACNET_BASIC_OBJECT_ANALOG_OUTPUT
	bool "Use the BACnet basic analog output object"
	default false
	help
		Use the BACnet basic analog output object

config BACNET_BASIC_OBJECT_ANALOG_VALUE
	bool "Use the BACnet basic analog value object"
	default false
	help
		Use the BACnet basic analog value object

config BACNET_BASIC_OBJECT_FILE
	bool "Use the BACnet basic file object"
	default false
	help
		Use the BACnet basic file object

config BACNET_BASIC_OBJECT_BINARY_INPUT
	bool "Use the BACnet basic binary input object"
	default false
	help
		Use the BACnet basic binary input object

config BACNET_BASIC_OBJECT_BINARY_OUTPUT
	bool "Use the BACnet basic binary output object"
	default false
	help
		Use the BACnet basic binary output object

config BACNET_BASIC_OBJECT_BINARY_VALUE
	bool "Use the BACnet basic binary value object"
	default false
	help
		Use the BACnet basic binary value object

config BACNET_BASIC_OBJECT_CALENDAR
	bool "Use the BACnet basic calendar object"
	default false
	help
		Use the BACnet basic calendar object

config BACNET_BASIC_OBJECT_CHANNEL
	bool "Use the BACnet basic channel object"
	default false
	help
		Use the BACnet basic channel object

config BACNET_BASIC_OBJECT_COMMAND
	bool "Use the BACnet basic command object"
	default false
	help
		Use the BACnet basic command object

config BACNET_BASIC_OBJECT_COLOR
	bool "Use the BACnet basic color object"
	default false
	help
		Use the BACnet basic color object

config BACNET_BASIC_OBJECT_COLOR_TEMPERATURE
	bool "Use the BACnet basic color temperature object"
	default false
	help
		Use the BACnet basic color temperature object

config BACNET_BASIC_OBJECT_CHARACTERSTRING_VALUE
	bool "Use the BACnet basic character-string value object"
	default false
	help
		Use the BACnet basic character-string value object

config BACNET_BASIC_OBJECT_DEVICE_SERVER
	bool "Use the BACnet basic device-server object"
	default false
	help
		Use the BACnet basic device-server object

config BACNET_BASIC_OBJECT_DEVICE_CLIENT
	bool "Use the BACnet basic device-client object"
	default false
	help
		Use the BACnet basic device-client object

config BACNET_BASIC_OBJECT_INTEGER_VALUE
	bool "Use the BACnet basic integer value object"
	default false
	help
		Use the BACnet basic integer value object

config BACNET_BASIC_OBJECT_LOAD_CONTROL
	bool "Use the BACnet basic load control object"
	default false
	help
		Use the BACnet basic load control object

config BACNET_BASIC_OBJECT_LIGHTING_OUTPUT
	bool "Use the BACnet basic lighting output object"
	default false
	help
		Use the BACnet basic lighting output object

config BACNET_BASIC_OBJECT_LIFE_SAFETY_POINT
	bool "Use the BACnet basic life-safety point object"
	default false
	help
		Use the BACnet basic life-safety point object

config BACNET_BASIC_OBJECT_MULTISTATE_INPUT
	bool "Use the BACnet basic multistate input object"
	default false
	help
		Use the BACnet basic multistate input object

config BACNET_BASIC_OBJECT_MULTISTATE_OUTPUT
	bool "Use the BACnet basic multistate output object"
	default false
	help
		Use the BACnet basic multistate output object

config BACNET_BASIC_OBJECT_MULTISTATE_VALUE
	bool "Use the BACnet basic multistate value object"
	default false
	help
		Use the BACnet basic multistate value object

config BACNET_BASIC_OBJECT_NOTIFICATION_CLASS
	bool "Use the BACnet basic notification class object"
	default false
	help
		Use the BACnet basic notification class object

config BACNET_BASIC_OBJECT_NETWORK_PORT
	bool "Use the BACnet basic network port object"
	default false
	help
		Use the BACnet basic network port object

config BACNET_BASIC_OBJECT_OCTET_STRING_VALUE
	bool "Use the BACnet basic octet-string value object"
	default false
	help
		Use the BACnet basic octet-string value object

config BACNET_BASIC_OBJECT_POSITIVE_INTEGER_VALUE
	bool "Use the BACnet basic positive-integer value object"
	default false
	help
		Use the BACnet basic positive-integer value object

config BACNET_BASIC_OBJECT_SCHEDULE
	bool "Use the BACnet basic schedule object"
	default false
	help
		Use the BACnet basic schedule object

config BACNET_BASIC_OBJECT_STRUCTURED_VIEW
	bool "Use the BACnet basic structured view object"
	default false
	help
		Use the BACnet basic structured view object

config BACNET_BASIC_OBJECT_TIME_VALUE
	bool "Use the BACnet basic time value object"
	default false
	help
		Use the BACnet basic time value object

config BACNET_BASIC_OBJECT_TRENDLOG
	bool "Use the BACnet basic trendlog object"
	default false
	help
		Use the BACnet basic trendlog object

rsource "subsys/Kconfig"

endif # BACNETSTACK
