From f8e9ab8d865211e3ac451d69fcaf38f89e1fdf4d Mon Sep 17 00:00:00 2001 From: Steve Karg Date: Thu, 13 Feb 2025 08:44:30 -0600 Subject: [PATCH] Changed link-speed, network-number, network-number-quality, and apdu-length properties of the network port object to be optional when protocol-revision is 24 or greater. (#913) --- ports/at91sam7s/netport.c | 16 +++++++-- ports/bdk-atxx4-mstp/netport.c | 17 +++++++-- ports/stm32f10x/netport.c | 16 +++++++-- ports/stm32f4xx/netport.c | 19 ++++++++-- ports/xplained/netport.c | 16 +++++++-- src/bacnet/basic/object/netport.c | 58 +++++++++++++++++++++++++------ src/bacnet/property.c | 29 ++++++++++++---- 7 files changed, 142 insertions(+), 29 deletions(-) diff --git a/ports/at91sam7s/netport.c b/ports/at91sam7s/netport.c index de8a21e1..955d7d6a 100644 --- a/ports/at91sam7s/netport.c +++ b/ports/at91sam7s/netport.c @@ -58,11 +58,23 @@ static uint32_t Link_Speeds[] = {9600, 19200, 38400, 57600, 76800, 115200 }; static const int Network_Port_Properties_Required[] = { PROP_OBJECT_IDENTIFIER, PROP_OBJECT_NAME, PROP_OBJECT_TYPE, PROP_STATUS_FLAGS, PROP_RELIABILITY, PROP_OUT_OF_SERVICE, PROP_NETWORK_TYPE, PROP_PROTOCOL_LEVEL, - PROP_NETWORK_NUMBER, PROP_NETWORK_NUMBER_QUALITY, PROP_CHANGES_PENDING, - PROP_APDU_LENGTH, PROP_LINK_SPEED, -1 }; + PROP_CHANGES_PENDING, +#if (BACNET_PROTOCOL_REVISION < 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif + -1 }; static const int Network_Port_Properties_Optional[] = { PROP_MAC_ADDRESS, PROP_MAX_MASTER, PROP_MAX_INFO_FRAMES, PROP_LINK_SPEEDS, +#if (BACNET_PROTOCOL_REVISION >= 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif -1 }; static const int Network_Port_Properties_Proprietary[] = { -1 }; diff --git a/ports/bdk-atxx4-mstp/netport.c b/ports/bdk-atxx4-mstp/netport.c index 23418919..85b2a055 100644 --- a/ports/bdk-atxx4-mstp/netport.c +++ b/ports/bdk-atxx4-mstp/netport.c @@ -59,11 +59,24 @@ static uint32_t Link_Speeds[] = {9600, 19200, 38400, 57600, 76800, 115200 }; static const int Network_Port_Properties_Required[] = { PROP_OBJECT_IDENTIFIER, PROP_OBJECT_NAME, PROP_OBJECT_TYPE, PROP_STATUS_FLAGS, PROP_RELIABILITY, PROP_OUT_OF_SERVICE, PROP_NETWORK_TYPE, PROP_PROTOCOL_LEVEL, - PROP_NETWORK_NUMBER, PROP_NETWORK_NUMBER_QUALITY, PROP_CHANGES_PENDING, - PROP_APDU_LENGTH, PROP_LINK_SPEED, -1 }; + PROP_CHANGES_PENDING, +#if (BACNET_PROTOCOL_REVISION < 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif + -1 +}; static const int Network_Port_Properties_Optional[] = { PROP_MAC_ADDRESS, PROP_MAX_MASTER, PROP_MAX_INFO_FRAMES, PROP_LINK_SPEEDS, +#if (BACNET_PROTOCOL_REVISION >= 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif -1 }; static const int Network_Port_Properties_Proprietary[] = { -1 }; diff --git a/ports/stm32f10x/netport.c b/ports/stm32f10x/netport.c index de8a21e1..955d7d6a 100644 --- a/ports/stm32f10x/netport.c +++ b/ports/stm32f10x/netport.c @@ -58,11 +58,23 @@ static uint32_t Link_Speeds[] = {9600, 19200, 38400, 57600, 76800, 115200 }; static const int Network_Port_Properties_Required[] = { PROP_OBJECT_IDENTIFIER, PROP_OBJECT_NAME, PROP_OBJECT_TYPE, PROP_STATUS_FLAGS, PROP_RELIABILITY, PROP_OUT_OF_SERVICE, PROP_NETWORK_TYPE, PROP_PROTOCOL_LEVEL, - PROP_NETWORK_NUMBER, PROP_NETWORK_NUMBER_QUALITY, PROP_CHANGES_PENDING, - PROP_APDU_LENGTH, PROP_LINK_SPEED, -1 }; + PROP_CHANGES_PENDING, +#if (BACNET_PROTOCOL_REVISION < 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif + -1 }; static const int Network_Port_Properties_Optional[] = { PROP_MAC_ADDRESS, PROP_MAX_MASTER, PROP_MAX_INFO_FRAMES, PROP_LINK_SPEEDS, +#if (BACNET_PROTOCOL_REVISION >= 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif -1 }; static const int Network_Port_Properties_Proprietary[] = { -1 }; diff --git a/ports/stm32f4xx/netport.c b/ports/stm32f4xx/netport.c index fac24780..523154c9 100644 --- a/ports/stm32f4xx/netport.c +++ b/ports/stm32f4xx/netport.c @@ -58,11 +58,24 @@ static uint32_t Link_Speeds[] = { 9600, 19200, 38400, 57600, 76800, 115200 }; static const int Network_Port_Properties_Required[] = { PROP_OBJECT_IDENTIFIER, PROP_OBJECT_NAME, PROP_OBJECT_TYPE, PROP_STATUS_FLAGS, PROP_RELIABILITY, PROP_OUT_OF_SERVICE, PROP_NETWORK_TYPE, PROP_PROTOCOL_LEVEL, - PROP_NETWORK_NUMBER, PROP_NETWORK_NUMBER_QUALITY, PROP_CHANGES_PENDING, - PROP_APDU_LENGTH, PROP_LINK_SPEED, -1 }; + PROP_CHANGES_PENDING, +#if (BACNET_PROTOCOL_REVISION < 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif + -1 }; static const int Network_Port_Properties_Optional[] = { PROP_MAC_ADDRESS, - PROP_MAX_MASTER, PROP_MAX_INFO_FRAMES, PROP_LINK_SPEEDS, -1 }; + PROP_MAX_MASTER, PROP_MAX_INFO_FRAMES, PROP_LINK_SPEEDS, +#if (BACNET_PROTOCOL_REVISION >= 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif + -1 }; static const int Network_Port_Properties_Proprietary[] = { -1 }; diff --git a/ports/xplained/netport.c b/ports/xplained/netport.c index 4904263f..1668e9d4 100644 --- a/ports/xplained/netport.c +++ b/ports/xplained/netport.c @@ -52,11 +52,23 @@ static uint32_t Link_Speeds[] = {9600, 19200, 38400, 57600, 76800, 115200 }; static const int Network_Port_Properties_Required[] = { PROP_OBJECT_IDENTIFIER, PROP_OBJECT_NAME, PROP_OBJECT_TYPE, PROP_STATUS_FLAGS, PROP_RELIABILITY, PROP_OUT_OF_SERVICE, PROP_NETWORK_TYPE, PROP_PROTOCOL_LEVEL, - PROP_NETWORK_NUMBER, PROP_NETWORK_NUMBER_QUALITY, PROP_CHANGES_PENDING, - PROP_APDU_LENGTH, PROP_LINK_SPEED, -1 }; + PROP_CHANGES_PENDING, +#if (BACNET_PROTOCOL_REVISION < 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif + -1 }; static const int Network_Port_Properties_Optional[] = { PROP_MAC_ADDRESS, PROP_MAX_MASTER, PROP_MAX_INFO_FRAMES, PROP_LINK_SPEEDS, +#if (BACNET_PROTOCOL_REVISION >= 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif -1 }; static const int Network_Port_Properties_Proprietary[] = { -1 }; diff --git a/src/bacnet/basic/object/netport.c b/src/bacnet/basic/object/netport.c index 735f23d7..477a96c6 100644 --- a/src/bacnet/basic/object/netport.c +++ b/src/bacnet/basic/object/netport.c @@ -130,23 +130,49 @@ static struct object_data Object_List[BACNET_NETWORK_PORTS_MAX]; /* These three arrays are used by the ReadPropertyMultiple handler */ static const int Network_Port_Properties_Required[] = { /* unordered list of required properties */ - PROP_OBJECT_IDENTIFIER, PROP_OBJECT_NAME, - PROP_OBJECT_TYPE, PROP_STATUS_FLAGS, - PROP_RELIABILITY, PROP_OUT_OF_SERVICE, - PROP_NETWORK_TYPE, PROP_PROTOCOL_LEVEL, - PROP_NETWORK_NUMBER, PROP_NETWORK_NUMBER_QUALITY, - PROP_CHANGES_PENDING, PROP_APDU_LENGTH, - PROP_LINK_SPEED, -1 + PROP_OBJECT_IDENTIFIER, + PROP_OBJECT_NAME, + PROP_OBJECT_TYPE, + PROP_STATUS_FLAGS, + PROP_RELIABILITY, + PROP_OUT_OF_SERVICE, + PROP_NETWORK_TYPE, + PROP_PROTOCOL_LEVEL, + PROP_CHANGES_PENDING, +#if (BACNET_PROTOCOL_REVISION < 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif + -1 }; static const int Ethernet_Port_Properties_Optional[] = { /* unordered list of optional properties */ - PROP_DESCRIPTION, PROP_MAC_ADDRESS, -1 + PROP_DESCRIPTION, + PROP_MAC_ADDRESS, +#if (BACNET_PROTOCOL_REVISION >= 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif + -1 }; static const int MSTP_Port_Properties_Optional[] = { /* unordered list of optional properties */ - PROP_DESCRIPTION, PROP_MAC_ADDRESS, PROP_MAX_MASTER, PROP_MAX_INFO_FRAMES, + PROP_DESCRIPTION, + PROP_MAC_ADDRESS, + PROP_MAX_MASTER, + PROP_MAX_INFO_FRAMES, +#if (BACNET_PROTOCOL_REVISION >= 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif -1 }; @@ -171,6 +197,12 @@ static const int BIP_Port_Properties_Optional[] = { #if defined(BACDL_BIP) && (BBMD_CLIENT_ENABLED) PROP_FD_BBMD_ADDRESS, PROP_FD_SUBSCRIPTION_LIFETIME, +#endif +#if (BACNET_PROTOCOL_REVISION >= 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, #endif -1 }; @@ -199,6 +231,12 @@ static const int BIP6_Port_Properties_Optional[] = { #if defined(BACDL_BIP6) && (BBMD_CLIENT_ENABLED) PROP_FD_BBMD_ADDRESS, PROP_FD_SUBSCRIPTION_LIFETIME, +#endif +#if (BACNET_PROTOCOL_REVISION >= 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, #endif -1 }; @@ -3957,7 +3995,6 @@ bool Network_Port_Read_Range( bool status = false; switch (pRequest->object_property) { - /* required properties */ case PROP_OBJECT_IDENTIFIER: case PROP_OBJECT_NAME: case PROP_OBJECT_TYPE: @@ -3971,7 +4008,6 @@ bool Network_Port_Read_Range( case PROP_CHANGES_PENDING: case PROP_APDU_LENGTH: case PROP_LINK_SPEED: - /* optional properties */ case PROP_MAC_ADDRESS: #if defined(BACDL_MSTP) case PROP_MAX_MASTER: diff --git a/src/bacnet/property.c b/src/bacnet/property.c index d5d1976d..426a0a5f 100644 --- a/src/bacnet/property.c +++ b/src/bacnet/property.c @@ -2011,13 +2011,22 @@ static const int Multistate_Value_Properties_Optional[] = { static const int Network_Port_Properties_Required[] = { /* unordered list of properties */ - PROP_OBJECT_IDENTIFIER, PROP_OBJECT_NAME, - PROP_OBJECT_TYPE, PROP_STATUS_FLAGS, - PROP_RELIABILITY, PROP_OUT_OF_SERVICE, - PROP_NETWORK_TYPE, PROP_PROTOCOL_LEVEL, - PROP_NETWORK_NUMBER, PROP_NETWORK_NUMBER_QUALITY, - PROP_CHANGES_PENDING, PROP_APDU_LENGTH, - PROP_LINK_SPEED, -1 + PROP_OBJECT_IDENTIFIER, + PROP_OBJECT_NAME, + PROP_OBJECT_TYPE, + PROP_STATUS_FLAGS, + PROP_RELIABILITY, + PROP_OUT_OF_SERVICE, + PROP_NETWORK_TYPE, + PROP_PROTOCOL_LEVEL, + PROP_CHANGES_PENDING, +#if (BACNET_PROTOCOL_REVISION < 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif + -1 }; static const int Network_Port_Properties_Optional[] = { @@ -2082,6 +2091,12 @@ static const int Network_Port_Properties_Optional[] = { PROP_TAGS, PROP_PROFILE_LOCATION, PROP_PROFILE_NAME, +#if (BACNET_PROTOCOL_REVISION >= 24) + PROP_APDU_LENGTH, + PROP_NETWORK_NUMBER, + PROP_NETWORK_NUMBER_QUALITY, + PROP_LINK_SPEED, +#endif -1 };