Fixed WriteProperty error code for FD_BBMD_ADDRESS and FD_SUBSCRIPTION_LIFETIME (#925)

* Fixed WriteProperty error code for PROP_FD_BBMD_ADDRESS and PROP_FD_SUBSCRIPTION_LIFETIME properties.  

* Fixed dead-code warning after enabling all datalinks for basic network port object using the property list as the R/W checking for the port type.
This commit is contained in:
Steve Karg
2025-03-03 08:04:07 -06:00
committed by GitHub
parent 3e480f41e2
commit 5cd453c925
22 changed files with 1577 additions and 8353 deletions
@@ -90,6 +90,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/basic/sys/linear.c
${SRC_DIR}/bacnet/basic/tsm/tsm.c
${SRC_DIR}/bacnet/datalink/bvlc.c
${SRC_DIR}/bacnet/datalink/bvlc6.c
${SRC_DIR}/bacnet/cov.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
@@ -28,7 +28,7 @@ set(ZTST_DIR "${TST_DIR}/ztest/src")
add_compile_definitions(
BIG_ENDIAN=0
CONFIG_ZTEST=1
BACDL_BSC=1
BACDL_ALL=1
BACNET_SECURE_CONNECT_ROUTING_TABLE=1
BSC_CONF_HUB_FUNCTIONS_NUM=1
BSC_CONF_HUB_CONNECTORS_NUM=1
@@ -89,6 +89,7 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/datalink/bvlc.c
${SRC_DIR}/bacnet/datalink/bvlc6.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c
# Test and test library files
${TST_DIR}/bacnet/basic/object/test/device_mock.c
@@ -140,6 +141,7 @@ elseif(APPLE)
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/datalink/bvlc.c
${SRC_DIR}/bacnet/datalink/bvlc6.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c
# Test and test library files
${TST_DIR}/bacnet/basic/object/test/device_mock.c
+189
View File
@@ -32,6 +32,12 @@ static void test_network_port(void)
unsigned port = 0;
bool status = false;
unsigned count = 0;
uint8_t address[16] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
};
uint8_t test_address[16] = { 0 };
uint8_t mac_len;
uint8_t ip_prefix;
uint32_t object_instance = 0;
uint8_t port_type[] = { PORT_TYPE_ETHERNET, PORT_TYPE_ARCNET,
PORT_TYPE_MSTP, PORT_TYPE_PTP,
@@ -61,6 +67,187 @@ static void test_network_port(void)
zassert_true(status, NULL);
count = Network_Port_Count();
zassert_true(count > 0, NULL);
status = Network_Port_Description_Set(object_instance, "Test Port");
zassert_true(status, NULL);
status = Network_Port_Out_Of_Service_Set(object_instance, true);
zassert_true(status, NULL);
status = Network_Port_Out_Of_Service(object_instance);
zassert_true(status, NULL);
status = Network_Port_Out_Of_Service_Set(object_instance, false);
zassert_true(status, NULL);
status = Network_Port_Out_Of_Service(object_instance);
zassert_false(status, NULL);
status = Network_Port_Reliability_Set(
object_instance, RELIABILITY_NO_FAULT_DETECTED);
zassert_true(status, NULL);
status = Network_Port_Network_Number_Set(object_instance, 0);
zassert_true(status, NULL);
status =
Network_Port_Quality_Set(object_instance, PORT_QUALITY_UNKNOWN);
zassert_true(status, NULL);
status = Network_Port_MAC_Address_Set(object_instance, NULL, 0);
zassert_false(status, NULL);
mac_len = Network_Port_MAC_Address_Value(object_instance, NULL, 0);
if (mac_len > 0) {
/* test for ports that have a MAC address */
zassert_not_equal(mac_len, 0, NULL);
status =
Network_Port_MAC_Address_Set(object_instance, address, mac_len);
zassert_true(status, NULL);
zassert_equal(
Network_Port_MAC_Address_Value(
object_instance, test_address, sizeof(test_address)),
mac_len, NULL);
zassert_mem_equal(test_address, address, mac_len, NULL);
}
status = Network_Port_APDU_Length_Set(object_instance, MAX_APDU);
zassert_true(status, NULL);
status = Network_Port_Link_Speed_Set(object_instance, 0);
zassert_true(status, NULL);
status = Network_Port_Changes_Pending_Set(object_instance, false);
zassert_true(status, NULL);
Network_Port_Changes_Pending_Activate_Callback_Set(
object_instance, NULL);
Network_Port_Changes_Pending_Discard(object_instance);
Network_Port_Changes_Pending_Discard_Callback_Set(
object_instance, NULL);
if (port_type[port] == PORT_TYPE_MSTP) {
status = Network_Port_MSTP_MAC_Address_Set(object_instance, 127);
zassert_true(status, NULL);
address[0] = Network_Port_MSTP_MAC_Address(object_instance);
zassert_equal(address[0], 127, NULL);
status = Network_Port_MSTP_Max_Info_Frames_Set(object_instance, 1);
zassert_true(status, NULL);
zassert_equal(
Network_Port_MSTP_Max_Info_Frames(object_instance), 1, NULL);
}
if (port_type[port] == PORT_TYPE_BIP) {
status = Network_Port_IP_Address_Set(object_instance, 1, 2, 3, 4);
zassert_true(status, NULL);
status = Network_Port_IP_Subnet_Prefix_Set(object_instance, 24);
zassert_true(status, NULL);
ip_prefix = Network_Port_IP_Subnet_Prefix(object_instance);
zassert_equal(ip_prefix, 24, NULL);
status = Network_Port_IP_Gateway_Set(object_instance, 5, 6, 7, 8);
zassert_true(status, NULL);
status = Network_Port_IP_DHCP_Enable_Set(object_instance, true);
zassert_true(status, NULL);
status = Network_Port_IP_DHCP_Enable(object_instance);
zassert_true(status, NULL);
status = Network_Port_IP_DNS_Server_Set(
object_instance, 0, 9, 10, 11, 12);
zassert_true(status, NULL);
status = Network_Port_BIP_Port_Set(object_instance, 47808);
zassert_true(status, NULL);
status = Network_Port_BIP_Mode_Set(
object_instance, BACNET_IP_MODE_NORMAL);
zassert_true(status, NULL);
zassert_equal(
Network_Port_BIP_Mode(object_instance), BACNET_IP_MODE_NORMAL,
NULL);
status = Network_Port_BBMD_Accept_FD_Registrations_Set(
object_instance, true);
zassert_true(status, NULL);
status = Network_Port_BBMD_BD_Table_Set(object_instance, NULL);
zassert_true(status, NULL);
zassert_is_null(Network_Port_BBMD_BD_Table(object_instance), NULL);
status = Network_Port_BBMD_FD_Table_Set(object_instance, NULL);
zassert_true(status, NULL);
zassert_is_null(Network_Port_BBMD_FD_Table(object_instance), NULL);
status = Network_Port_Remote_BBMD_IP_Address(
object_instance, NULL, NULL, NULL, NULL);
zassert_true(status, NULL);
status = Network_Port_Remote_BBMD_IP_Address_Set(
object_instance, 1, 2, 3, 4);
zassert_true(status, NULL);
status =
Network_Port_Remote_BBMD_BIP_Port_Set(object_instance, 47808);
zassert_true(status, NULL);
zassert_equal(
Network_Port_Remote_BBMD_BIP_Port(object_instance), 47808,
NULL);
status =
Network_Port_Remote_BBMD_BIP_Lifetime_Set(object_instance, 60);
zassert_true(status, NULL);
zassert_equal(
Network_Port_Remote_BBMD_BIP_Lifetime(object_instance), 60,
NULL);
}
if (port_type[port] == PORT_TYPE_BIP6) {
status = Network_Port_IPv6_Address_Set(object_instance, address);
zassert_true(status, NULL);
status = Network_Port_BBMD_IP6_Accept_FD_Registrations_Set(
object_instance, true);
zassert_true(status, NULL);
zassert_true(
Network_Port_BBMD_IP6_Accept_FD_Registrations(object_instance),
NULL);
status = Network_Port_BBMD_IP6_BD_Table_Set(object_instance, NULL);
zassert_true(status, NULL);
zassert_is_null(
Network_Port_BBMD_IP6_BD_Table(object_instance), NULL);
status = Network_Port_BBMD_IP6_FD_Table_Set(object_instance, NULL);
zassert_true(status, NULL);
zassert_is_null(
Network_Port_BBMD_IP6_FD_Table(object_instance), NULL);
status =
Network_Port_Remote_BBMD_IP6_Address(object_instance, address);
zassert_true(status, NULL);
status = Network_Port_Remote_BBMD_IP6_Address_Set(
object_instance, address);
zassert_true(status, NULL);
status =
Network_Port_Remote_BBMD_BIP6_Port_Set(object_instance, 47808);
zassert_true(status, NULL);
zassert_equal(
Network_Port_Remote_BBMD_BIP6_Port(object_instance), 47808,
NULL);
status =
Network_Port_Remote_BBMD_BIP6_Lifetime_Set(object_instance, 60);
zassert_true(status, NULL);
zassert_equal(
Network_Port_Remote_BBMD_BIP6_Lifetime(object_instance), 60,
NULL);
status = Network_Port_BIP6_Mode_Set(
object_instance, BACNET_IP_MODE_NORMAL);
zassert_true(status, NULL);
zassert_equal(
Network_Port_BIP6_Mode(object_instance), BACNET_IP_MODE_NORMAL,
NULL);
status = Network_Port_IPv6_Address_Set(object_instance, address);
zassert_true(status, NULL);
status = Network_Port_IPv6_Subnet_Prefix_Set(object_instance, 24);
zassert_true(status, NULL);
status = Network_Port_IPv6_Gateway_Set(object_instance, address);
zassert_true(status, NULL);
status =
Network_Port_IPv6_DNS_Server_Set(object_instance, 0, address);
zassert_true(status, NULL);
status = Network_Port_IPv6_Multicast_Address_Set(
object_instance, address);
zassert_true(status, NULL);
status =
Network_Port_IPv6_DHCP_Server_Set(object_instance, address);
zassert_true(status, NULL);
status = Network_Port_BIP6_Port_Set(object_instance, 47808);
zassert_true(status, NULL);
zassert_equal(Network_Port_BIP6_Port(object_instance), 47808, NULL);
status = Network_Port_IPv6_Gateway_Zone_Index_Set(
object_instance, "eth0");
zassert_true(status, NULL);
zassert_equal(
strcmp(
Network_Port_IPv6_Zone_Index_ASCII(object_instance),
"eth0"),
0, NULL);
status = Network_Port_IPv6_Auto_Addressing_Enable_Set(
object_instance, true);
zassert_true(status, NULL);
zassert_true(
Network_Port_IPv6_Auto_Addressing_Enable(object_instance),
NULL);
}
/* generic R/W property test */
bacnet_object_properties_read_write_test(
OBJECT_NETWORK_PORT, object_instance, Network_Port_Property_Lists,
Network_Port_Read_Property, Network_Port_Write_Property,
@@ -69,6 +256,8 @@ static void test_network_port(void)
object_instance, Network_Port_Name_Set,
Network_Port_Object_Name_ASCII);
port++;
Network_Port_Changes_Activate();
Network_Port_Changes_Discard();
Network_Port_Cleanup();
}