# 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

config BACNETSTACK_LOG_LEVEL
    int "Log level for BACnet Stack"
    default 1
    help
        BACnet Stack log level where 0=none, 1=error, 2=warning, 3=info, 4=debug

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"
    select NETWORKING
    select NET_SOCKETS
    select NET_UDP
    select NET_IPV4
    help
      Enable BACnet BIP datalink

config BACDL_BIP6
    bool "BACnet BIP6"
    help
      Enable BACnet BIP6

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

config BACDL_CUSTOM
    bool "BACnet with custom datalink enabled"
    help
      Enable BACnet with custom datalink enabled

config BACDL_ALL
    bool "BACnet with all datalinks enabled"
    help
      Enable BACnet with all datalinks enabled

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, BDT_ENTRY, FDT_ENTRY,
       ACTION_COMMAND, SCALE, SHED_LEVEL

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_ACTION_COMMAND
    bool "BACnet data types supported for WriteProperty: BACAPP_ACTION_COMMAND"
    default false
    help
       BACnet data types supported for WriteProperty: BACAPP_ACTION_COMMAND

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

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

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_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

# MINIMAL CONFIG_NET_RX_STACK_SIZE
config NET_TX_STACK_SIZE
    int
    default 8192 if BACDL_BIP

# MINIMAL CONFIG_NET_RX_STACK_SIZE
config NET_RX_STACK_SIZE
    int
    default 8192 if BACDL_BIP

config NET_IF_UNICAST_IPV4_ADDR_COUNT
    int
    default 4 if BACDL_BIP

config NET_IF_LOG_LEVEL_DGB
    bool
    default y if BACDL_BIP

rsource "subsys/Kconfig"

endif # BACNETSTACK
