# 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 BACNET_PROPERTY_ARRAY_LISTS
	bool "BACnetARRAY Property Lists"
	default true
	help
	  Enable BACnetARRAY 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_ALL
	bool "BACnet data types supported for WriteProperty: all = minimal + extra"
	default false
	help
	   BACnet data types supported for WriteProperty: all = minimal + extra

config BACAPP_MINIMAL
	bool "BACnet data types supported for WriteProperty: minimal"
	default true
	help
	   BACnet data types supported for WriteProperty include:
	   NULL, BOOLEAN, UNSIGNED, SIGNED, REAL, CHARACTER_STRING,
	   OCTET_STRING, BIT_STRING, ENUMERATED, DATE, TIME, OBJECT_ID

config BACAPP_TYPES_EXTRA
	bool "BACnet data types supported for WriteProperty: extra"
	default false
	help
	   BACnet data types supported for WriteProperty include:
	   DOUBLE, TIMESTAMP, DATETIME, DATERANGE,
	   LIGHTING_COMMAND, XY_COLOR, COLOR_COMMAND, WEEKLY_SCHEDULE,
	   CALENDAR_ENTRY, SPECIAL_EVENT, HOST_N_PORT,
	   DEVICE_OBJECT_PROPERTY_REFERENCE, DEVICE_OBJECT_REFERENCE,
	   OBJECT_PROPERTY_REFERENCE, DESTINATION

config BACAPP_NULL
	bool "BACnet data types supported for WriteProperty: NULL"
	default false
	help
	   BACnet data types supported for WriteProperty: NULL

config BACAPP_BOOLEAN
	bool "BACnet data types supported for WriteProperty: BOOLEAN"
	default false
	help
	   BACnet data types supported for WriteProperty: BOOLEAN

config BACAPP_UNSIGNED
	bool "BACnet data types supported for WriteProperty: UNSIGNED"
	default false
	help
	   BACnet data types supported for WriteProperty: UNSIGNED

config BACAPP_SIGNED
	bool "BACnet data types supported for WriteProperty: SIGNED"
	default false
	help
	   BACnet data types supported for WriteProperty: SIGNED

config BACAPP_REAL
	bool "BACnet data types supported for WriteProperty: REAL"
	default false
	help
	   BACnet data types supported for WriteProperty: REAL

config BACAPP_DOUBLE
	bool "BACnet data types supported for WriteProperty: DOUBLE"
	default false
	help
	   BACnet data types supported for WriteProperty: DOUBLE

config BACAPP_OCTET_STRING
	bool "BACnet data types supported for WriteProperty: OCTET_STRING"
	default false
	help
	   BACnet data types supported for WriteProperty: OCTET_STRING

config BACAPP_CHARACTER_STRING
	bool "BACnet data types supported for WriteProperty: CHARACTER_STRING"
	default false
	help
	   BACnet data types supported for WriteProperty: CHARACTER_STRING

config BACAPP_BIT_STRING
	bool "BACnet data types supported for WriteProperty: BIT_STRING"
	default false
	help
	   BACnet data types supported for WriteProperty: BIT_STRING

config BACAPP_ENUMERATED
	bool "BACnet data types supported for WriteProperty: ENUMERATED"
	default false
	help
	   BACnet data types supported for WriteProperty: ENUMERATED

config BACAPP_DATE
	bool "BACnet data types supported for WriteProperty: DATE"
	default false
	help
	   BACnet data types supported for WriteProperty: DATE

config BACAPP_TIME
	bool "BACnet data types supported for WriteProperty: TIME"
	default false
	help
	   BACnet data types supported for WriteProperty: TIME

config BACAPP_OBJECT_ID
	bool "BACnet data types supported for WriteProperty: OBJECT_ID"
	default false
	help
	   BACnet data types supported for WriteProperty: OBJECT_ID

config BACAPP_DATETIME
	bool "BACnet data types supported for WriteProperty: DATETIME"
	default false
	help
	   BACnet data types supported for WriteProperty: DATETIME

config BACAPP_DATERANGE
	bool "BACnet data types supported for WriteProperty: DATERANGE"
	default false
	help
	   BACnet data types supported for WriteProperty: DATERANGE

config BACAPP_LIGHTING_COMMAND
	bool "BACnet data types supported for WriteProperty: LIGHTING_COMMAND"
	default false
	help
	   BACnet data types supported for WriteProperty: LIGHTING_COMMAND

config BACAPP_XY_COLOR
	bool "BACnet data types supported for WriteProperty: XY_COLOR"
	default false
	help
	   BACnet data types supported for WriteProperty: XY_COLOR

config BACAPP_COLOR_COMMAND
	bool "BACnet data types supported for WriteProperty: COLOR_COMMAND"
	default false
	help
	   BACnet data types supported for WriteProperty: COLOR_COMMAND

config BACAPP_WEEKLY_SCHEDULE
	bool "BACnet data types supported for WriteProperty: WEEKLY_SCHEDULE"
	default false
	help
	   BACnet data types supported for WriteProperty: WEEKLY_SCHEDULE

config BACAPP_CALENDAR_ENTRY
	bool "BACnet data types supported for WriteProperty: CALENDAR_ENTRY"
	default false
	help
	   BACnet data types supported for WriteProperty: CALENDAR_ENTRY

config BACAPP_SPECIAL_EVENT
	bool "BACnet data types supported for WriteProperty: SPECIAL_EVENT"
	default false
	help
	   BACnet data types supported for WriteProperty: SPECIAL_EVENT

config BACAPP_HOST_N_PORT
	bool "BACnet data types supported for WriteProperty: HOST_N_PORT"
	default false
	help
	   BACnet data types supported for WriteProperty: HOST_N_PORT

config BACAPP_DEVICE_OBJECT_PROPERTY_REFERENCE
	bool "BACnet data types supported for WriteProperty: DEVICE_OBJECT_PROPERTY_REFERENCE"
	default false
	help
	   BACnet data types supported for WriteProperty: DEVICE_OBJECT_PROPERTY_REFERENCE

config BACAPP_DEVICE_OBJECT_REFERENCE
	bool "BACnet data types supported for WriteProperty: DEVICE_OBJECT_REFERENCE"
	default false
	help
	   BACnet data types supported for WriteProperty: DEVICE_OBJECT_REFERENCE

config BACAPP_OBJECT_PROPERTY_REFERENCE
	bool "BACnet data types supported for WriteProperty: OBJECT_PROPERTY_REFERENCE"
	default false
	help
	   BACnet data types supported for WriteProperty: OBJECT_PROPERTY_REFERENCE

config BACAPP_DESTINATION
	bool "BACnet data types supported for WriteProperty: DESTINATION"
	default false
	help
	   BACnet data types supported for WriteProperty: DESTINATION

config BACAPP_BDT_ENTRY
	bool "BACnet data types supported for WriteProperty: BDT_ENTRY"
	default false
	help
	   BACnet data types supported for WriteProperty: BDT_ENTRY

config BACAPP_FDT_ENTRY
	bool "BACnet data types supported for WriteProperty: FDT_ENTRY"
	default false
	help
	   BACnet data types supported for WriteProperty: FDT_ENTRY

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

config BACAPP_SNPRINTF_ENABLED
	bool "BACnet app snprintf"
	default false
	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 "FF02::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_STORAGE_BASE_NAME
	string "BACnet storage base name for settings subsystem"
	default "bacnet"
	help
		BACnet storage base name for settings subsystem

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
