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
+2 -2
View File
@@ -64,11 +64,11 @@ bsc:
.PHONY: apps .PHONY: apps
apps: apps:
$(MAKE) -s -C apps all $(MAKE) -s LEGACY=true -C apps all
.PHONY: lib .PHONY: lib
lib: lib:
$(MAKE) -s -C apps $@ $(MAKE) -s LEGACY=true -C apps $@
.PHONY: library .PHONY: library
library: library:
+8 -8
View File
@@ -42,25 +42,19 @@ PORT_ARCNET_SRC = \
PORT_MSTP_SRC = \ PORT_MSTP_SRC = \
$(BACNET_PORT_DIR)/rs485.c \ $(BACNET_PORT_DIR)/rs485.c \
$(BACNET_PORT_DIR)/dlmstp.c \ $(BACNET_PORT_DIR)/dlmstp.c
$(BACNET_SRC_DIR)/bacnet/datalink/cobs.c \
$(BACNET_SRC_DIR)/bacnet/datalink/mstp.c \
$(BACNET_SRC_DIR)/bacnet/datalink/mstptext.c \
$(BACNET_SRC_DIR)/bacnet/datalink/crc.c
PORT_ETHERNET_SRC = \ PORT_ETHERNET_SRC = \
$(BACNET_PORT_DIR)/ethernet.c $(BACNET_PORT_DIR)/ethernet.c
PORT_BIP_SRC = \ PORT_BIP_SRC = \
$(BACNET_PORT_DIR)/bip-init.c \ $(BACNET_PORT_DIR)/bip-init.c \
$(BACNET_SRC_DIR)/bacnet/datalink/bvlc.c \
$(BACNET_SRC_DIR)/bacnet/basic/bbmd/h_bbmd.c $(BACNET_SRC_DIR)/bacnet/basic/bbmd/h_bbmd.c
PORT_BIP6_SRC = \ PORT_BIP6_SRC = \
$(BACNET_PORT_DIR)/bip6.c \ $(BACNET_PORT_DIR)/bip6.c \
$(BACNET_SRC_DIR)/bacnet/basic/bbmd6/h_bbmd6.c \ $(BACNET_SRC_DIR)/bacnet/basic/bbmd6/h_bbmd6.c \
$(BACNET_SRC_DIR)/bacnet/basic/bbmd6/vmac.c \ $(BACNET_SRC_DIR)/bacnet/basic/bbmd6/vmac.c
$(BACNET_SRC_DIR)/bacnet/datalink/bvlc6.c
PORT_BSC_SRC = \ PORT_BSC_SRC = \
$(BACNET_PORT_DIR)/bip-init.c \ $(BACNET_PORT_DIR)/bip-init.c \
@@ -134,6 +128,12 @@ BACNET_PORT_SRC += \
BACNET_SRC ?= \ BACNET_SRC ?= \
$(wildcard $(BACNET_SRC_DIR)/bacnet/*.c) \ $(wildcard $(BACNET_SRC_DIR)/bacnet/*.c) \
$(BACNET_SRC_DIR)/bacnet/datalink/bvlc.c \
$(BACNET_SRC_DIR)/bacnet/datalink/bvlc6.c \
$(BACNET_SRC_DIR)/bacnet/datalink/cobs.c \
$(BACNET_SRC_DIR)/bacnet/datalink/crc.c \
$(BACNET_SRC_DIR)/bacnet/datalink/mstp.c \
$(BACNET_SRC_DIR)/bacnet/datalink/mstptext.c
BACNET_BASIC_SRC ?= \ BACNET_BASIC_SRC ?= \
$(wildcard $(BACNET_SRC_DIR)/bacnet/basic/*.c) \ $(wildcard $(BACNET_SRC_DIR)/bacnet/basic/*.c) \
+1 -1
View File
@@ -20,7 +20,7 @@
#define DEBUG_PRINTF debug_printf #define DEBUG_PRINTF debug_printf
#else #else
#undef DEBUG_ENABLED #undef DEBUG_ENABLED
#define DEBUG_PRINTF(...) #define DEBUG_PRINTF debug_printf_disabled
#endif #endif
#ifndef LWS_PROTOCOL_LIST_TERM #ifndef LWS_PROTOCOL_LIST_TERM
+1 -1
View File
@@ -21,7 +21,7 @@
#define DEBUG_PRINTF debug_printf #define DEBUG_PRINTF debug_printf
#else #else
#undef DEBUG_ENABLED #undef DEBUG_ENABLED
#define DEBUG_PRINTF(...) #define DEBUG_PRINTF debug_printf_disabled
#endif #endif
#define BSC_RX_BUFFER_LEN BSC_WEBSOCKET_RX_BUFFER_LEN #define BSC_RX_BUFFER_LEN BSC_WEBSOCKET_RX_BUFFER_LEN
+1 -1
View File
@@ -18,7 +18,7 @@
#define DEBUG_PRINTF printf #define DEBUG_PRINTF printf
#else #else
#undef DEBUG_ENABLED #undef DEBUG_ENABLED
#define DEBUG_PRINTF(...) #define DEBUG_PRINTF debug_printf_disabled
#endif #endif
struct BSC_Event { struct BSC_Event {
+1 -1
View File
@@ -19,7 +19,7 @@
#define DEBUG_PRINTF debug_printf #define DEBUG_PRINTF debug_printf
#else #else
#undef DEBUG_ENABLED #undef DEBUG_ENABLED
#define DEBUG_PRINTF(...) #define DEBUG_PRINTF debug_printf_disabled
#endif #endif
#ifndef LWS_PROTOCOL_LIST_TERM #ifndef LWS_PROTOCOL_LIST_TERM
+1 -1
View File
@@ -19,7 +19,7 @@
#define DEBUG_PRINTF debug_printf #define DEBUG_PRINTF debug_printf
#else #else
#undef DEBUG_ENABLED #undef DEBUG_ENABLED
#define DEBUG_PRINTF(...) #define DEBUG_PRINTF debug_printf_disabled
#endif #endif
#define BSC_RX_BUFFER_LEN BSC_WEBSOCKET_RX_BUFFER_LEN #define BSC_RX_BUFFER_LEN BSC_WEBSOCKET_RX_BUFFER_LEN
+200 -295
View File
@@ -20,6 +20,8 @@
#include "bacnet/bacdcode.h" #include "bacnet/bacdcode.h"
#include "bacnet/npdu.h" #include "bacnet/npdu.h"
#include "bacnet/apdu.h" #include "bacnet/apdu.h"
#include "bacnet/datalink/bvlc.h"
#include "bacnet/datalink/bvlc6.h"
#include "bacnet/datalink/datalink.h" #include "bacnet/datalink/datalink.h"
#include "bacnet/basic/binding/address.h" #include "bacnet/basic/binding/address.h"
#include "bacnet/basic/object/device.h" #include "bacnet/basic/object/device.h"
@@ -27,10 +29,6 @@
#include "bacnet/basic/object/netport.h" #include "bacnet/basic/object/netport.h"
#include <bacnet/basic/object/netport_internal.h> #include <bacnet/basic/object/netport_internal.h>
#if defined(BACDL_BIP6)
#include "bacnet/datalink/bvlc6.h"
#endif
#ifndef BBMD_ENABLED #ifndef BBMD_ENABLED
#define BBMD_ENABLED 1 #define BBMD_ENABLED 1
#endif #endif
@@ -43,9 +41,7 @@ struct bacnet_ipv4_port {
uint8_t IP_DNS_Server[BIP_DNS_MAX][4]; uint8_t IP_DNS_Server[BIP_DNS_MAX][4];
uint16_t Port; uint16_t Port;
BACNET_IP_MODE Mode; BACNET_IP_MODE Mode;
#if defined(BACDL_BIP) && (BACNET_NETWORK_PORT_IP_DHCP_ENABLED)
bool IP_DHCP_Enable; bool IP_DHCP_Enable;
#endif
uint32_t IP_DHCP_Lease_Seconds; uint32_t IP_DHCP_Lease_Seconds;
uint32_t IP_DHCP_Lease_Seconds_Remaining; uint32_t IP_DHCP_Lease_Seconds_Remaining;
uint8_t IP_DHCP_Server[4]; uint8_t IP_DHCP_Server[4];
@@ -828,10 +824,10 @@ bool Network_Port_Quality_Set(
* Note: depends on Network_Type being set for this object * Note: depends on Network_Type being set for this object
* *
* @param object_instance - object-instance number of the object * @param object_instance - object-instance number of the object
* @param mac_address - holds the mac-address retrieved * @param mac_address - holds the mac-address retrieved, or NULL for length
* @param mac_size - size of the mac-address buffer * @param mac_size - size of the mac-address buffer, or 0 for length
* *
* @return the length of the mac-address retrieved, or zero if not found * @return the length of the mac-address, or zero if not found
*/ */
uint8_t Network_Port_MAC_Address_Value( uint8_t Network_Port_MAC_Address_Value(
uint32_t object_instance, uint8_t *mac_address, size_t mac_size) uint32_t object_instance, uint8_t *mac_address, size_t mac_size)
@@ -874,10 +870,8 @@ uint8_t Network_Port_MAC_Address_Value(
break; break;
} }
if (mac_len > 0) { if (mac_len > 0) {
if (mac_size >= mac_len) { if ((mac_address) && (mac_size >= mac_len)) {
memcpy(mac_address, mac, mac_len); memcpy(mac_address, mac, mac_len);
} else {
mac_len = 0;
} }
} }
} }
@@ -940,7 +934,15 @@ bool Network_Port_MAC_Address_Set(
mac_size = sizeof(Object_List[index].Network.MSTP.MAC_Address); mac_size = sizeof(Object_List[index].Network.MSTP.MAC_Address);
break; break;
case PORT_TYPE_BIP: case PORT_TYPE_BIP:
/* no need to set - created from IP address and UPD Port */ if (mac_len >= 6) {
memcpy(
&Object_List[index].Network.IPv4.IP_Address,
&mac_src[0], 4);
/* convert from network-byte-order to host-byte-order */
decode_unsigned16(
&mac_src[4], &Object_List[index].Network.IPv4.Port);
status = true;
}
break; break;
case PORT_TYPE_BIP6: case PORT_TYPE_BIP6:
mac_dest = &Object_List[index].Network.IPv6.MAC_Address[0]; mac_dest = &Object_List[index].Network.IPv6.MAC_Address[0];
@@ -1468,7 +1470,6 @@ bool Network_Port_IP_Gateway_Set(
return status; return status;
} }
#if defined(BACDL_BIP) && (BACNET_NETWORK_PORT_IP_DHCP_ENABLED)
/** /**
* For a given object instance-number, returns the IP_DHCP_Enable * For a given object instance-number, returns the IP_DHCP_Enable
* property value * property value
@@ -1491,9 +1492,7 @@ bool Network_Port_IP_DHCP_Enable(uint32_t object_instance)
return dhcp_enable; return dhcp_enable;
} }
#endif
#if defined(BACDL_BIP) && (BACNET_NETWORK_PORT_IP_DHCP_ENABLED)
/** /**
* For a given object instance-number, sets the IP_DHCP_Enable property value * For a given object instance-number, sets the IP_DHCP_Enable property value
* *
@@ -1517,7 +1516,6 @@ bool Network_Port_IP_DHCP_Enable_Set(uint32_t object_instance, bool value)
return status; return status;
} }
#endif
/** /**
* For a given object instance-number and dns_index, loads the ip-address into * For a given object instance-number and dns_index, loads the ip-address into
@@ -1736,11 +1734,17 @@ bool Network_Port_BBMD_Accept_FD_Registrations(uint32_t object_instance)
bool flag = false; bool flag = false;
unsigned index = 0; unsigned index = 0;
struct bacnet_ipv4_port *ipv4 = NULL; struct bacnet_ipv4_port *ipv4 = NULL;
struct bacnet_ipv6_port *ipv6 = NULL;
index = Network_Port_Instance_To_Index(object_instance); index = Network_Port_Instance_To_Index(object_instance);
if (index < BACNET_NETWORK_PORTS_MAX) { if (index < BACNET_NETWORK_PORTS_MAX) {
ipv4 = &Object_List[index].Network.IPv4; if (Object_List[index].Network_Type == PORT_TYPE_BIP) {
flag = ipv4->BBMD_Accept_FD_Registrations; ipv4 = &Object_List[index].Network.IPv4;
flag = ipv4->BBMD_Accept_FD_Registrations;
} else if (Object_List[index].Network_Type == PORT_TYPE_BIP6) {
ipv6 = &Object_List[index].Network.IPv6;
flag = ipv6->BBMD_Accept_FD_Registrations;
}
} }
return flag; return flag;
@@ -1761,15 +1765,25 @@ bool Network_Port_BBMD_Accept_FD_Registrations_Set(
bool status = false; bool status = false;
unsigned index = 0; unsigned index = 0;
struct bacnet_ipv4_port *ipv4 = NULL; struct bacnet_ipv4_port *ipv4 = NULL;
struct bacnet_ipv6_port *ipv6 = NULL;
index = Network_Port_Instance_To_Index(object_instance); index = Network_Port_Instance_To_Index(object_instance);
if (index < BACNET_NETWORK_PORTS_MAX) { if (index < BACNET_NETWORK_PORTS_MAX) {
ipv4 = &Object_List[index].Network.IPv4; if (Object_List[index].Network_Type == PORT_TYPE_BIP) {
if (flag != ipv4->BBMD_Accept_FD_Registrations) { ipv4 = &Object_List[index].Network.IPv4;
ipv4->BBMD_Accept_FD_Registrations = flag; if (flag != ipv4->BBMD_Accept_FD_Registrations) {
Object_List[index].Changes_Pending = true; ipv4->BBMD_Accept_FD_Registrations = flag;
Object_List[index].Changes_Pending = true;
}
status = true;
} else if (Object_List[index].Network_Type == PORT_TYPE_BIP6) {
ipv6 = &Object_List[index].Network.IPv6;
if (flag != ipv6->BBMD_Accept_FD_Registrations) {
ipv6->BBMD_Accept_FD_Registrations = flag;
Object_List[index].Changes_Pending = true;
}
status = true;
} }
status = true;
} }
return status; return status;
@@ -1798,6 +1812,37 @@ void *Network_Port_BBMD_BD_Table(uint32_t object_instance)
return bdt_head; return bdt_head;
} }
/**
* @brief For a given object instance-number, encodes the BBMD-BD-Table property
* value
* @param object_instance - object-instance number of the object
* @param apdu - buffer to encode the property value into, or NULL for length
* @return number of bytes encoded
*/
static int BBMD_Broadcast_Distribution_Table_Encode(
uint32_t object_instance, uint8_t *apdu, size_t apdu_size)
{
unsigned index = 0;
struct bacnet_ipv4_port *ipv4 = NULL;
struct bacnet_ipv6_port *ipv6 = NULL;
int apdu_len = 0;
index = Network_Port_Instance_To_Index(object_instance);
if (index < BACNET_NETWORK_PORTS_MAX) {
if (Object_List[index].Network_Type == PORT_TYPE_BIP) {
ipv4 = &Object_List[index].Network.IPv4;
apdu_len = bvlc_broadcast_distribution_table_encode(
apdu, apdu_size, ipv4->BBMD_BD_Table);
} else if (Object_List[index].Network_Type == PORT_TYPE_BIP6) {
ipv6 = &Object_List[index].Network.IPv6;
apdu_len = bvlc6_broadcast_distribution_table_encode(
apdu, apdu_size, ipv6->BBMD_BD_Table);
}
}
return apdu_len;
}
/** /**
* For a given object instance-number, sets the BBMD-BD-Table head * For a given object instance-number, sets the BBMD-BD-Table head
* property value * property value
@@ -1878,40 +1923,36 @@ bool Network_Port_BBMD_FD_Table_Set(uint32_t object_instance, void *fdt_head)
return status; return status;
} }
#if defined(BACDL_BIP) && (BBMD_ENABLED || BBMD_CLIENT_ENABLED)
/** /**
* For a given object instance-number, gets the ip-address and port * @brief For a given object instance-number, encodes the BBMD-BD-Table property
* Note: depends on Network_Type being set for this object * value
* * @param object_instance - object-instance number of the object
* @param object_instance - object-instance number of the object * @param apdu - buffer to encode the property value into, or NULL for length
* @param addr - holds the ip-address and port retrieved * @return number of bytes encoded
*
* @return true if ip-address and port were retrieved
*/ */
static bool Network_Port_Remote_BBMD_IP_Address_And_Port( static int BBMD_Foreign_Device_Table_Encode(
uint32_t object_instance, BACNET_IP_ADDRESS *addr) uint32_t object_instance, uint8_t *apdu, size_t apdu_size)
{ {
unsigned index = 0; /* offset from instance lookup */ unsigned index = 0;
bool status = false; struct bacnet_ipv4_port *ipv4 = NULL;
struct bacnet_ipv6_port *ipv6 = NULL;
int apdu_len = 0;
if (addr) { index = Network_Port_Instance_To_Index(object_instance);
index = Network_Port_Instance_To_Index(object_instance); if (index < BACNET_NETWORK_PORTS_MAX) {
if (index < BACNET_NETWORK_PORTS_MAX) { if (Object_List[index].Network_Type == PORT_TYPE_BIP) {
if (Object_List[index].Network_Type == PORT_TYPE_BIP) { ipv4 = &Object_List[index].Network.IPv4;
bvlc_address_set( apdu_len = bvlc_foreign_device_table_encode(
addr, Object_List[index].Network.IPv4.BBMD_IP_Address[0], apdu, apdu_size, ipv4->BBMD_FD_Table);
Object_List[index].Network.IPv4.BBMD_IP_Address[1], } else if (Object_List[index].Network_Type == PORT_TYPE_BIP6) {
Object_List[index].Network.IPv4.BBMD_IP_Address[2], ipv6 = &Object_List[index].Network.IPv6;
Object_List[index].Network.IPv4.BBMD_IP_Address[3]); apdu_len = bvlc6_foreign_device_table_encode(
addr->port = Object_List[index].Network.IPv4.BBMD_Port; apdu, apdu_size, ipv6->BBMD_FD_Table);
status = true;
}
} }
} }
return status; return apdu_len;
} }
#endif
/** /**
* For a given object instance-number, loads the ip-address into * For a given object instance-number, loads the ip-address into
@@ -2097,12 +2138,36 @@ bool Network_Port_Remote_BBMD_BIP_Lifetime_Set(
return status; return status;
} }
/* IPv6 BBMD related getters and setters */ /**
#if defined(BACDL_BIP6) * @brief Get the foreign device subscription lifetime
* @param object_instance [in] BACnet network port object instance number
* @return foreign device subscription lifetime
*/
static uint16_t Foreign_Device_Subscription_Lifetime(uint32_t object_instance)
{
uint16_t value = 0;
unsigned index = 0;
index = Network_Port_Instance_To_Index(object_instance);
if (index < BACNET_NETWORK_PORTS_MAX) {
switch (Object_List[index].Network_Type) {
case PORT_TYPE_BIP:
value = Object_List[index].Network.IPv4.BBMD_Lifetime;
break;
case PORT_TYPE_BIP6:
value = Object_List[index].Network.IPv6.BBMD_Lifetime;
break;
default:
break;
}
}
return value;
}
/** /**
* For a given object instance-number, returns the BBMD-Accept-FD-Registrations * For a given object instance-number, returns the
* property value * BBMD-Accept-FD-Registrations property value
* *
* @param object_instance - object-instance number of the object * @param object_instance - object-instance number of the object
* *
@@ -2257,7 +2322,6 @@ bool Network_Port_BBMD_IP6_FD_Table_Set(
return status; return status;
} }
#if defined(BACDL_BIP6) && (BBMD_CLIENT_ENABLED)
/** /**
* For a given object instance-number, gets the ip-address and port * For a given object instance-number, gets the ip-address and port
* Note: depends on Network_Type being set for this object * Note: depends on Network_Type being set for this object
@@ -2267,29 +2331,37 @@ bool Network_Port_BBMD_IP6_FD_Table_Set(
* *
* @return true if ip-address and port were retrieved * @return true if ip-address and port were retrieved
*/ */
static bool Network_Port_Remote_BBMD_IP6_Address_And_Port( static int Foreign_Device_BBMD_Address_Encode(
uint32_t object_instance, BACNET_IP6_ADDRESS *addr) uint32_t object_instance, uint8_t *apdu, size_t apdu_size)
{ {
unsigned index = 0; /* offset from instance lookup */ unsigned index = 0; /* offset from instance lookup */
bool status = false; BACNET_IP_ADDRESS ip4_address;
BACNET_IP6_ADDRESS ip6_address;
int apdu_len = 0;
if (addr) { index = Network_Port_Instance_To_Index(object_instance);
index = Network_Port_Instance_To_Index(object_instance); if (index < BACNET_NETWORK_PORTS_MAX) {
if (index < BACNET_NETWORK_PORTS_MAX) { if (Object_List[index].Network_Type == PORT_TYPE_BIP) {
if (Object_List[index].Network_Type == PORT_TYPE_BIP6) { bvlc_address_set(
memcpy( &ip4_address,
addr->address, Object_List[index].Network.IPv4.BBMD_IP_Address[0],
Object_List[index].Network.IPv6.BBMD_IP_Address, Object_List[index].Network.IPv4.BBMD_IP_Address[1],
sizeof(addr->address)); Object_List[index].Network.IPv4.BBMD_IP_Address[2],
addr->port = Object_List[index].Network.IPv6.BBMD_Port; Object_List[index].Network.IPv4.BBMD_IP_Address[3]);
status = true; ip4_address.port = Object_List[index].Network.IPv4.BBMD_Port;
} apdu_len = bvlc_foreign_device_bbmd_host_address_encode(
apdu, apdu_size, &ip4_address);
} else if (Object_List[index].Network_Type == PORT_TYPE_BIP6) {
bvlc6_address_n_port_set(
&ip6_address, Object_List[index].Network.IPv6.BBMD_IP_Address,
Object_List[index].Network.IPv6.BBMD_Port);
apdu_len = bvlc6_foreign_device_bbmd_host_address_encode(
apdu, apdu_size, &ip6_address);
} }
} }
return status; return apdu_len;
} }
#endif
/** /**
* For a given object instance-number, loads the ip-address into * For a given object instance-number, loads the ip-address into
@@ -2458,7 +2530,6 @@ bool Network_Port_Remote_BBMD_BIP6_Lifetime_Set(
return status; return status;
} }
#endif
/** /**
* For a given object instance-number, gets the BACnet/IP UDP Port number * For a given object instance-number, gets the BACnet/IP UDP Port number
@@ -2562,6 +2633,7 @@ bool Network_Port_IPv6_Address_Set(
for (i = 0; i < IPV6_ADDR_SIZE; i++) { for (i = 0; i < IPV6_ADDR_SIZE; i++) {
Object_List[index].Network.IPv6.IP_Address[i] = ip_address[i]; Object_List[index].Network.IPv6.IP_Address[i] = ip_address[i];
} }
status = true;
} }
} }
@@ -2569,8 +2641,9 @@ bool Network_Port_IPv6_Address_Set(
} }
/** /**
* For a given object instance-number, gets the BACnet/IP Subnet prefix value * For a given object instance-number, gets the BACnet/IP Subnet prefix
* Note: depends on Network_Type being set to PORT_TYPE_BIP for this object * value Note: depends on Network_Type being set to PORT_TYPE_BIP for this
* object
* *
* @param object_instance - object-instance number of the object * @param object_instance - object-instance number of the object
* *
@@ -2592,8 +2665,9 @@ uint8_t Network_Port_IPv6_Subnet_Prefix(uint32_t object_instance)
} }
/** /**
* For a given object instance-number, sets the BACnet/IP Subnet prefix value * For a given object instance-number, sets the BACnet/IP Subnet prefix
* Note: depends on Network_Type being set to PORT_TYPE_BIP for this object * value Note: depends on Network_Type being set to PORT_TYPE_BIP for this
* object
* *
* @param object_instance - object-instance number of the object * @param object_instance - object-instance number of the object
* @param value - BACnet/IP Subnet prefix value 1..128 * @param value - BACnet/IP Subnet prefix value 1..128
@@ -2673,6 +2747,7 @@ bool Network_Port_IPv6_Gateway_Set(
for (i = 0; i < IPV6_ADDR_SIZE; i++) { for (i = 0; i < IPV6_ADDR_SIZE; i++) {
Object_List[index].Network.IPv6.IP_Gateway[i] = ip_address[i]; Object_List[index].Network.IPv6.IP_Gateway[i] = ip_address[i];
} }
status = true;
} }
} }
@@ -2766,6 +2841,7 @@ bool Network_Port_IPv6_DNS_Server_Set(
Object_List[index].Network.IPv6.IP_DNS_Server[dns_index][i] = Object_List[index].Network.IPv6.IP_DNS_Server[dns_index][i] =
ip_address[i]; ip_address[i];
} }
status = true;
} }
} }
@@ -2825,6 +2901,7 @@ bool Network_Port_IPv6_Multicast_Address_Set(
Object_List[index].Network.IPv6.IP_Multicast_Address[i] = Object_List[index].Network.IPv6.IP_Multicast_Address[i] =
ip_address[i]; ip_address[i];
} }
status = true;
} }
} }
@@ -2883,6 +2960,7 @@ bool Network_Port_IPv6_DHCP_Server_Set(
Object_List[index].Network.IPv6.IP_DHCP_Server[i] = Object_List[index].Network.IPv6.IP_DHCP_Server[i] =
ip_address[i]; ip_address[i];
} }
status = true;
} }
} }
@@ -2991,8 +3069,8 @@ const char *Network_Port_IPv6_Zone_Index_ASCII(uint32_t object_instance)
} }
/** /**
* For a given object instance-number, returns the BACnet IPv6 Auto Addressing * For a given object instance-number, returns the BACnet IPv6 Auto
* Enable property value * Addressing Enable property value
* *
* @param object_instance - object-instance number of the object * @param object_instance - object-instance number of the object
* *
@@ -3073,7 +3151,6 @@ bool Network_Port_IPv6_Gateway_Zone_Index_Set(
return status; return status;
} }
#if (BBMD_CLIENT_ENABLED) && defined(BACAPP_HOST_N_PORT)
/** /**
* @brief Write the FD BBMD Address * @brief Write the FD BBMD Address
* @param object_instance [in] BACnet network port object instance number * @param object_instance [in] BACnet network port object instance number
@@ -3099,7 +3176,6 @@ static bool Network_Port_FD_BBMD_Address_Write(
return status; return status;
} }
switch (Network_Port_Type(object_instance)) { switch (Network_Port_Type(object_instance)) {
#if defined(BACDL_BIP)
case PORT_TYPE_BIP: case PORT_TYPE_BIP:
if (Network_Port_BIP_Mode(object_instance) != if (Network_Port_BIP_Mode(object_instance) !=
BACNET_IP_MODE_FOREIGN) { BACNET_IP_MODE_FOREIGN) {
@@ -3122,8 +3198,6 @@ static bool Network_Port_FD_BBMD_Address_Write(
*error_code = ERROR_CODE_VALUE_OUT_OF_RANGE; *error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
} }
break; break;
#endif
#if defined(BACDL_BIP6)
case PORT_TYPE_BIP6: case PORT_TYPE_BIP6:
if (Network_Port_BIP6_Mode(object_instance) != if (Network_Port_BIP6_Mode(object_instance) !=
BACNET_IP_MODE_FOREIGN) { BACNET_IP_MODE_FOREIGN) {
@@ -3144,7 +3218,6 @@ static bool Network_Port_FD_BBMD_Address_Write(
*error_code = ERROR_CODE_VALUE_OUT_OF_RANGE; *error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
} }
break; break;
#endif
default: default:
*error_class = ERROR_CLASS_PROPERTY; *error_class = ERROR_CLASS_PROPERTY;
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED; *error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
@@ -3153,9 +3226,7 @@ static bool Network_Port_FD_BBMD_Address_Write(
return status; return status;
} }
#endif
#if (BBMD_CLIENT_ENABLED)
/** /**
* @brief Write the FD Subscription Lifetime * @brief Write the FD Subscription Lifetime
* @param object_instance [in] BACnet network port object instance number * @param object_instance [in] BACnet network port object instance number
@@ -3183,7 +3254,6 @@ static bool Network_Port_FD_Subscription_Lifetime_Write(
} }
lifetime = (uint16_t)value; lifetime = (uint16_t)value;
switch (Network_Port_Type(object_instance)) { switch (Network_Port_Type(object_instance)) {
#if defined(BACDL_BIP)
case PORT_TYPE_BIP: case PORT_TYPE_BIP:
if (Network_Port_BIP_Mode(object_instance) == if (Network_Port_BIP_Mode(object_instance) ==
BACNET_IP_MODE_FOREIGN) { BACNET_IP_MODE_FOREIGN) {
@@ -3198,8 +3268,6 @@ static bool Network_Port_FD_Subscription_Lifetime_Write(
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED; *error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
} }
break; break;
#endif
#if defined(BACDL_BIP6)
case PORT_TYPE_BIP6: case PORT_TYPE_BIP6:
if (Network_Port_BIP6_Mode(object_instance) == if (Network_Port_BIP6_Mode(object_instance) ==
BACNET_IP_MODE_FOREIGN) { BACNET_IP_MODE_FOREIGN) {
@@ -3214,7 +3282,6 @@ static bool Network_Port_FD_Subscription_Lifetime_Write(
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED; *error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
} }
break; break;
#endif
default: default:
*error_class = ERROR_CLASS_PROPERTY; *error_class = ERROR_CLASS_PROPERTY;
*error_code = ERROR_CODE_WRITE_ACCESS_DENIED; *error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
@@ -3223,7 +3290,6 @@ static bool Network_Port_FD_Subscription_Lifetime_Write(
return status; return status;
} }
#endif
/** /**
* For a given object instance-number, gets the MS/TP Max_Info_Frames value * For a given object instance-number, gets the MS/TP Max_Info_Frames value
@@ -3294,39 +3360,14 @@ int Network_Port_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata)
BACNET_BIT_STRING bit_string; BACNET_BIT_STRING bit_string;
BACNET_OCTET_STRING octet_string; BACNET_OCTET_STRING octet_string;
BACNET_CHARACTER_STRING char_string; BACNET_CHARACTER_STRING char_string;
#if defined(BACDL_BIP) && (BBMD_ENABLED || BBMD_CLIENT_ENABLED)
BACNET_IP_ADDRESS ip_address = { 0 };
#endif
#if defined(BACDL_BIP6) && (BBMD_CLIENT_ENABLED)
BACNET_IP6_ADDRESS ip6_address;
#endif
uint8_t *apdu = NULL; uint8_t *apdu = NULL;
const int *pRequired = NULL;
const int *pOptional = NULL;
const int *pProprietary = NULL;
uint8_t network_type = PORT_TYPE_NON_BACNET;
unsigned int index = 0;
if ((rpdata == NULL) || (rpdata->application_data == NULL) || if ((rpdata == NULL) || (rpdata->application_data == NULL) ||
(rpdata->application_data_len == 0)) { (rpdata->application_data_len == 0)) {
return 0; return 0;
} }
if (!Property_List_Member(
#if (!BBMD_CLIENT_ENABLED) rpdata->object_instance, rpdata->object_property)) {
(void)network_type;
#endif
if ((index = Network_Port_Instance_To_Index(rpdata->object_instance)) <
BACNET_NETWORK_PORTS_MAX) {
network_type = Object_List[index].Network_Type;
}
Network_Port_Property_List(
rpdata->object_instance, &pRequired, &pOptional, &pProprietary);
if ((!property_list_member(pRequired, rpdata->object_property)) &&
(!property_list_member(pOptional, rpdata->object_property)) &&
(!property_list_member(pProprietary, rpdata->object_property))) {
rpdata->error_class = ERROR_CLASS_PROPERTY; rpdata->error_class = ERROR_CLASS_PROPERTY;
rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY; rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
return BACNET_STATUS_ERROR; return BACNET_STATUS_ERROR;
@@ -3444,12 +3485,10 @@ int Network_Port_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata)
Network_Port_IP_Gateway(rpdata->object_instance, &octet_string); Network_Port_IP_Gateway(rpdata->object_instance, &octet_string);
apdu_len = encode_application_octet_string(&apdu[0], &octet_string); apdu_len = encode_application_octet_string(&apdu[0], &octet_string);
break; break;
#if defined(BACDL_BIP) && (BACNET_NETWORK_PORT_IP_DHCP_ENABLED)
case PROP_IP_DHCP_ENABLE: case PROP_IP_DHCP_ENABLE:
apdu_len = encode_application_boolean( apdu_len = encode_application_boolean(
&apdu[0], Network_Port_IP_DHCP_Enable(rpdata->object_instance)); &apdu[0], Network_Port_IP_DHCP_Enable(rpdata->object_instance));
break; break;
#endif
case PROP_IP_DNS_SERVER: case PROP_IP_DNS_SERVER:
apdu_len = bacnet_array_encode( apdu_len = bacnet_array_encode(
rpdata->object_instance, rpdata->array_index, rpdata->object_instance, rpdata->array_index,
@@ -3464,9 +3503,6 @@ int Network_Port_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata)
apdu_len = BACNET_STATUS_ERROR; apdu_len = BACNET_STATUS_ERROR;
} }
break; break;
#if (defined(BACDL_BIP) || defined(BACDL_BIP6)) && \
(BBMD_ENABLED || BBMD_CLIENT_ENABLED)
#if (BBMD_ENABLED)
case PROP_BBMD_ACCEPT_FD_REGISTRATIONS: case PROP_BBMD_ACCEPT_FD_REGISTRATIONS:
apdu_len = encode_application_boolean( apdu_len = encode_application_boolean(
&apdu[0], &apdu[0],
@@ -3474,107 +3510,24 @@ int Network_Port_Read_Property(BACNET_READ_PROPERTY_DATA *rpdata)
rpdata->object_instance)); rpdata->object_instance));
break; break;
case PROP_BBMD_BROADCAST_DISTRIBUTION_TABLE: case PROP_BBMD_BROADCAST_DISTRIBUTION_TABLE:
switch (network_type) { /* BACnetLIST */
#if defined(BACDL_BIP) apdu_len = BBMD_Broadcast_Distribution_Table_Encode(
case PORT_TYPE_BIP: rpdata->object_instance, apdu, apdu_size);
apdu_len = bvlc_broadcast_distribution_table_encode(
&apdu[0], rpdata->application_data_len,
Network_Port_BBMD_BD_Table(rpdata->object_instance));
break;
#endif
#if defined(BACDL_BIP6)
case PORT_TYPE_BIP6:
apdu_len = bvlc6_broadcast_distribution_table_encode(
&apdu[0], rpdata->application_data_len,
Network_Port_BBMD_IP6_BD_Table(
rpdata->object_instance));
break;
#endif
default:
rpdata->error_class = ERROR_CLASS_PROPERTY;
rpdata->error_code = ERROR_CODE_INVALID_ARRAY_INDEX;
apdu_len = BACNET_STATUS_ERROR;
break;
}
break; break;
case PROP_BBMD_FOREIGN_DEVICE_TABLE: case PROP_BBMD_FOREIGN_DEVICE_TABLE:
switch (network_type) { /* BACnetLIST */
#if defined(BACDL_BIP) apdu_len = BBMD_Foreign_Device_Table_Encode(
case PORT_TYPE_BIP: rpdata->object_instance, apdu, apdu_size);
apdu_len = bvlc_foreign_device_table_encode(
&apdu[0], rpdata->application_data_len,
Network_Port_BBMD_FD_Table(rpdata->object_instance));
break;
#endif
#if defined(BACDL_BIP6)
case PORT_TYPE_BIP6:
apdu_len = bvlc6_foreign_device_table_encode(
&apdu[0], rpdata->application_data_len,
Network_Port_BBMD_IP6_FD_Table(
rpdata->object_instance));
break;
#endif
default:
rpdata->error_class = ERROR_CLASS_PROPERTY;
rpdata->error_code = ERROR_CODE_INVALID_ARRAY_INDEX;
apdu_len = BACNET_STATUS_ERROR;
break;
}
break; break;
#endif /* BBMD_ENABLED */
#if (BBMD_CLIENT_ENABLED)
case PROP_FD_BBMD_ADDRESS: case PROP_FD_BBMD_ADDRESS:
switch (network_type) { apdu_len = Foreign_Device_BBMD_Address_Encode(
#if defined(BACDL_BIP) && (BBMD_ENABLED || BBMD_CLIENT_ENABLED) rpdata->object_instance, apdu, apdu_size);
case PORT_TYPE_BIP:
Network_Port_Remote_BBMD_IP_Address_And_Port(
rpdata->object_instance, &ip_address);
apdu_len = bvlc_foreign_device_bbmd_host_address_encode(
&apdu[0], apdu_size, &ip_address);
break;
#endif
#if defined(BACDL_BIP6)
case PORT_TYPE_BIP6:
Network_Port_Remote_BBMD_IP6_Address_And_Port(
rpdata->object_instance, &ip6_address);
apdu_len = bvlc6_foreign_device_bbmd_host_address_encode(
&apdu[0], apdu_size, &ip6_address);
break;
#endif
default:
rpdata->error_class = ERROR_CLASS_PROPERTY;
rpdata->error_code = ERROR_CODE_INVALID_ARRAY_INDEX;
apdu_len = BACNET_STATUS_ERROR;
break;
}
break; break;
case PROP_FD_SUBSCRIPTION_LIFETIME: case PROP_FD_SUBSCRIPTION_LIFETIME:
switch (network_type) { apdu_len = encode_application_unsigned(
#if defined(BACDL_BIP) apdu,
case PORT_TYPE_BIP: Foreign_Device_Subscription_Lifetime(rpdata->object_instance));
apdu_len = encode_application_unsigned(
&apdu[0],
Network_Port_Remote_BBMD_BIP_Lifetime(
rpdata->object_instance));
break;
#endif
#if defined(BACDL_BIP6)
case PORT_TYPE_BIP6:
apdu_len = encode_application_unsigned(
&apdu[0],
Network_Port_Remote_BBMD_BIP6_Lifetime(
rpdata->object_instance));
break;
#endif
default:
rpdata->error_class = ERROR_CLASS_PROPERTY;
rpdata->error_code = ERROR_CODE_INVALID_ARRAY_INDEX;
apdu_len = BACNET_STATUS_ERROR;
break;
}
break; break;
#endif
#endif
case PROP_BACNET_IPV6_MODE: case PROP_BACNET_IPV6_MODE:
apdu_len = encode_application_enumerated( apdu_len = encode_application_enumerated(
&apdu[0], Network_Port_BIP6_Mode(rpdata->object_instance)); &apdu[0], Network_Port_BIP6_Mode(rpdata->object_instance));
@@ -3840,6 +3793,12 @@ bool Network_Port_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data)
wp_data->error_code = ERROR_CODE_UNKNOWN_OBJECT; wp_data->error_code = ERROR_CODE_UNKNOWN_OBJECT;
return false; return false;
} }
if (!Property_List_Member(
wp_data->object_instance, wp_data->object_property)) {
wp_data->error_class = ERROR_CLASS_PROPERTY;
wp_data->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
return false;
}
/* decode the some of the request */ /* decode the some of the request */
#if defined(BACAPP_COMPLEX_TYPES) #if defined(BACAPP_COMPLEX_TYPES)
len = bacapp_decode_known_property( len = bacapp_decode_known_property(
@@ -3892,39 +3851,21 @@ bool Network_Port_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data)
} }
} }
break; break;
#if (BBMD_CLIENT_ENABLED)
case PROP_FD_BBMD_ADDRESS: case PROP_FD_BBMD_ADDRESS:
#if defined(BACAPP_HOST_N_PORT)
if (write_property_type_valid( if (write_property_type_valid(
wp_data, &value, BACNET_APPLICATION_TAG_HOST_N_PORT)) { wp_data, &value, BACNET_APPLICATION_TAG_HOST_N_PORT)) {
status = Network_Port_FD_BBMD_Address_Write( status = Network_Port_FD_BBMD_Address_Write(
wp_data->object_instance, &value.type.Host_Address, wp_data->object_instance, &value.type.Host_Address,
&wp_data->error_class, &wp_data->error_code); &wp_data->error_class, &wp_data->error_code);
} else {
wp_data->error_class = ERROR_CLASS_PROPERTY;
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
} }
#else
wp_data->error_class = ERROR_CLASS_PROPERTY;
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
#endif
break; break;
#endif
case PROP_FD_SUBSCRIPTION_LIFETIME: case PROP_FD_SUBSCRIPTION_LIFETIME:
#if (BBMD_CLIENT_ENABLED)
if (write_property_type_valid( if (write_property_type_valid(
wp_data, &value, BACNET_APPLICATION_TAG_UNSIGNED_INT)) { wp_data, &value, BACNET_APPLICATION_TAG_UNSIGNED_INT)) {
status = Network_Port_FD_Subscription_Lifetime_Write( status = Network_Port_FD_Subscription_Lifetime_Write(
wp_data->object_instance, value.type.Unsigned_Int, wp_data->object_instance, value.type.Unsigned_Int,
&wp_data->error_class, &wp_data->error_code); &wp_data->error_class, &wp_data->error_code);
} else {
wp_data->error_class = ERROR_CLASS_PROPERTY;
wp_data->error_code = ERROR_CODE_VALUE_OUT_OF_RANGE;
} }
#else
wp_data->error_class = ERROR_CLASS_PROPERTY;
wp_data->error_code = ERROR_CODE_WRITE_ACCESS_DENIED;
#endif
break; break;
default: default:
if (Property_List_Member( if (Property_List_Member(
@@ -3994,69 +3935,33 @@ bool Network_Port_Read_Range(
/* return value */ /* return value */
bool status = false; bool status = false;
switch (pRequest->object_property) { if (Property_List_Member(
case PROP_OBJECT_IDENTIFIER: pRequest->object_instance, pRequest->object_property)) {
case PROP_OBJECT_NAME: if (property_list_bacnet_list_member(
case PROP_OBJECT_TYPE: OBJECT_NETWORK_PORT, pRequest->object_property)) {
case PROP_STATUS_FLAGS: switch (pRequest->object_property) {
case PROP_RELIABILITY: case PROP_BBMD_BROADCAST_DISTRIBUTION_TABLE:
case PROP_OUT_OF_SERVICE: pInfo->RequestTypes = RR_BY_POSITION;
case PROP_NETWORK_TYPE: pInfo->Handler = Network_Port_Read_Range_BDT;
case PROP_PROTOCOL_LEVEL: status = true;
case PROP_NETWORK_NUMBER: break;
case PROP_NETWORK_NUMBER_QUALITY: case PROP_BBMD_FOREIGN_DEVICE_TABLE:
case PROP_CHANGES_PENDING: pInfo->RequestTypes = RR_BY_POSITION;
case PROP_APDU_LENGTH: pInfo->Handler = Network_Port_Read_Range_FDT;
case PROP_LINK_SPEED: status = true;
case PROP_MAC_ADDRESS: break;
#if defined(BACDL_MSTP) default:
case PROP_MAX_MASTER: pRequest->error_class = ERROR_CLASS_PROPERTY;
case PROP_MAX_INFO_FRAMES: pRequest->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
#endif break;
#if defined(BACDL_BIP) }
case PROP_BACNET_IP_MODE: } else {
case PROP_IP_ADDRESS:
case PROP_BACNET_IP_UDP_PORT:
case PROP_IP_SUBNET_MASK:
case PROP_IP_DEFAULT_GATEWAY:
case PROP_IP_DNS_SERVER:
#endif
#if defined(BACDL_BIP) && BBMD_ENABLED
case PROP_BBMD_ACCEPT_FD_REGISTRATIONS:
#endif
(void)pInfo;
pRequest->error_class = ERROR_CLASS_SERVICES; pRequest->error_class = ERROR_CLASS_SERVICES;
pRequest->error_code = ERROR_CODE_PROPERTY_IS_NOT_A_LIST; pRequest->error_code = ERROR_CODE_PROPERTY_IS_NOT_A_LIST;
break; }
case PROP_BBMD_BROADCAST_DISTRIBUTION_TABLE: } else {
#if defined(BACDL_BIP) && BBMD_ENABLED pRequest->error_class = ERROR_CLASS_PROPERTY;
pInfo->RequestTypes = RR_BY_POSITION; pRequest->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
pInfo->Handler = Network_Port_Read_Range_BDT;
status = true;
#else
(void)pInfo;
pRequest->error_class = ERROR_CLASS_PROPERTY;
pRequest->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
(void)pInfo;
#endif
break;
case PROP_BBMD_FOREIGN_DEVICE_TABLE:
#if defined(BACDL_BIP) && BBMD_ENABLED
pInfo->RequestTypes = RR_BY_POSITION;
pInfo->Handler = Network_Port_Read_Range_FDT;
status = true;
#else
(void)pInfo;
pRequest->error_class = ERROR_CLASS_PROPERTY;
pRequest->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
(void)pInfo;
#endif
break;
default:
(void)pInfo;
pRequest->error_class = ERROR_CLASS_PROPERTY;
pRequest->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
break;
} }
return status; return status;
+185 -77
View File
@@ -516,70 +516,126 @@ bool bvlc_broadcast_distribution_table_entry_forward_address(
* broadcast-mask [1] OCTET STRING * broadcast-mask [1] OCTET STRING
* } * }
* *
* @param apdu - the APDU buffer, or NULL for length
* @param bdt_head - one BACnetBDTEntry
* @return length of the APDU buffer
*/
int bvlc_broadcast_distribution_table_entry_encode(
uint8_t *apdu,
const BACNET_IP_BROADCAST_DISTRIBUTION_TABLE_ENTRY *bdt_entry)
{
int len = 0;
int apdu_len = 0;
BACNET_OCTET_STRING octet_string;
if (bdt_entry) {
/* bbmd-address [0] BACnetHostNPort - opening */
len = encode_opening_tag(apdu, 0);
apdu_len += len;
if (apdu) {
apdu += len;
}
/* host [0] BACnetHostAddress - opening */
len = encode_opening_tag(apdu, 0);
apdu_len += len;
if (apdu) {
apdu += len;
}
/* CHOICE - ip-address [1] OCTET STRING */
octetstring_init(
&octet_string, &bdt_entry->dest_address.address[0], IP_ADDRESS_MAX);
len = encode_context_octet_string(apdu, 1, &octet_string);
apdu_len += len;
if (apdu) {
apdu += len;
}
/* host [0] BACnetHostAddress - closing */
len = encode_closing_tag(apdu, 0);
apdu_len += len;
if (apdu) {
apdu += len;
}
/* port [1] Unsigned16 */
len = encode_context_unsigned(apdu, 1, bdt_entry->dest_address.port);
apdu_len += len;
if (apdu) {
apdu += len;
}
/* bbmd-address [0] BACnetHostNPort - closing */
len = encode_closing_tag(apdu, 0);
apdu_len += len;
if (apdu) {
apdu += len;
}
/* broadcast-mask [1] OCTET STRING */
octetstring_init(
&octet_string, &bdt_entry->broadcast_mask.address[0],
IP_ADDRESS_MAX);
len = encode_context_octet_string(apdu, 1, &octet_string);
apdu_len += len;
}
return apdu_len;
}
/**
* @brief Encode the Broadcast-Distribution-Table for Network Port object
*
* BACnetLIST of BACnetBDTEntry
*
* @param apdu - the APDU buffer * @param apdu - the APDU buffer
* @param apdu_size - the APDU buffer size * @param apdu_size - the APDU buffer size
* @param bdt_head - head of the BDT linked list * @param bdt_head - head of the BDT linked list
* @return length of the APDU buffer * @return length of the APDU buffer
*/ */
int bvlc_broadcast_distribution_table_encode( int bvlc_broadcast_distribution_table_list_encode(
uint8_t *apdu, uint8_t *apdu, const BACNET_IP_BROADCAST_DISTRIBUTION_TABLE_ENTRY *bdt_head)
uint16_t apdu_size,
BACNET_IP_BROADCAST_DISTRIBUTION_TABLE_ENTRY *bdt_head)
{ {
int len = 0; int len = 0;
int apdu_len = 0; int apdu_len = 0;
int entry_size = 0; const BACNET_IP_BROADCAST_DISTRIBUTION_TABLE_ENTRY *bdt_entry;
BACNET_OCTET_STRING octet_string;
BACNET_IP_BROADCAST_DISTRIBUTION_TABLE_ENTRY *bdt_entry;
bdt_entry = bdt_head; bdt_entry = bdt_head;
while (bdt_entry) { while (bdt_entry) {
if (bdt_entry->valid) { if (bdt_entry->valid) {
/* bbmd-address [0] BACnetHostNPort - opening */
len = encode_opening_tag(&apdu[apdu_len], 0);
apdu_len += len;
/* host [0] BACnetHostAddress - opening */
len = encode_opening_tag(&apdu[apdu_len], 0);
apdu_len += len;
/* CHOICE - ip-address [1] OCTET STRING */
octetstring_init(
&octet_string, &bdt_entry->dest_address.address[0],
IP_ADDRESS_MAX);
len = len =
encode_context_octet_string(&apdu[apdu_len], 1, &octet_string); bvlc_broadcast_distribution_table_entry_encode(apdu, bdt_entry);
apdu_len += len; apdu_len += len;
/* host [0] BACnetHostAddress - closing */ if (apdu) {
len = encode_closing_tag(&apdu[apdu_len], 0); apdu += len;
apdu_len += len; }
/* port [1] Unsigned16 */
len = encode_context_unsigned(
&apdu[apdu_len], 1, bdt_entry->dest_address.port);
apdu_len += len;
/* bbmd-address [0] BACnetHostNPort - closing */
len = encode_closing_tag(&apdu[apdu_len], 0);
apdu_len += len;
/* broadcast-mask [1] OCTET STRING */
octetstring_init(
&octet_string, &bdt_entry->broadcast_mask.address[0],
IP_ADDRESS_MAX);
len =
encode_context_octet_string(&apdu[apdu_len], 1, &octet_string);
apdu_len += len;
}
if (!entry_size) {
entry_size = apdu_len;
} }
/* next entry */ /* next entry */
bdt_entry = bdt_entry->next; bdt_entry = bdt_entry->next;
if ((apdu_len + entry_size) > apdu_size) {
/* check for available space */
break;
}
} }
return apdu_len; return apdu_len;
} }
/**
* @brief Encode the Broadcast-Distribution-Table for Network Port object
* @param apdu - the APDU buffer
* @param apdu_size - the APDU buffer size
* @param bdt_head - head of the BDT linked list
* @return length of the APDU buffer, or BACNET_STATUS_ERROR on error
*/
int bvlc_broadcast_distribution_table_encode(
uint8_t *apdu,
uint16_t apdu_size,
const BACNET_IP_BROADCAST_DISTRIBUTION_TABLE_ENTRY *bdt_head)
{
int len = 0;
len = bvlc_broadcast_distribution_table_list_encode(NULL, bdt_head);
if (len <= apdu_size) {
len = bvlc_broadcast_distribution_table_list_encode(apdu, bdt_head);
} else {
len = BACNET_STATUS_ERROR;
}
return len;
}
/** /**
* @brief Decode the Broadcast-Distribution-Table for Network Port object * @brief Decode the Broadcast-Distribution-Table for Network Port object
* @param apdu - the APDU buffer * @param apdu - the APDU buffer
@@ -1105,6 +1161,86 @@ int bvlc_decode_register_foreign_device(
return bytes_consumed; return bytes_consumed;
} }
/**
* @brief Encode the Foreign_Device-Table for Network Port object
*
* BACnetLIST of BACnetFDTEntry
*
* BACnetFDTEntry ::= SEQUENCE {
* bacnetip-address [0] OCTET STRING, -- 6-octet B/IP registrant address
* time-to-live [1] Unsigned16, -- time to live in seconds
* remaining-time-to-live [2] Unsigned16 -- remaining time in seconds
* }
*
* @param apdu - the APDU buffer, or NULL for length
* @param fdt_head - head of the BDT linked list
* @return length of the APDU buffer
*/
int bvlc_foreign_device_table_entry_encode(
uint8_t *apdu, const BACNET_IP_FOREIGN_DEVICE_TABLE_ENTRY *fdt_entry)
{
int len = 0;
int apdu_len = 0;
BACNET_OCTET_STRING octet_string = { 0 };
if (fdt_entry && fdt_entry->valid) {
/* bacnetip-address [0] OCTET STRING */
len = bvlc_encode_address(
octetstring_value(&octet_string),
octetstring_capacity(&octet_string), &fdt_entry->dest_address);
octetstring_truncate(&octet_string, len);
len = encode_context_octet_string(apdu, 0, &octet_string);
apdu_len += len;
if (apdu) {
apdu += len;
}
/* time-to-live [1] Unsigned16 */
len = encode_context_unsigned(apdu, 1, fdt_entry->ttl_seconds);
apdu_len += len;
if (apdu) {
apdu += len;
}
/* remaining-time-to-live [2] Unsigned16 */
len =
encode_context_unsigned(apdu, 2, fdt_entry->ttl_seconds_remaining);
apdu_len += len;
}
return apdu_len;
}
/**
* @brief Encode the Foreign_Device-Table for Network Port object
*
* BACnetLIST of BACnetFDTEntry
*
* @param apdu - the APDU buffer, or NULL for length
* @param fdt_head - head of the BDT linked list
* @return length of the APDU buffer
*/
int bvlc_foreign_device_table_list_encode(
uint8_t *apdu, const BACNET_IP_FOREIGN_DEVICE_TABLE_ENTRY *fdt_head)
{
int len = 0;
int apdu_len = 0;
const BACNET_IP_FOREIGN_DEVICE_TABLE_ENTRY *fdt_entry;
fdt_entry = fdt_head;
while (fdt_entry) {
if (fdt_entry->valid) {
len = bvlc_foreign_device_table_entry_encode(apdu, fdt_entry);
apdu_len += len;
if (apdu) {
apdu += len;
}
}
/* next entry */
fdt_entry = fdt_entry->next;
}
return apdu_len;
}
/** /**
* @brief Encode the Foreign_Device-Table for Network Port object * @brief Encode the Foreign_Device-Table for Network Port object
* *
@@ -1124,46 +1260,18 @@ int bvlc_decode_register_foreign_device(
int bvlc_foreign_device_table_encode( int bvlc_foreign_device_table_encode(
uint8_t *apdu, uint8_t *apdu,
uint16_t apdu_size, uint16_t apdu_size,
BACNET_IP_FOREIGN_DEVICE_TABLE_ENTRY *fdt_head) const BACNET_IP_FOREIGN_DEVICE_TABLE_ENTRY *fdt_head)
{ {
int len = 0; int len = 0;
int apdu_len = 0;
int entry_size = 0;
BACNET_OCTET_STRING octet_string = { 0 };
BACNET_IP_FOREIGN_DEVICE_TABLE_ENTRY *fdt_entry;
fdt_entry = fdt_head; len = bvlc_foreign_device_table_list_encode(NULL, fdt_head);
while (fdt_entry) { if (len <= apdu_size) {
if (fdt_entry->valid) { len = bvlc_foreign_device_table_list_encode(apdu, fdt_head);
/* bacnetip-address [0] OCTET STRING */ } else {
len = bvlc_encode_address( len = BACNET_STATUS_ERROR;
octetstring_value(&octet_string),
octetstring_capacity(&octet_string), &fdt_entry->dest_address);
octetstring_truncate(&octet_string, len);
len =
encode_context_octet_string(&apdu[apdu_len], 0, &octet_string);
apdu_len += len;
/* time-to-live [1] Unsigned16 */
len = encode_context_unsigned(
&apdu[apdu_len], 1, fdt_entry->ttl_seconds);
apdu_len += len;
/* remaining-time-to-live [2] Unsigned16 */
len = encode_context_unsigned(
&apdu[apdu_len], 2, fdt_entry->ttl_seconds_remaining);
apdu_len += len;
}
if (!entry_size) {
entry_size = apdu_len;
}
/* next entry */
fdt_entry = fdt_entry->next;
if ((apdu_len + entry_size) > apdu_size) {
/* check for available space */
break;
}
} }
return apdu_len; return len;
} }
/** /**
+17 -2
View File
@@ -321,11 +321,20 @@ int bvlc_broadcast_distribution_table_decode(
BACNET_ERROR_CODE *error_code, BACNET_ERROR_CODE *error_code,
BACNET_IP_BROADCAST_DISTRIBUTION_TABLE_ENTRY *bdt_head); BACNET_IP_BROADCAST_DISTRIBUTION_TABLE_ENTRY *bdt_head);
BACNET_STACK_EXPORT
int bvlc_broadcast_distribution_table_entry_encode(
uint8_t *apdu,
const BACNET_IP_BROADCAST_DISTRIBUTION_TABLE_ENTRY *bdt_entry);
int bvlc_broadcast_distribution_table_list_encode(
uint8_t *apdu,
const BACNET_IP_BROADCAST_DISTRIBUTION_TABLE_ENTRY *bdt_head);
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
int bvlc_broadcast_distribution_table_encode( int bvlc_broadcast_distribution_table_encode(
uint8_t *apdu, uint8_t *apdu,
uint16_t apdu_size, uint16_t apdu_size,
BACNET_IP_BROADCAST_DISTRIBUTION_TABLE_ENTRY *bdt_head); const BACNET_IP_BROADCAST_DISTRIBUTION_TABLE_ENTRY *bdt_head);
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
int bvlc_encode_write_broadcast_distribution_table( int bvlc_encode_write_broadcast_distribution_table(
@@ -416,10 +425,16 @@ int bvlc_decode_foreign_device_table_entry(
BACNET_IP_FOREIGN_DEVICE_TABLE_ENTRY *fdt_entry); BACNET_IP_FOREIGN_DEVICE_TABLE_ENTRY *fdt_entry);
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
int bvlc_foreign_device_table_entry_encode(
uint8_t *apdu, const BACNET_IP_FOREIGN_DEVICE_TABLE_ENTRY *fdt_head);
BACNET_STACK_EXPORT
int bvlc_foreign_device_table_list_encode(
uint8_t *apdu, const BACNET_IP_FOREIGN_DEVICE_TABLE_ENTRY *fdt_head);
BACNET_STACK_EXPORT
int bvlc_foreign_device_table_encode( int bvlc_foreign_device_table_encode(
uint8_t *apdu, uint8_t *apdu,
uint16_t apdu_size, uint16_t apdu_size,
BACNET_IP_FOREIGN_DEVICE_TABLE_ENTRY *fdt_head); const BACNET_IP_FOREIGN_DEVICE_TABLE_ENTRY *fdt_head);
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
int bvlc_encode_read_foreign_device_table(uint8_t *pdu, uint16_t pdu_size); int bvlc_encode_read_foreign_device_table(uint8_t *pdu, uint16_t pdu_size);
+24 -3
View File
@@ -520,6 +520,30 @@ bool bvlc6_address_different(
return status; return status;
} }
/**
* @brief Set the IPv6 address and port number
* @param addr - B/IPv6 address that be set
* @param address - B/IPv6 address bytes
* @param port - B/IPv6 address port
* @return true if the address is set
*/
bool bvlc6_address_n_port_set(
BACNET_IP6_ADDRESS *addr, uint8_t *address, uint16_t port)
{
bool status = false;
unsigned i;
if (addr) {
for (i = 0; i < IP6_ADDRESS_MAX; i += 2) {
addr->address[i] = address[i];
}
addr->port = port;
status = true;
}
return status;
}
/** Set a BVLC Address from 16-bit group chunks /** Set a BVLC Address from 16-bit group chunks
* *
* Data link layer addressing between B/IPv6 nodes consists of a 128-bit * Data link layer addressing between B/IPv6 nodes consists of a 128-bit
@@ -1402,7 +1426,6 @@ int bvlc6_decode_delete_foreign_device(
if (pdu && (pdu_len >= length)) { if (pdu && (pdu_len >= length)) {
if (vmac_src) { if (vmac_src) {
decode_unsigned24(&pdu[offset], vmac_src); decode_unsigned24(&pdu[offset], vmac_src);
bytes_consumed = 3;
} }
offset += 3; offset += 3;
if (bip6_address) { if (bip6_address) {
@@ -1707,8 +1730,6 @@ int bvlc6_broadcast_distribution_table_list_encode(
if (apdu) { if (apdu) {
apdu += len; apdu += len;
} }
} else {
len = 0;
} }
/* next entry */ /* next entry */
bdt_entry = bdt_entry->next; bdt_entry = bdt_entry->next;
+3
View File
@@ -181,6 +181,9 @@ int bvlc6_address_to_ascii(
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
bool bvlc6_address_from_ascii(BACNET_IP6_ADDRESS *addr, const char *addrstr); bool bvlc6_address_from_ascii(BACNET_IP6_ADDRESS *addr, const char *addrstr);
BACNET_STACK_EXPORT
bool bvlc6_address_n_port_set(
BACNET_IP6_ADDRESS *addr, uint8_t *addr16, uint16_t port);
BACNET_STACK_EXPORT BACNET_STACK_EXPORT
bool bvlc6_address_set( bool bvlc6_address_set(
BACNET_IP6_ADDRESS *addr, BACNET_IP6_ADDRESS *addr,
+59
View File
@@ -81,6 +81,65 @@ env:
@echo "CTEST_OPTIONS=$(CTEST_OPTIONS)" @echo "CTEST_OPTIONS=$(CTEST_OPTIONS)"
@echo "BUILD_DIR=$(BUILD_DIR)" @echo "BUILD_DIR=$(BUILD_DIR)"
BSC_DATALINK_DIR := $(realpath ./bacnet/datalink/bsc-datalink)
.PHONY: bsc-datalink
bsc-datalink:
[ -d $(BUILD_DIR) ] || mkdir -p $(BUILD_DIR)
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake $(BSC_DATALINK_DIR) && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . $(JOBS) --clean-first && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && ./test_bsc-datalink && cd ..
BSC_NODE_DIR := $(realpath ./bacnet/datalink/bsc-node)
.PHONY: bsc-node
bsc-node:
[ -d $(BUILD_DIR) ] || mkdir -p $(BUILD_DIR)
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake $(BSC_NODE_DIR) && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . $(JOBS) --clean-first && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && ./test_bsc-node && cd ..
BSC_HUB_DIR := $(realpath ./bacnet/datalink/hub-sc)
.PHONY: bsc-hub
bsc-hub:
[ -d $(BUILD_DIR) ] || mkdir -p $(BUILD_DIR)
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake $(BSC_HUB_DIR) && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . $(JOBS) --clean-first && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && ./test_hub-sc && cd ..
BSC_BVLC_DIR := $(realpath ./bacnet/datalink/bvlc-sc)
.PHONY: bsc-bvlc
bsc-bvlc:
[ -d $(BUILD_DIR) ] || mkdir -p $(BUILD_DIR)
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake $(BSC_BVLC_DIR) && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . $(JOBS) --clean-first && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && ./test_bvlc-sc && cd ..
BSC_SOCKET_DIR := $(realpath ./bacnet/datalink/bsc-socket)
.PHONY: bsc-socket
bsc-socket:
[ -d $(BUILD_DIR) ] || mkdir -p $(BUILD_DIR)
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake $(BSC_SOCKET_DIR) && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . $(JOBS) --clean-first && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && ./test_bsc-socket && cd ..
BSC_WEBSOCKET_DIR := $(realpath ./bacnet/datalink/websockets)
.PHONY: websockets
websockets:
[ -d $(BUILD_DIR) ] || mkdir -p $(BUILD_DIR)
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake $(BSC_WEBSOCKET_DIR) && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . $(JOBS) --clean-first && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && ./test_websockets && cd ..
.PHONY: libwebsockets
libwebsockets:
sudo apt-get update -qq
sudo apt-get install -qq libconfig-dev
sudo apt-get install -qq libcap-dev
sudo apt-get install -qq libssl-dev
sudo apt-get install -qq libuv1-dev
git clone --branch v4.3-stable https://github.com/warmcat/libwebsockets.git
bash -c 'cd libwebsockets;mkdir build;cd build;cmake .. -DLWS_WITH_LIBUV=ON -DLWS_WITH_MINIMAL_EXAMPLES=0 -DLWS_MAX_SMP=32;make'
sudo bash -c 'cd libwebsockets;cd build;make install'
.PHONY: clean .PHONY: clean
clean: clean:
-rm -rf $(BUILD_DIR) -rm -rf $(BUILD_DIR)
@@ -90,6 +90,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/basic/sys/linear.c ${SRC_DIR}/bacnet/basic/sys/linear.c
${SRC_DIR}/bacnet/basic/tsm/tsm.c ${SRC_DIR}/bacnet/basic/tsm/tsm.c
${SRC_DIR}/bacnet/datalink/bvlc.c ${SRC_DIR}/bacnet/datalink/bvlc.c
${SRC_DIR}/bacnet/datalink/bvlc6.c
${SRC_DIR}/bacnet/cov.c ${SRC_DIR}/bacnet/cov.c
${SRC_DIR}/bacnet/datetime.c ${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c ${SRC_DIR}/bacnet/dcc.c
@@ -28,7 +28,7 @@ set(ZTST_DIR "${TST_DIR}/ztest/src")
add_compile_definitions( add_compile_definitions(
BIG_ENDIAN=0 BIG_ENDIAN=0
CONFIG_ZTEST=1 CONFIG_ZTEST=1
BACDL_BSC=1 BACDL_ALL=1
BACNET_SECURE_CONNECT_ROUTING_TABLE=1 BACNET_SECURE_CONNECT_ROUTING_TABLE=1
BSC_CONF_HUB_FUNCTIONS_NUM=1 BSC_CONF_HUB_FUNCTIONS_NUM=1
BSC_CONF_HUB_CONNECTORS_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/days.c
${SRC_DIR}/bacnet/basic/sys/keylist.c ${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/datalink/bvlc.c ${SRC_DIR}/bacnet/datalink/bvlc.c
${SRC_DIR}/bacnet/datalink/bvlc6.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c ${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c
# Test and test library files # Test and test library files
${TST_DIR}/bacnet/basic/object/test/device_mock.c ${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/days.c
${SRC_DIR}/bacnet/basic/sys/keylist.c ${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/datalink/bvlc.c ${SRC_DIR}/bacnet/datalink/bvlc.c
${SRC_DIR}/bacnet/datalink/bvlc6.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c ${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c
# Test and test library files # Test and test library files
${TST_DIR}/bacnet/basic/object/test/device_mock.c ${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; unsigned port = 0;
bool status = false; bool status = false;
unsigned count = 0; 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; uint32_t object_instance = 0;
uint8_t port_type[] = { PORT_TYPE_ETHERNET, PORT_TYPE_ARCNET, uint8_t port_type[] = { PORT_TYPE_ETHERNET, PORT_TYPE_ARCNET,
PORT_TYPE_MSTP, PORT_TYPE_PTP, PORT_TYPE_MSTP, PORT_TYPE_PTP,
@@ -61,6 +67,187 @@ static void test_network_port(void)
zassert_true(status, NULL); zassert_true(status, NULL);
count = Network_Port_Count(); count = Network_Port_Count();
zassert_true(count > 0, NULL); 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( bacnet_object_properties_read_write_test(
OBJECT_NETWORK_PORT, object_instance, Network_Port_Property_Lists, OBJECT_NETWORK_PORT, object_instance, Network_Port_Property_Lists,
Network_Port_Read_Property, Network_Port_Write_Property, Network_Port_Read_Property, Network_Port_Write_Property,
@@ -69,6 +256,8 @@ static void test_network_port(void)
object_instance, Network_Port_Name_Set, object_instance, Network_Port_Name_Set,
Network_Port_Object_Name_ASCII); Network_Port_Object_Name_ASCII);
port++; port++;
Network_Port_Changes_Activate();
Network_Port_Changes_Discard();
Network_Port_Cleanup(); Network_Port_Cleanup();
} }
+59 -158
View File
@@ -66,59 +66,7 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
${PORTS_DIR}/linux/bsc-event.c ${PORTS_DIR}/linux/bsc-event.c
${PORTS_DIR}/linux/mstimer-init.c ${PORTS_DIR}/linux/mstimer-init.c
${PORTS_DIR}/linux/datetime-init.c ${PORTS_DIR}/linux/datetime-init.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c )
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-connector.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-function.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node-switch.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-datalink.c
${SRC_DIR}/bacnet/basic/service/h_apdu.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
./src/main.c
${TST_DIR}/bacnet/basic/object/test/device_mock.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
target_link_libraries(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME}
${LIBWEBSOCKETS_LIBRARIES} ${LIBWEBSOCKETS_LIBRARIES}
) )
@@ -142,59 +90,7 @@ elseif(WIN32)
${PORTS_DIR}/win32/bsc-event.c ${PORTS_DIR}/win32/bsc-event.c
${PORTS_DIR}/win32/mstimer-init.c ${PORTS_DIR}/win32/mstimer-init.c
${PORTS_DIR}/win32/datetime-init.c ${PORTS_DIR}/win32/datetime-init.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c )
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-connector.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-function.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node-switch.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-datalink.c
${SRC_DIR}/bacnet/basic/service/h_apdu.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
./src/main.c
${TST_DIR}/bacnet/basic/object/test/device_mock.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
# basically if you use vcpkg you should just add ${LIBWEBSOCKETS_LIBRARIES} # basically if you use vcpkg you should just add ${LIBWEBSOCKETS_LIBRARIES}
# into target_link_libraries() but for some reason it does not work as expected # into target_link_libraries() but for some reason it does not work as expected
@@ -241,58 +137,6 @@ elseif(APPLE)
${PORTS_DIR}/bsd/bsc-event.c ${PORTS_DIR}/bsd/bsc-event.c
${PORTS_DIR}/bsd/mstimer-init.c ${PORTS_DIR}/bsd/mstimer-init.c
${PORTS_DIR}/bsd/datetime-init.c ${PORTS_DIR}/bsd/datetime-init.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-connector.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-function.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node-switch.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-datalink.c
${SRC_DIR}/bacnet/basic/service/h_apdu.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
./src/main.c
${TST_DIR}/bacnet/basic/object/test/device_mock.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
) )
target_link_libraries(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME}
${LIBWEBSOCKETS_LIBRARIES} ${LIBWEBSOCKETS_LIBRARIES}
@@ -301,3 +145,60 @@ elseif(APPLE)
-Wno-language-extension-token -Wno-language-extension-token
) )
endif() endif()
target_sources(${PROJECT_NAME} PRIVATE
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-connector.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-function.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node-switch.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-datalink.c
${SRC_DIR}/bacnet/datalink/bvlc.c
${SRC_DIR}/bacnet/datalink/bvlc6.c
${SRC_DIR}/bacnet/basic/service/h_apdu.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
./src/main.c
${TST_DIR}/bacnet/basic/object/test/device_mock.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
+58 -153
View File
@@ -60,57 +60,7 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
${PORTS_DIR}/linux/bsc-event.c ${PORTS_DIR}/linux/bsc-event.c
${PORTS_DIR}/linux/mstimer-init.c ${PORTS_DIR}/linux/mstimer-init.c
${PORTS_DIR}/linux/datetime-init.c ${PORTS_DIR}/linux/datetime-init.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c )
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-connector.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-function.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node-switch.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
./src/main.c
${TST_DIR}/bacnet/basic/object/test/device_mock.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
target_link_libraries(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME}
${LIBWEBSOCKETS_LIBRARIES} ${LIBWEBSOCKETS_LIBRARIES}
) )
@@ -133,57 +83,7 @@ elseif(WIN32)
${PORTS_DIR}/win32/bsc-event.c ${PORTS_DIR}/win32/bsc-event.c
${PORTS_DIR}/win32/mstimer-init.c ${PORTS_DIR}/win32/mstimer-init.c
${PORTS_DIR}/win32/datetime-init.c ${PORTS_DIR}/win32/datetime-init.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c )
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-connector.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-function.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node-switch.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
./src/main.c
${TST_DIR}/bacnet/basic/object/test/device_mock.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
# basically if you use vcpkg you should just add ${LIBWEBSOCKETS_LIBRARIES} # basically if you use vcpkg you should just add ${LIBWEBSOCKETS_LIBRARIES}
# into target_link_libraries() but for some reason it does not work as expected # into target_link_libraries() but for some reason it does not work as expected
@@ -230,57 +130,7 @@ elseif(APPLE)
${PORTS_DIR}/bsd/bsc-event.c ${PORTS_DIR}/bsd/bsc-event.c
${PORTS_DIR}/bsd/mstimer-init.c ${PORTS_DIR}/bsd/mstimer-init.c
${PORTS_DIR}/bsd/datetime-init.c ${PORTS_DIR}/bsd/datetime-init.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c )
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-connector.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-function.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node-switch.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
./src/main.c
${TST_DIR}/bacnet/basic/object/test/device_mock.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
target_link_libraries(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME}
${LIBWEBSOCKETS_LIBRARIES} ${LIBWEBSOCKETS_LIBRARIES}
) )
@@ -288,3 +138,58 @@ elseif(APPLE)
-Wno-language-extension-token -Wno-language-extension-token
) )
endif() endif()
target_sources(${PROJECT_NAME} PRIVATE
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-connector.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-function.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node-switch.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node.c
${SRC_DIR}/bacnet/datalink/bvlc.c
${SRC_DIR}/bacnet/datalink/bvlc6.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
./src/main.c
${TST_DIR}/bacnet/basic/object/test/device_mock.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
+60 -141
View File
@@ -57,53 +57,7 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
${PORTS_DIR}/linux/bsc-event.c ${PORTS_DIR}/linux/bsc-event.c
${PORTS_DIR}/linux/mstimer-init.c ${PORTS_DIR}/linux/mstimer-init.c
${PORTS_DIR}/linux/datetime-init.c ${PORTS_DIR}/linux/datetime-init.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c )
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
${TST_DIR}/bacnet/basic/object/test/device_mock.c
./src/main.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
target_link_libraries(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME}
${LIBWEBSOCKETS_LIBRARIES} ${LIBWEBSOCKETS_LIBRARIES}
) )
@@ -126,53 +80,7 @@ elseif(WIN32)
${PORTS_DIR}/win32/bsc-event.c ${PORTS_DIR}/win32/bsc-event.c
${PORTS_DIR}/win32/mstimer-init.c ${PORTS_DIR}/win32/mstimer-init.c
${PORTS_DIR}/win32/datetime-init.c ${PORTS_DIR}/win32/datetime-init.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c )
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
${TST_DIR}/bacnet/basic/object/test/device_mock.c
./src/main.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
# basically if you use vcpkg you should just add ${LIBWEBSOCKETS_LIBRARIES} # basically if you use vcpkg you should just add ${LIBWEBSOCKETS_LIBRARIES}
# into target_link_libraries() but for some reason it does not work as expected # into target_link_libraries() but for some reason it does not work as expected
@@ -218,53 +126,7 @@ elseif(APPLE)
${PORTS_DIR}/bsd/bsc-event.c ${PORTS_DIR}/bsd/bsc-event.c
${PORTS_DIR}/bsd/mstimer-init.c ${PORTS_DIR}/bsd/mstimer-init.c
${PORTS_DIR}/bsd/datetime-init.c ${PORTS_DIR}/bsd/datetime-init.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c )
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
${TST_DIR}/bacnet/basic/object/test/device_mock.c
./src/main.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
target_link_libraries(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME}
${LIBWEBSOCKETS_LIBRARIES} ${LIBWEBSOCKETS_LIBRARIES}
) )
@@ -272,3 +134,60 @@ elseif(APPLE)
-Wno-language-extension-token -Wno-language-extension-token
) )
endif() endif()
target_sources(${PROJECT_NAME} PRIVATE
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-connector.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-function.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node-switch.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-datalink.c
${SRC_DIR}/bacnet/datalink/bvlc.c
${SRC_DIR}/bacnet/datalink/bvlc6.c
${SRC_DIR}/bacnet/basic/service/h_apdu.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
./src/main.c
${TST_DIR}/bacnet/basic/object/test/device_mock.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
+60 -150
View File
@@ -59,56 +59,7 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
${PORTS_DIR}/linux/bsc-event.c ${PORTS_DIR}/linux/bsc-event.c
${PORTS_DIR}/linux/mstimer-init.c ${PORTS_DIR}/linux/mstimer-init.c
${PORTS_DIR}/linux/datetime-init.c ${PORTS_DIR}/linux/datetime-init.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c )
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node-switch.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-connector.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-function.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/wp.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
# Test and test library files
./src/main.c
${TST_DIR}/bacnet/basic/object/test/device_mock.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
target_link_libraries(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME}
${LIBWEBSOCKETS_LIBRARIES} ${LIBWEBSOCKETS_LIBRARIES}
) )
@@ -132,56 +83,7 @@ elseif(WIN32)
${PORTS_DIR}/win32/bsc-event.c ${PORTS_DIR}/win32/bsc-event.c
${PORTS_DIR}/win32/mstimer-init.c ${PORTS_DIR}/win32/mstimer-init.c
${PORTS_DIR}/win32/datetime-init.c ${PORTS_DIR}/win32/datetime-init.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c )
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node-switch.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-connector.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-function.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/wp.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
# Test and test library files
./src/main.c
${TST_DIR}/bacnet/basic/object/test/device_mock.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
# basically if you use vcpkg you should just add ${LIBWEBSOCKETS_LIBRARIES} # basically if you use vcpkg you should just add ${LIBWEBSOCKETS_LIBRARIES}
# into target_link_libraries() but for some reason it does not work as expected # into target_link_libraries() but for some reason it does not work as expected
@@ -229,56 +131,7 @@ elseif(APPLE)
${PORTS_DIR}/bsd/bsc-event.c ${PORTS_DIR}/bsd/bsc-event.c
${PORTS_DIR}/bsd/mstimer-init.c ${PORTS_DIR}/bsd/mstimer-init.c
${PORTS_DIR}/bsd/datetime-init.c ${PORTS_DIR}/bsd/datetime-init.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c )
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node-switch.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-connector.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-function.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/wp.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
# Test and test library files
./src/main.c
${TST_DIR}/bacnet/basic/object/test/device_mock.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
target_link_libraries(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME}
${LIBWEBSOCKETS_LIBRARIES} ${LIBWEBSOCKETS_LIBRARIES}
) )
@@ -286,3 +139,60 @@ elseif(APPLE)
-Wno-language-extension-token -Wno-language-extension-token
) )
endif() endif()
target_sources(${PROJECT_NAME} PRIVATE
${SRC_DIR}/bacnet/datalink/bsc/bsc-util.c
${SRC_DIR}/bacnet/datalink/bsc/bvlc-sc.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-socket.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-connector.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-hub-function.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node-switch.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-node.c
${SRC_DIR}/bacnet/datalink/bsc/bsc-datalink.c
${SRC_DIR}/bacnet/datalink/bvlc.c
${SRC_DIR}/bacnet/datalink/bvlc6.c
${SRC_DIR}/bacnet/basic/service/h_apdu.c
${SRC_DIR}/bacnet/basic/object/bacfile.c
${SRC_DIR}/bacnet/basic/object/netport.c
${SRC_DIR}/bacnet/basic/object/sc_netport.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/basic/sys/debug.c
${SRC_DIR}/bacnet/basic/sys/fifo.c
${SRC_DIR}/bacnet/basic/sys/keylist.c
${SRC_DIR}/bacnet/basic/sys/mstimer.c
${SRC_DIR}/bacnet/access_rule.c
${SRC_DIR}/bacnet/arf.c
${SRC_DIR}/bacnet/bacaction.c
${SRC_DIR}/bacnet/bacapp.c
${SRC_DIR}/bacnet/bacaddr.c
${SRC_DIR}/bacnet/bacdcode.c
${SRC_DIR}/bacnet/bacdest.c
${SRC_DIR}/bacnet/bacdevobjpropref.c
${SRC_DIR}/bacnet/bacerror.c
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/bactimevalue.c
${SRC_DIR}/bacnet/calendar_entry.c
${SRC_DIR}/bacnet/dailyschedule.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/npdu.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/special_event.c
${SRC_DIR}/bacnet/channel_value.c
${SRC_DIR}/bacnet/secure_connect.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/weeklyschedule.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
./src/main.c
${TST_DIR}/bacnet/basic/object/test/device_mock.c
${ZTST_DIR}/ztest_mock.c
${ZTST_DIR}/ztest.c
)
File diff suppressed because it is too large Load Diff
@@ -81,6 +81,7 @@ elseif(WIN32)
${PORTS_DIR}/win32/websocket-srv.c ${PORTS_DIR}/win32/websocket-srv.c
${PORTS_DIR}/win32/websocket-global.c ${PORTS_DIR}/win32/websocket-global.c
${PORTS_DIR}/win32/bsc-event.c ${PORTS_DIR}/win32/bsc-event.c
${SRC_DIR}/bacnet/basic/sys/debug.c
# Test and test library files # Test and test library files
./src/main.c ./src/main.c
${ZTST_DIR}/ztest_mock.c ${ZTST_DIR}/ztest_mock.c