diff --git a/zephyr/CMakeLists.txt b/zephyr/CMakeLists.txt index 3520772..984c4e0 100644 --- a/zephyr/CMakeLists.txt +++ b/zephyr/CMakeLists.txt @@ -451,11 +451,13 @@ set(BACNETSTACK_BASIC_SRCS $<$:${BACNETSTACK_SRC}/bacnet/basic/bbmd6/h_bbmd6.c> $<$:${BACNETSTACK_SRC}/bacnet/basic/bbmd6/vmac.c> $<$:${BACNETSTACK_SRC}/bacnet/basic/bzll/bzllvmac.c> + $<$:${BACNETSTACK_SRC}/bacnet/basic/bzll/h_bzll.c> $<$:${BACNETSTACK_SRC}/bacnet/basic/server/bacnet_basic.c> $<$:${BACNETSTACK_SRC}/bacnet/basic/server/bacnet_device.c> $<$:${BACNETSTACK_SRC}/bacnet/basic/server/bacnet_port.c> $<$:${BACNETSTACK_SRC}/bacnet/basic/server/bacnet_port_ipv4.c> $<$:${BACNETSTACK_SRC}/bacnet/basic/server/bacnet_port_ipv4.c> + $<$:${BACNETSTACK_SRC}/bacnet/basic/server/bacnet_port_bzll.c> $<$:${BACNETSTACK_SRC}/bacnet/basic/object/access_credential.c> $<$:${BACNETSTACK_SRC}/bacnet/basic/object/access_door.c> $<$:${BACNETSTACK_SRC}/bacnet/basic/object/access_point.c> @@ -587,6 +589,8 @@ zephyr_compile_definitions( BACNET_VENDOR_NAME="${CONFIG_BACNET_VENDOR_NAME}" BACNET_PROTOCOL_REVISION=${CONFIG_BACNET_PROTOCOL_REVISION} BACNET_STACK_DEPRECATED_DISABLE=1 + $<$:BZLL_NODE_TIME_TO_LIVE_S=${CONFIG_BZLL_NODE_TIME_TO_LIVE_S}> + $<$:BZLL_SCAN_NODES_INTERVAL_S=${CONFIG_BZLL_SCAN_NODES_INTERVAL_S}> # datalink API $<$:BACDL_NONE> $<$:BACAPP_ALL> diff --git a/zephyr/subsys/Kconfig b/zephyr/subsys/Kconfig index 81841de..09a82ad 100644 --- a/zephyr/subsys/Kconfig +++ b/zephyr/subsys/Kconfig @@ -4,6 +4,7 @@ comment "BACnet Subsystems" +rsource "bacnet_datalink/Kconfig" rsource "bacnet_settings/Kconfig" rsource "bacnet_shell/Kconfig" rsource "object/Kconfig" diff --git a/zephyr/subsys/bacnet_datalink/Kconfig b/zephyr/subsys/bacnet_datalink/Kconfig new file mode 100644 index 0000000..67a723b --- /dev/null +++ b/zephyr/subsys/bacnet_datalink/Kconfig @@ -0,0 +1,26 @@ +# Kconfig - Subsystem configuration options +# +# @author Luiz Santana +# @date May 2026 +# @copyright SPDX-License-Identifier: Apache-2.0 +menuconfig BACNET_DATALINK_SETTINGS + bool "BACNET_DATALINK_SETTINGS" + default y if BACNETSTACK + help + This option enables BACnet datalink settings. + +if BACNET_DATALINK_SETTINGS + + config BZLL_NODE_TIME_TO_LIVE_S + int "BZLL node time-to-live in the VMAC table" + default 600 + help + Time in seconds to keep a node in the VMAC table before it must be updated. + + config BZLL_SCAN_NODES_INTERVAL_S + int "BZLL interval for scanning the Zigbee network for BACnet nodes and updating the VMAC table" + default 3600 + help + Time interval in seconds between scans of the Zigbee network for BACnet nodes to update the VMAC table. + +endif # BACNET_DATALINK_SETTINGS \ No newline at end of file diff --git a/zephyr/subsys/bacnet_settings/bacnet_settings.c b/zephyr/subsys/bacnet_settings/bacnet_settings.c index b1cea31..82dfa6a 100644 --- a/zephyr/subsys/bacnet_settings/bacnet_settings.c +++ b/zephyr/subsys/bacnet_settings/bacnet_settings.c @@ -323,7 +323,7 @@ bool bacnet_settings_value_parse( return false; } /* convert the string value into a tagged union value */ - if (isalpha(value_string[0])) { + if (isalpha((unsigned char)value_string[0])) { if (property_list_commandable_member(object_type, property_id) && (bacnet_strnicmp(value_string, "NULL", 4) == 0)) { /* check for case insensitive NULL string */ diff --git a/zephyr/subsys/bacnet_settings/bacnet_storage_shell.c b/zephyr/subsys/bacnet_settings/bacnet_storage_shell.c index fbdda2b..4b8c593 100644 --- a/zephyr/subsys/bacnet_settings/bacnet_storage_shell.c +++ b/zephyr/subsys/bacnet_settings/bacnet_storage_shell.c @@ -10,6 +10,7 @@ #include #include #include +#include static const char Storage_Base_Name[] = CONFIG_BACNET_STORAGE_BASE_NAME; diff --git a/zephyr/subsys/bacnet_shell/bacnet_shell_property.c b/zephyr/subsys/bacnet_shell/bacnet_shell_property.c index 3a568bc..52847e5 100644 --- a/zephyr/subsys/bacnet_shell/bacnet_shell_property.c +++ b/zephyr/subsys/bacnet_shell/bacnet_shell_property.c @@ -117,7 +117,7 @@ int bacnet_shell_property_parse( } err = bacnet_shell_object_type_instance_parse( sh, argc, argv, object_type, object_instance); - if (isalpha(argv[3][0])) { + if (isalpha((unsigned char)argv[3][0])) { /* choose a property by name with optional [] to denote array */ scan_count = sscanf(argv[3], "%79[^[][%u]", name, &array_value); if (scan_count < 1) {