diff --git a/.appveyor.yml b/.appveyor.yml index b15c0f9e..aa847b77 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -1,10 +1,8 @@ -configuration: Release - image: - Visual Studio 2019 - Ubuntu - macOS build_script: - - cmake . - - cmake --build . --config %CONFIGURATION% \ No newline at end of file + - cmake . -DBUILD_SHARED_LIBS=ON + - cmake --build . --config Release diff --git a/.travis.yml b/.travis.yml index 402af159..69ad4696 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,7 +22,7 @@ jobs: - stage: demos-build-cmake os: linux compiler: gcc - script: mkdir build && cd build && cmake .. && cmake --build . --clean-first + script: mkdir build && cd build && cmake .. -DBUILD_SHARED_LIBS=ON && cmake --build . --clean-first - stage: gateway-build os: linux compiler: gcc diff --git a/CMakeLists.txt b/CMakeLists.txt index 58fc3ce5..d96de812 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,10 +76,12 @@ message(STATUS "BACNET: BACDL_ETHERNET \"${BACDL_ETHERNET}\"") message(STATUS "BACNET: BACDL_NONE \"${BACDL_NONE}\"") # -# sources +# library # -set(BACNETSTACK_SRCS +find_package(Threads) + +add_library(${PROJECT_NAME} src/bacnet/abort.c src/bacnet/abort.h src/bacnet/access_rule.c @@ -417,75 +419,6 @@ set(BACNETSTACK_SRCS src/bacnet/wp.h src/bacnet/wpm.c src/bacnet/wpm.h) - -# -# add ports -# - -set(BACNET_PORT_DIRECTORY_PATH "") - -if(${CMAKE_SYSTEM_NAME} - STREQUAL - "Linux") - message(STATUS "BACNET: building for linux") - set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/linux) - - list( - APPEND BACNETSTACK_SRCS - ports/linux/bacport.h - ports/linux/datetime-init.c - $<$:ports/linux/bip-init.c> - $<$:ports/linux/bip6.c> - $<$:ports/linux/arcnet.c> - $<$:ports/linux/rs485.c> - $<$:ports/linux/rs485.h> - $<$:ports/linux/dlmstp.c> - $<$:ports/linux/dlmstp_linux.c> - $<$:ports/linux/dlmstp_linux.h> - ports/linux/mstimer-init.c - # ports/linux/rx_fsm.c - $<$:ports/linux/ethernet.c>) - -endif() - -if(WIN32) - message(STATUS "BACNET: building for win32") - set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/win32) - - list( - APPEND BACNETSTACK_SRCS - ports/win32/bacport.h - $<$:ports/win32/bip6.c> - $<$:ports/win32/bip-init.c> - # ports/win32/rx_fsm.c - ports/win32/datetime-init.c - $<$:ports/win32/dlmstp.c> - # ports/win32/dlmstp-mm.c - $<$:ports/win32/ethernet.c> - ports/win32/mstimer-init.c - $<$:ports/win32/rs485.c> - $<$:ports/win32/rs485.h>) -endif() - -if(APPLE) - message(STATUS "BACNET: building for APPLE") - set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/bsd) - list( - APPEND BACNETSTACK_SRCS - ports/bsd/bacport.h - ports/bsd/bip-init.c - ports/bsd/datetime-init.c - ports/bsd/mstimer-init.c - ports/bsd/stdbool.h) -endif() - -# -# library -# - -find_package(Threads) - -add_library(${PROJECT_NAME}) target_sources( ${PROJECT_NAME} PRIVATE @@ -493,12 +426,17 @@ target_sources( target_include_directories( ${PROJECT_NAME} PUBLIC $ - $ $) +if(BUILD_SHARED_LIBS) + set_target_properties( + ${PROJECT_NAME} + PROPERTIES + C_VISIBILITY_PRESET hidden) +endif() target_compile_definitions( ${PROJECT_NAME} PUBLIC - -DBACNET_PROTOCOL_REVISION=${BACNET_PROTOCOL_REVISION} + BACNET_PROTOCOL_REVISION=${BACNET_PROTOCOL_REVISION} $<$:BACDL_BIP> $<$:BACDL_BIP6> $<$:BACDL_ARCNET> @@ -506,15 +444,80 @@ target_compile_definitions( $<$:BACDL_ETHERNET> $<$:BACDL_NONE> $<$:BACNET_PROPERTY_LISTS> + $<$:BAC_ROUTING> + $<$>:BACNET_STACK_STATIC_DEFINE> PRIVATE - -DPRINT_ENABLED=1) -target_link_libraries(${PROJECT_NAME} PUBLIC $<$:wsock32> Threads::Threads) + PRINT_ENABLED=1) +target_link_libraries(${PROJECT_NAME} PUBLIC Threads::Threads) add_library( ${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) +# +# add ports +# + +set(BACNET_PORT_DIRECTORY_PATH "") + +if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + message(STATUS "BACNET: building for linux") + set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/linux) + + target_sources(${PROJECT_NAME} PRIVATE + ports/linux/bacport.h + ports/linux/datetime-init.c + $<$:ports/linux/bip-init.c> + $<$:ports/linux/bip6.c> + $<$:ports/linux/arcnet.c> + $<$:ports/linux/rs485.c> + $<$:ports/linux/rs485.h> + $<$:ports/linux/dlmstp.c> + $<$:ports/linux/dlmstp_linux.c> + $<$:ports/linux/dlmstp_linux.h> + # ports/linux/rx_fsm.c + $<$:ports/linux/ethernet.c> + ports/linux/mstimer-init.c) + +elseif(WIN32) + message(STATUS "BACNET: building for win32") + set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/win32) + + target_link_libraries(${PROJECT_NAME} PUBLIC wsock32) + + target_link_libraries(${PROJECT_NAME} PRIVATE + winmm + $<$:ws2_32> + $<$:iphlpapi>) + + target_sources(${PROJECT_NAME} PRIVATE + ports/win32/bacport.h + $<$:ports/win32/bip6.c> + $<$:ports/win32/bip-init.c> + # ports/win32/rx_fsm.c + ports/win32/datetime-init.c + $<$:ports/win32/dlmstp.c> + # ports/win32/dlmstp-mm.c + $<$:ports/win32/ethernet.c> + ports/win32/mstimer-init.c + $<$:ports/win32/rs485.c> + $<$:ports/win32/rs485.h>) +elseif(APPLE) + message(STATUS "BACNET: building for APPLE") + set(BACNET_PORT_DIRECTORY_PATH ${CMAKE_CURRENT_LIST_DIR}/ports/bsd) + + target_sources(${PROJECT_NAME} PRIVATE + ports/bsd/bacport.h + ports/bsd/bip-init.c + ports/bsd/datetime-init.c + ports/bsd/mstimer-init.c + ports/bsd/stdbool.h) +endif() + +target_include_directories(${PROJECT_NAME} PUBLIC + $) + # # examples # diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in index 9c15f36a..fe408aa1 100644 --- a/cmake/Config.cmake.in +++ b/cmake/Config.cmake.in @@ -1,4 +1,8 @@ @PACKAGE_INIT@ +if("@CMAKE_SYSTEM_NAME@" STREQUAL "Linux" OR APPLE OR WIN32) + find_package(OpenSSL REQUIRED) +endif() + include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") check_required_components("@PROJECT_NAME@") diff --git a/ports/linux/bacport.h b/ports/linux/bacport.h index 2746d42d..7157bbb1 100644 --- a/ports/linux/bacport.h +++ b/ports/linux/bacport.h @@ -99,10 +99,12 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" /** @file linux/net.h Includes Linux network headers. */ /* Local helper functions for this port */ +BACNET_STACK_EXPORT extern int bip_get_local_netmask( struct in_addr *netmask); diff --git a/ports/linux/dlmstp_linux.h b/ports/linux/dlmstp_linux.h index 29b9d958..e20b0e9c 100644 --- a/ports/linux/dlmstp_linux.h +++ b/ports/linux/dlmstp_linux.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/npdu.h" #include @@ -127,15 +128,19 @@ typedef struct shared_mstp_data { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT bool dlmstp_init( void *poShared, char *ifname); + BACNET_STACK_EXPORT void dlmstp_reset( void *poShared); + BACNET_STACK_EXPORT void dlmstp_cleanup( void *poShared); /* returns number of bytes sent on success, negative on failure */ + BACNET_STACK_EXPORT int dlmstp_send_pdu( void *poShared, BACNET_ADDRESS * dest, /* destination address */ @@ -143,6 +148,7 @@ extern "C" { unsigned pdu_len); /* number of bytes of data */ /* returns the number of octets in the PDU, or zero on failure */ + BACNET_STACK_EXPORT uint16_t dlmstp_receive( void *poShared, BACNET_ADDRESS * src, /* source address */ @@ -157,9 +163,11 @@ extern "C" { /* nodes. This may be used to allocate more or less of the available link */ /* bandwidth to particular nodes. If Max_Info_Frames is not writable in a */ /* node, its value shall be 1. */ + BACNET_STACK_EXPORT void dlmstp_set_max_info_frames( void *poShared, uint8_t max_info_frames); + BACNET_STACK_EXPORT uint8_t dlmstp_max_info_frames( void *poShared); @@ -168,36 +176,46 @@ extern "C" { /* allowable address for master nodes. The value of Max_Master shall be */ /* less than or equal to 127. If Max_Master is not writable in a node, */ /* its value shall be 127. */ + BACNET_STACK_EXPORT void dlmstp_set_max_master( void *poShared, uint8_t max_master); + BACNET_STACK_EXPORT uint8_t dlmstp_max_master( void *poShared); /* MAC address 0-127 */ + BACNET_STACK_EXPORT void dlmstp_set_mac_address( void *poShared, uint8_t my_address); + BACNET_STACK_EXPORT uint8_t dlmstp_mac_address( void *poShared); + BACNET_STACK_EXPORT void dlmstp_get_my_address( void *poShared, BACNET_ADDRESS * my_address); + BACNET_STACK_EXPORT void dlmstp_get_broadcast_address( BACNET_ADDRESS * dest); /* destination address */ /* RS485 Baud Rate 9600, 19200, 38400, 57600, 115200 */ + BACNET_STACK_EXPORT void dlmstp_set_baud_rate( void *poShared, uint32_t baud); + BACNET_STACK_EXPORT uint32_t dlmstp_baud_rate( void *poShared); + BACNET_STACK_EXPORT void dlmstp_fill_bacnet_address( BACNET_ADDRESS * src, uint8_t mstp_address); + BACNET_STACK_EXPORT bool dlmstp_sole_master( void); diff --git a/ports/linux/rs485.h b/ports/linux/rs485.h index d7fa9db9..143e6239 100644 --- a/ports/linux/rs485.h +++ b/ports/linux/rs485.h @@ -37,36 +37,47 @@ #define RS485_H #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/datalink/mstp.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void RS485_Set_Interface( char *ifname); + BACNET_STACK_EXPORT const char *RS485_Interface( void); + BACNET_STACK_EXPORT void RS485_Initialize( void); + BACNET_STACK_EXPORT void RS485_Send_Frame( volatile struct mstp_port_struct_t *mstp_port, /* port specific data */ uint8_t * buffer, /* frame to send (up to 501 bytes of data) */ uint16_t nbytes); /* number of bytes of data (up to 501) */ + BACNET_STACK_EXPORT void RS485_Check_UART_Data( volatile struct mstp_port_struct_t *mstp_port); /* port specific data */ + BACNET_STACK_EXPORT uint32_t RS485_Get_Port_Baud_Rate( volatile struct mstp_port_struct_t *mstp_port); + BACNET_STACK_EXPORT uint32_t RS485_Get_Baud_Rate( void); + BACNET_STACK_EXPORT bool RS485_Set_Baud_Rate( uint32_t baud); + BACNET_STACK_EXPORT void RS485_Cleanup( void); + BACNET_STACK_EXPORT void RS485_Print_Ports( void); diff --git a/ports/win32/bacport.h b/ports/win32/bacport.h index 2e856e41..d0eee221 100644 --- a/ports/win32/bacport.h +++ b/ports/win32/bacport.h @@ -26,6 +26,8 @@ #ifndef BACPORT_H #define BACPORT_H +#include "bacnet/bacnet_stack_exports.h" + #define WIN32_LEAN_AND_MEAN #define STRICT 1 /* Windows XP minimum */ @@ -55,7 +57,7 @@ and globals in favor of more secure versions. */ /* add winmm.lib to our build */ #pragma comment(lib, "winmm.lib") #endif -#include +#include #if !defined(_MSC_VER) #include diff --git a/ports/win32/rs485.h b/ports/win32/rs485.h index 64ef6494..b064a971 100644 --- a/ports/win32/rs485.h +++ b/ports/win32/rs485.h @@ -37,6 +37,7 @@ #define RS485_H #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/datalink/mstp.h" #include "bacport.h" @@ -44,32 +45,42 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void RS485_Set_Interface( char *ifname); + BACNET_STACK_EXPORT const char *RS485_Interface( void); + BACNET_STACK_EXPORT void RS485_Initialize( void); + BACNET_STACK_EXPORT void RS485_Send_Frame( volatile struct mstp_port_struct_t *mstp_port, /* port specific data */ uint8_t * buffer, /* frame to send (up to 501 bytes of data) */ uint16_t nbytes); /* number of bytes of data (up to 501) */ + BACNET_STACK_EXPORT void RS485_Check_UART_Data( volatile struct mstp_port_struct_t *mstp_port); /* port specific data */ + BACNET_STACK_EXPORT uint32_t RS485_Get_Baud_Rate( void); + BACNET_STACK_EXPORT bool RS485_Set_Baud_Rate( uint32_t baud); + BACNET_STACK_EXPORT void RS485_Print_Error( void); + BACNET_STACK_EXPORT bool RS485_Interface_Valid( unsigned port_number); + BACNET_STACK_EXPORT void RS485_Print_Ports( void); diff --git a/src/Makefile b/src/Makefile index 0e5059a4..132d004d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -9,6 +9,12 @@ # # Assumes rm and cp are available +CFLAGS += -Dbacnet_stack_EXPORTS + +ifeq ($(STATIC),1) + CFLAGS += -DBACNET_STACK_STATIC_DEFINE +endif + # These might be already defined in an previous Makefile BACNET_PORT ?= linux BACNET_SRC_DIR ?= $(realpath .) @@ -22,7 +28,7 @@ BACNET_PORT_SRC ?= \ BACNET_INCLUDES = -I$(BACNET_SRC_DIR) -I$(BACNET_PORT_DIR) CFLAGS += $(BACNET_INCLUDES) -BACNET_SRC ?= main.c \ +BACNET_SRC ?= \ $(wildcard $(BACNET_SRC_DIR)/bacnet/*.c) \ $(wildcard $(BACNET_SRC_DIR)/bacnet/basic/*.c) \ $(wildcard $(BACNET_SRC_DIR)/bacnet/basic/binding/*.c) \ @@ -42,7 +48,7 @@ all: $(OBJS) Makefile depend: rm -f .depend - ${CC} -MM ${CFLAGS} *.c >> .depend + ${CC} -MM ${CFLAGS} $(BACNET_SRC) >> .depend clean: rm -rf core $(OBJS) $(LIBRARY) diff --git a/src/bacnet/abort.h b/src/bacnet/abort.h index 4930c1fc..c738bd59 100644 --- a/src/bacnet/abort.h +++ b/src/bacnet/abort.h @@ -26,23 +26,28 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacenum.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT BACNET_ABORT_REASON abort_convert_error_code( BACNET_ERROR_CODE error_code); + BACNET_STACK_EXPORT BACNET_ERROR_CODE abort_convert_to_error_code( BACNET_ABORT_REASON abort_code); + BACNET_STACK_EXPORT int abort_encode_apdu( uint8_t * apdu, uint8_t invoke_id, uint8_t abort_reason, bool server); + BACNET_STACK_EXPORT int abort_decode_service_request( uint8_t * apdu, unsigned apdu_len, @@ -51,6 +56,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testAbort( Test * pTest); #endif diff --git a/src/bacnet/access_rule.h b/src/bacnet/access_rule.h index bb2ab143..dc3ab49d 100644 --- a/src/bacnet/access_rule.h +++ b/src/bacnet/access_rule.h @@ -28,6 +28,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacapp.h" #include "bacnet/bacdevobjpropref.h" @@ -57,16 +58,20 @@ typedef struct { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int bacapp_encode_access_rule( uint8_t * apdu, BACNET_ACCESS_RULE * rule); + BACNET_STACK_EXPORT int bacapp_encode_context_access_rule( uint8_t * apdu, uint8_t tag_number, BACNET_ACCESS_RULE * rule); + BACNET_STACK_EXPORT int bacapp_decode_access_rule( uint8_t * apdu, BACNET_ACCESS_RULE * rule); + BACNET_STACK_EXPORT int bacapp_decode_context_access_rule( uint8_t * apdu, uint8_t tag_number, diff --git a/src/bacnet/alarm_ack.h b/src/bacnet/alarm_ack.h index ee391ddc..61e586eb 100644 --- a/src/bacnet/alarm_ack.h +++ b/src/bacnet/alarm_ack.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacenum.h" #include "bacnet/bacapp.h" #include "bacnet/timestamp.h" @@ -56,6 +57,7 @@ extern "C" { ** Creates a Alarm Acknowledge APDU ** ****************************************************/ + BACNET_STACK_EXPORT int alarm_ack_encode_apdu( uint8_t * apdu, uint8_t invoke_id, @@ -66,6 +68,7 @@ extern "C" { ** Encodes the service data part of Alarm Acknowledge ** ****************************************************/ + BACNET_STACK_EXPORT int alarm_ack_encode_service_request( uint8_t * apdu, BACNET_ALARM_ACK_DATA * data); @@ -75,6 +78,7 @@ extern "C" { ** Decodes the service data part of Alarm Acknowledge ** ****************************************************/ + BACNET_STACK_EXPORT int alarm_ack_decode_service_request( uint8_t * apdu, unsigned apdu_len, diff --git a/src/bacnet/arf.h b/src/bacnet/arf.h index 4dbee028..633acfc6 100644 --- a/src/bacnet/arf.h +++ b/src/bacnet/arf.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdcode.h" #include "bacnet/bacstr.h" @@ -59,17 +60,20 @@ extern "C" { /* Atomic Read File */ /* encode service */ + BACNET_STACK_EXPORT int arf_encode_apdu( uint8_t * apdu, uint8_t invoke_id, BACNET_ATOMIC_READ_FILE_DATA * data); /* decode the service request only */ + BACNET_STACK_EXPORT int arf_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_ATOMIC_READ_FILE_DATA * data); + BACNET_STACK_EXPORT int arf_decode_apdu( uint8_t * apdu, unsigned apdu_len, @@ -79,17 +83,20 @@ extern "C" { /* Atomic Read File Ack */ /* encode service */ + BACNET_STACK_EXPORT int arf_ack_encode_apdu( uint8_t * apdu, uint8_t invoke_id, BACNET_ATOMIC_READ_FILE_DATA * data); /* decode the service request only */ + BACNET_STACK_EXPORT int arf_ack_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_ATOMIC_READ_FILE_DATA * data); + BACNET_STACK_EXPORT int arf_ack_decode_apdu( uint8_t * apdu, unsigned apdu_len, @@ -99,8 +106,10 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void test_AtomicReadFile( Test * pTest); + BACNET_STACK_EXPORT void test_AtomicReadFileAck( Test * pTest); #endif diff --git a/src/bacnet/assigned_access_rights.h b/src/bacnet/assigned_access_rights.h index 0a1d97ec..5e0a0e8a 100644 --- a/src/bacnet/assigned_access_rights.h +++ b/src/bacnet/assigned_access_rights.h @@ -28,6 +28,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacapp.h" #include "bacnet/bacdevobjpropref.h" @@ -41,16 +42,20 @@ typedef struct { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int bacapp_encode_assigned_access_rights( uint8_t * apdu, BACNET_ASSIGNED_ACCESS_RIGHTS * aar); + BACNET_STACK_EXPORT int bacapp_encode_context_assigned_access_rights( uint8_t * apdu, uint8_t tag, BACNET_ASSIGNED_ACCESS_RIGHTS * aar); + BACNET_STACK_EXPORT int bacapp_decode_assigned_access_rights( uint8_t * apdu, BACNET_ASSIGNED_ACCESS_RIGHTS * aar); + BACNET_STACK_EXPORT int bacapp_decode_context_assigned_access_rights( uint8_t * apdu, uint8_t tag, diff --git a/src/bacnet/authentication_factor.h b/src/bacnet/authentication_factor.h index bc5409c5..6c829e1b 100644 --- a/src/bacnet/authentication_factor.h +++ b/src/bacnet/authentication_factor.h @@ -28,6 +28,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacapp.h" @@ -42,16 +43,20 @@ typedef struct { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int bacapp_encode_authentication_factor( uint8_t * apdu, BACNET_AUTHENTICATION_FACTOR * af); + BACNET_STACK_EXPORT int bacapp_encode_context_authentication_factor( uint8_t * apdu, uint8_t tag, BACNET_AUTHENTICATION_FACTOR * af); + BACNET_STACK_EXPORT int bacapp_decode_authentication_factor( uint8_t * apdu, BACNET_AUTHENTICATION_FACTOR * af); + BACNET_STACK_EXPORT int bacapp_decode_context_authentication_factor( uint8_t * apdu, uint8_t tag, diff --git a/src/bacnet/authentication_factor_format.h b/src/bacnet/authentication_factor_format.h index 92b65b02..042c4d61 100644 --- a/src/bacnet/authentication_factor_format.h +++ b/src/bacnet/authentication_factor_format.h @@ -28,6 +28,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" typedef struct { @@ -39,16 +40,20 @@ typedef struct { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int bacapp_encode_authentication_factor_format( uint8_t * apdu, BACNET_AUTHENTICATION_FACTOR_FORMAT * aff); + BACNET_STACK_EXPORT int bacapp_encode_context_authentication_factor_format( uint8_t * apdu, uint8_t tag_number, BACNET_AUTHENTICATION_FACTOR_FORMAT * aff); + BACNET_STACK_EXPORT int bacapp_decode_authentication_factor_format( uint8_t * apdu, BACNET_AUTHENTICATION_FACTOR_FORMAT * aff); + BACNET_STACK_EXPORT int bacapp_decode_context_authentication_factor_format( uint8_t * apdu, uint8_t tag_number, diff --git a/src/bacnet/awf.h b/src/bacnet/awf.h index ccdfc803..d2d83de6 100644 --- a/src/bacnet/awf.h +++ b/src/bacnet/awf.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdcode.h" #ifndef BACNET_WRITE_FILE_RECORD_COUNT @@ -54,17 +55,20 @@ extern "C" { /* Atomic Write File */ /* encode service */ + BACNET_STACK_EXPORT int awf_encode_apdu( uint8_t * apdu, uint8_t invoke_id, BACNET_ATOMIC_WRITE_FILE_DATA * data); /* decode the service request only */ + BACNET_STACK_EXPORT int awf_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_ATOMIC_WRITE_FILE_DATA * data); + BACNET_STACK_EXPORT int awf_decode_apdu( uint8_t * apdu, unsigned apdu_len, @@ -73,17 +77,20 @@ extern "C" { /* Atomic Write File Ack */ /* encode service */ + BACNET_STACK_EXPORT int awf_ack_encode_apdu( uint8_t * apdu, uint8_t invoke_id, BACNET_ATOMIC_WRITE_FILE_DATA * data); /* decode the service request only */ + BACNET_STACK_EXPORT int awf_ack_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_ATOMIC_WRITE_FILE_DATA * data); + BACNET_STACK_EXPORT int awf_ack_decode_apdu( uint8_t * apdu, unsigned apdu_len, @@ -93,8 +100,10 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void test_AtomicWriteFile( Test * pTest); + BACNET_STACK_EXPORT void test_AtomicWriteFileAck( Test * pTest); #endif diff --git a/src/bacnet/bacaddr.h b/src/bacnet/bacaddr.h index 8da43c9e..545d6849 100644 --- a/src/bacnet/bacaddr.h +++ b/src/bacnet/bacaddr.h @@ -27,15 +27,18 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void bacnet_address_copy( BACNET_ADDRESS * dest, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT bool bacnet_address_same( BACNET_ADDRESS * dest, BACNET_ADDRESS * src); diff --git a/src/bacnet/bacapp.h b/src/bacnet/bacapp.h index db230c00..062629bb 100644 --- a/src/bacnet/bacapp.h +++ b/src/bacnet/bacapp.h @@ -27,6 +27,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacint.h" #include "bacnet/bacstr.h" @@ -137,56 +138,68 @@ typedef struct BACnet_Object_Property_Value { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void bacapp_value_list_init( BACNET_APPLICATION_DATA_VALUE *value, size_t count); + BACNET_STACK_EXPORT void bacapp_property_value_list_init( BACNET_PROPERTY_VALUE *value, size_t count); + BACNET_STACK_EXPORT int bacapp_encode_data( uint8_t * apdu, BACNET_APPLICATION_DATA_VALUE * value); + BACNET_STACK_EXPORT int bacapp_decode_data( uint8_t * apdu, uint8_t tag_data_type, uint32_t len_value_type, BACNET_APPLICATION_DATA_VALUE * value); + BACNET_STACK_EXPORT int bacapp_decode_application_data( uint8_t * apdu, unsigned max_apdu_len, BACNET_APPLICATION_DATA_VALUE * value); + BACNET_STACK_EXPORT bool bacapp_decode_application_data_safe( uint8_t * new_apdu, uint32_t new_apdu_len, BACNET_APPLICATION_DATA_VALUE * value); + BACNET_STACK_EXPORT int bacapp_encode_application_data( uint8_t * apdu, BACNET_APPLICATION_DATA_VALUE * value); + BACNET_STACK_EXPORT int bacapp_decode_context_data( uint8_t * apdu, unsigned max_apdu_len, BACNET_APPLICATION_DATA_VALUE * value, BACNET_PROPERTY_ID property); + BACNET_STACK_EXPORT int bacapp_encode_context_data( uint8_t * apdu, BACNET_APPLICATION_DATA_VALUE * value, BACNET_PROPERTY_ID property); + BACNET_STACK_EXPORT int bacapp_encode_context_data_value( uint8_t * apdu, uint8_t context_tag_number, BACNET_APPLICATION_DATA_VALUE * value); + BACNET_STACK_EXPORT BACNET_APPLICATION_TAG bacapp_context_tag_type( BACNET_PROPERTY_ID property, uint8_t tag_number); + BACNET_STACK_EXPORT bool bacapp_copy( BACNET_APPLICATION_DATA_VALUE * dest_value, BACNET_APPLICATION_DATA_VALUE * src_value); @@ -195,17 +208,21 @@ extern "C" { Expects that the first octet contain the opening tag. Include a value property identifier for context specific data such as the value received in a WriteProperty request */ + BACNET_STACK_EXPORT int bacapp_data_len( uint8_t * apdu, unsigned max_apdu_len, BACNET_PROPERTY_ID property); + BACNET_STACK_EXPORT int bacapp_decode_data_len( uint8_t * apdu, uint8_t tag_data_type, uint32_t len_value_type); + BACNET_STACK_EXPORT int bacapp_decode_application_data_len( uint8_t * apdu, unsigned max_apdu_len); + BACNET_STACK_EXPORT int bacapp_decode_context_data_len( uint8_t * apdu, unsigned max_apdu_len, @@ -219,6 +236,7 @@ extern "C" { #endif #ifdef BACAPP_SNPRINTF_ENABLED + BACNET_STACK_EXPORT int bacapp_snprintf_value( char *str, size_t str_len, @@ -226,10 +244,12 @@ extern "C" { #endif #ifdef BACAPP_PRINT_ENABLED + BACNET_STACK_EXPORT bool bacapp_parse_application_data( BACNET_APPLICATION_TAG tag_number, const char *argv, BACNET_APPLICATION_DATA_VALUE * value); + BACNET_STACK_EXPORT bool bacapp_print_value( FILE * stream, BACNET_OBJECT_PROPERTY_VALUE * value); @@ -242,12 +262,15 @@ extern "C" { #ifdef TEST #include "ctest.h" #include "bacnet/datetime.h" + BACNET_STACK_EXPORT bool bacapp_same_value( BACNET_APPLICATION_DATA_VALUE * value, BACNET_APPLICATION_DATA_VALUE * test_value); + BACNET_STACK_EXPORT void testBACnetApplicationDataLength( Test * pTest); + BACNET_STACK_EXPORT void testBACnetApplicationData( Test * pTest); #endif diff --git a/src/bacnet/bacdcode.h b/src/bacnet/bacdcode.h index f61c086e..9b947347 100644 --- a/src/bacnet/bacdcode.h +++ b/src/bacnet/bacdcode.h @@ -27,6 +27,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/datetime.h" #include "bacnet/bacstr.h" @@ -40,6 +41,7 @@ extern "C" { /* from clause 20.2.1 General Rules for Encoding BACnet Tags */ /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int encode_tag( uint8_t * apdu, uint8_t tag_number, @@ -48,74 +50,93 @@ extern "C" { /* from clause 20.2.1.3.2 Constructed Data */ /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int encode_opening_tag( uint8_t * apdu, uint8_t tag_number); + BACNET_STACK_EXPORT int encode_closing_tag( uint8_t * apdu, uint8_t tag_number); + BACNET_STACK_EXPORT int decode_tag_number( uint8_t * apdu, uint8_t * tag_number); + BACNET_STACK_EXPORT int bacnet_tag_number_decode( uint8_t * apdu, uint32_t apdu_len_remaining, uint8_t * tag_number); + BACNET_STACK_EXPORT int decode_tag_number_and_value( uint8_t * apdu, uint8_t * tag_number, uint32_t * value); + BACNET_STACK_EXPORT int bacnet_tag_number_and_value_decode( uint8_t * apdu, uint32_t apdu_len_remaining, uint8_t * tag_number, uint32_t * value); /* returns true if the tag is an opening tag and matches */ + BACNET_STACK_EXPORT bool decode_is_opening_tag_number( uint8_t * apdu, uint8_t tag_number); /* returns true if the tag is a closing tag and matches */ + BACNET_STACK_EXPORT bool decode_is_closing_tag_number( uint8_t * apdu, uint8_t tag_number); /* returns true if the tag is context specific and matches */ + BACNET_STACK_EXPORT bool decode_is_context_tag( uint8_t * apdu, uint8_t tag_number); + BACNET_STACK_EXPORT bool decode_is_context_tag_with_length( uint8_t * apdu, uint8_t tag_number, int *tag_length); /* returns true if the tag is an opening tag */ + BACNET_STACK_EXPORT bool decode_is_opening_tag( uint8_t * apdu); /* returns true if the tag is a closing tag */ + BACNET_STACK_EXPORT bool decode_is_closing_tag( uint8_t * apdu); /* from clause 20.2.2 Encoding of a Null Value */ + BACNET_STACK_EXPORT int encode_application_null( uint8_t * apdu); + BACNET_STACK_EXPORT int encode_context_null( uint8_t * apdu, uint8_t tag_number); /* from clause 20.2.3 Encoding of a Boolean Value */ + BACNET_STACK_EXPORT int encode_application_boolean( uint8_t * apdu, bool boolean_value); + BACNET_STACK_EXPORT bool decode_boolean( uint32_t len_value); + BACNET_STACK_EXPORT int encode_context_boolean( uint8_t * apdu, uint8_t tag_number, bool boolean_value); + BACNET_STACK_EXPORT bool decode_context_boolean( uint8_t * apdu); + BACNET_STACK_EXPORT int decode_context_boolean2( uint8_t * apdu, uint8_t tag_number, @@ -123,22 +144,27 @@ extern "C" { /* from clause 20.2.10 Encoding of a Bit String Value */ /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int decode_bitstring( uint8_t * apdu, uint32_t len_value, BACNET_BIT_STRING * bit_string); + BACNET_STACK_EXPORT int decode_context_bitstring( uint8_t * apdu, uint8_t tag_number, BACNET_BIT_STRING * bit_string); /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int encode_bitstring( uint8_t * apdu, BACNET_BIT_STRING * bit_string); + BACNET_STACK_EXPORT int encode_application_bitstring( uint8_t * apdu, BACNET_BIT_STRING * bit_string); + BACNET_STACK_EXPORT int encode_context_bitstring( uint8_t * apdu, uint8_t tag_number, @@ -147,9 +173,11 @@ extern "C" { /* from clause 20.2.6 Encoding of a Real Number Value */ /* and 20.2.1 General Rules for Encoding BACnet Tags */ /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int encode_application_real( uint8_t * apdu, float value); + BACNET_STACK_EXPORT int encode_context_real( uint8_t * apdu, uint8_t tag_number, @@ -158,10 +186,12 @@ extern "C" { /* from clause 20.2.7 Encoding of a Double Precision Real Number Value */ /* and 20.2.1 General Rules for Encoding BACnet Tags */ /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int encode_application_double( uint8_t * apdu, double value); + BACNET_STACK_EXPORT int encode_context_double( uint8_t * apdu, uint8_t tag_number, @@ -170,21 +200,25 @@ extern "C" { /* from clause 20.2.14 Encoding of an Object Identifier Value */ /* and 20.2.1 General Rules for Encoding BACnet Tags */ /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int decode_object_id( uint8_t * apdu, BACNET_OBJECT_TYPE * object_type, uint32_t * object_instance); + BACNET_STACK_EXPORT int bacnet_object_id_decode( uint8_t * apdu, uint32_t len_value, BACNET_OBJECT_TYPE * object_type, uint32_t * instance); + BACNET_STACK_EXPORT int bacnet_object_id_application_decode( uint8_t * apdu, uint16_t apdu_len_max, BACNET_OBJECT_TYPE * object_type, uint32_t * object_instance); + BACNET_STACK_EXPORT int bacnet_object_id_context_decode( uint8_t * apdu, uint16_t apdu_len_max, @@ -192,21 +226,25 @@ extern "C" { BACNET_OBJECT_TYPE * object_type, uint32_t * instance); + BACNET_STACK_EXPORT int decode_context_object_id( uint8_t * apdu, uint8_t tag_number, BACNET_OBJECT_TYPE * object_type, uint32_t * instance); + BACNET_STACK_EXPORT int encode_bacnet_object_id( uint8_t * apdu, BACNET_OBJECT_TYPE object_type, uint32_t instance); + BACNET_STACK_EXPORT int encode_context_object_id( uint8_t * apdu, uint8_t tag_number, BACNET_OBJECT_TYPE object_type, uint32_t instance); + BACNET_STACK_EXPORT int encode_application_object_id( uint8_t * apdu, BACNET_OBJECT_TYPE object_type, @@ -215,30 +253,37 @@ extern "C" { /* from clause 20.2.8 Encoding of an Octet String Value */ /* and 20.2.1 General Rules for Encoding BACnet Tags */ /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int encode_octet_string( uint8_t * apdu, BACNET_OCTET_STRING * octet_string); + BACNET_STACK_EXPORT int encode_application_octet_string( uint8_t * apdu, BACNET_OCTET_STRING * octet_string); + BACNET_STACK_EXPORT int encode_context_octet_string( uint8_t * apdu, uint8_t tag_number, BACNET_OCTET_STRING * octet_string); + BACNET_STACK_EXPORT int decode_octet_string( uint8_t * apdu, uint32_t len_value, BACNET_OCTET_STRING * octet_string); + BACNET_STACK_EXPORT int decode_context_octet_string( uint8_t * apdu, uint8_t tag_number, BACNET_OCTET_STRING * octet_string); + BACNET_STACK_EXPORT int bacnet_octet_string_decode( uint8_t * apdu, uint16_t apdu_len_max, uint32_t len_value, BACNET_OCTET_STRING * value); + BACNET_STACK_EXPORT int bacnet_octet_string_application_decode( uint8_t * apdu, uint16_t apdu_len_max, @@ -247,35 +292,43 @@ extern "C" { /* from clause 20.2.9 Encoding of a Character String Value */ /* and 20.2.1 General Rules for Encoding BACnet Tags */ /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT uint32_t encode_bacnet_character_string_safe( uint8_t * apdu, uint32_t max_apdu, uint8_t encoding, char *pString, uint32_t length); + BACNET_STACK_EXPORT int encode_bacnet_character_string( uint8_t * apdu, BACNET_CHARACTER_STRING * char_string); + BACNET_STACK_EXPORT int encode_application_character_string( uint8_t * apdu, BACNET_CHARACTER_STRING * char_string); + BACNET_STACK_EXPORT int encode_context_character_string( uint8_t * apdu, uint8_t tag_number, BACNET_CHARACTER_STRING * char_string); + BACNET_STACK_EXPORT int decode_character_string( uint8_t * apdu, uint32_t len_value, BACNET_CHARACTER_STRING * char_string); + BACNET_STACK_EXPORT int decode_context_character_string( uint8_t * apdu, uint8_t tag_number, BACNET_CHARACTER_STRING * char_string); + BACNET_STACK_EXPORT int bacnet_character_string_decode( uint8_t * apdu, uint16_t apdu_len_max, uint32_t len_value, BACNET_CHARACTER_STRING * char_string); + BACNET_STACK_EXPORT int bacnet_character_string_context_decode( uint8_t * apdu, uint16_t apdu_len_max, @@ -286,34 +339,42 @@ extern "C" { /* from clause 20.2.4 Encoding of an Unsigned Integer Value */ /* and 20.2.1 General Rules for Encoding BACnet Tags */ /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int encode_bacnet_unsigned( uint8_t * apdu, BACNET_UNSIGNED_INTEGER value); + BACNET_STACK_EXPORT int encode_context_unsigned( uint8_t * apdu, uint8_t tag_number, BACNET_UNSIGNED_INTEGER value); + BACNET_STACK_EXPORT int encode_application_unsigned( uint8_t * apdu, BACNET_UNSIGNED_INTEGER value); + BACNET_STACK_EXPORT int decode_unsigned( uint8_t * apdu, uint32_t len_value, BACNET_UNSIGNED_INTEGER * value); + BACNET_STACK_EXPORT int decode_context_unsigned( uint8_t * apdu, uint8_t tag_number, BACNET_UNSIGNED_INTEGER * value); + BACNET_STACK_EXPORT int bacnet_unsigned_decode( uint8_t * apdu, uint16_t apdu_max_len, uint32_t len_value, BACNET_UNSIGNED_INTEGER * value); + BACNET_STACK_EXPORT int bacnet_unsigned_application_decode( uint8_t * apdu, uint16_t apdu_len_max, BACNET_UNSIGNED_INTEGER * value); + BACNET_STACK_EXPORT int bacnet_unsigned_context_decode( uint8_t * apdu, uint16_t apdu_len_max, @@ -323,35 +384,43 @@ extern "C" { /* from clause 20.2.5 Encoding of a Signed Integer Value */ /* and 20.2.1 General Rules for Encoding BACnet Tags */ /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int encode_bacnet_signed( uint8_t * apdu, int32_t value); + BACNET_STACK_EXPORT int encode_application_signed( uint8_t * apdu, int32_t value); + BACNET_STACK_EXPORT int encode_context_signed( uint8_t * apdu, uint8_t tag_number, int32_t value); + BACNET_STACK_EXPORT int decode_signed( uint8_t * apdu, uint32_t len_value, int32_t * value); + BACNET_STACK_EXPORT int decode_context_signed( uint8_t * apdu, uint8_t tag_number, int32_t * value); + BACNET_STACK_EXPORT int bacnet_signed_decode( uint8_t * apdu, uint16_t apdu_len_max, uint32_t len_value, int32_t * value); + BACNET_STACK_EXPORT int bacnet_signed_context_decode( uint8_t * apdu, uint16_t apdu_len_max, uint8_t tag_value, int32_t * value); + BACNET_STACK_EXPORT int bacnet_signed_application_decode( uint8_t * apdu, uint16_t apdu_len_max, @@ -360,30 +429,37 @@ extern "C" { /* from clause 20.2.11 Encoding of an Enumerated Value */ /* and 20.2.1 General Rules for Encoding BACnet Tags */ /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int bacnet_enumerated_decode( uint8_t * apdu, uint16_t apdu_max_len, uint32_t len_value, uint32_t * value); + BACNET_STACK_EXPORT int bacnet_enumerated_context_decode( uint8_t * apdu, uint16_t apdu_len_max, uint8_t tag_value, uint32_t * value); + BACNET_STACK_EXPORT int decode_enumerated( uint8_t * apdu, uint32_t len_value, uint32_t * value); + BACNET_STACK_EXPORT int decode_context_enumerated( uint8_t * apdu, uint8_t tag_value, uint32_t * value); + BACNET_STACK_EXPORT int encode_bacnet_enumerated( uint8_t * apdu, uint32_t value); + BACNET_STACK_EXPORT int encode_application_enumerated( uint8_t * apdu, uint32_t value); + BACNET_STACK_EXPORT int encode_context_enumerated( uint8_t * apdu, uint8_t tag_number, @@ -392,41 +468,51 @@ extern "C" { /* from clause 20.2.13 Encoding of a Time Value */ /* and 20.2.1 General Rules for Encoding BACnet Tags */ /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int encode_bacnet_time( uint8_t * apdu, BACNET_TIME * btime); + BACNET_STACK_EXPORT int encode_application_time( uint8_t * apdu, BACNET_TIME * btime); + BACNET_STACK_EXPORT int decode_bacnet_time( uint8_t * apdu, BACNET_TIME * btime); + BACNET_STACK_EXPORT int decode_bacnet_time_safe( uint8_t * apdu, uint32_t len_value, BACNET_TIME * btime); + BACNET_STACK_EXPORT int encode_context_time( uint8_t * apdu, uint8_t tag_number, BACNET_TIME * btime); + BACNET_STACK_EXPORT int decode_application_time( uint8_t * apdu, BACNET_TIME * btime); + BACNET_STACK_EXPORT int decode_context_bacnet_time( uint8_t * apdu, uint8_t tag_number, BACNET_TIME * btime); + BACNET_STACK_EXPORT int bacnet_time_decode( uint8_t * apdu, uint16_t apdu_len_max, uint32_t len_value, BACNET_TIME * value); + BACNET_STACK_EXPORT int bacnet_time_context_decode( uint8_t * apdu, uint16_t apdu_len_max, uint8_t tag_value, BACNET_TIME * value); + BACNET_STACK_EXPORT int bacnet_time_application_decode( uint8_t * apdu, uint16_t apdu_len_max, @@ -441,26 +527,33 @@ extern "C" { /* from clause 20.2.12 Encoding of a Date Value */ /* and 20.2.1 General Rules for Encoding BACnet Tags */ /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int encode_bacnet_date( uint8_t * apdu, BACNET_DATE * bdate); + BACNET_STACK_EXPORT int encode_application_date( uint8_t * apdu, BACNET_DATE * bdate); + BACNET_STACK_EXPORT int encode_context_date( uint8_t * apdu, uint8_t tag_number, BACNET_DATE * bdate); + BACNET_STACK_EXPORT int decode_date( uint8_t * apdu, BACNET_DATE * bdate); + BACNET_STACK_EXPORT int decode_date_safe( uint8_t * apdu, uint32_t len_value, BACNET_DATE * bdate); + BACNET_STACK_EXPORT int decode_application_date( uint8_t * apdu, BACNET_DATE * bdate); + BACNET_STACK_EXPORT int decode_context_date( uint8_t * apdu, uint8_t tag_number, @@ -469,30 +562,38 @@ extern "C" { /* from clause 20.1.2.4 max-segments-accepted */ /* and clause 20.1.2.5 max-APDU-length-accepted */ /* returns the encoded octet */ + BACNET_STACK_EXPORT uint8_t encode_max_segs_max_apdu( int max_segs, int max_apdu); + BACNET_STACK_EXPORT int decode_max_segs( uint8_t octet); + BACNET_STACK_EXPORT int decode_max_apdu( uint8_t octet); /* returns the number of apdu bytes consumed */ + BACNET_STACK_EXPORT int encode_simple_ack( uint8_t * apdu, uint8_t invoke_id, uint8_t service_choice); + BACNET_STACK_EXPORT int encode_bacnet_address( uint8_t * apdu, BACNET_ADDRESS * destination); + BACNET_STACK_EXPORT int decode_bacnet_address( uint8_t * apdu, BACNET_ADDRESS * destination); + BACNET_STACK_EXPORT int encode_context_bacnet_address( uint8_t * apdu, uint8_t tag_number, BACNET_ADDRESS * destination); + BACNET_STACK_EXPORT int decode_context_bacnet_address( uint8_t * apdu, uint8_t tag_number, @@ -520,6 +621,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void test_BACDCode( Test * pTest); #endif diff --git a/src/bacnet/bacdevobjpropref.h b/src/bacnet/bacdevobjpropref.h index f6c78a9f..0620fc89 100644 --- a/src/bacnet/bacdevobjpropref.h +++ b/src/bacnet/bacdevobjpropref.h @@ -27,6 +27,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacint.h" #include "bacnet/bacenum.h" @@ -54,38 +55,46 @@ typedef struct BACnetDeviceObjectReference { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int bacapp_encode_device_obj_property_ref( uint8_t * apdu, BACNET_DEVICE_OBJECT_PROPERTY_REFERENCE * value); + BACNET_STACK_EXPORT int bacapp_encode_context_device_obj_property_ref( uint8_t * apdu, uint8_t tag_number, BACNET_DEVICE_OBJECT_PROPERTY_REFERENCE * value); + BACNET_STACK_EXPORT int bacapp_decode_device_obj_property_ref( uint8_t * apdu, BACNET_DEVICE_OBJECT_PROPERTY_REFERENCE * value); + BACNET_STACK_EXPORT int bacapp_decode_context_device_obj_property_ref( uint8_t * apdu, uint8_t tag_number, BACNET_DEVICE_OBJECT_PROPERTY_REFERENCE * value); + BACNET_STACK_EXPORT int bacapp_encode_device_obj_ref( uint8_t * apdu, BACNET_DEVICE_OBJECT_REFERENCE * value); + BACNET_STACK_EXPORT int bacapp_encode_context_device_obj_ref( uint8_t * apdu, uint8_t tag_number, BACNET_DEVICE_OBJECT_REFERENCE * value); + BACNET_STACK_EXPORT int bacapp_decode_device_obj_ref( uint8_t * apdu, BACNET_DEVICE_OBJECT_REFERENCE * value); + BACNET_STACK_EXPORT int bacapp_decode_context_device_obj_ref( uint8_t * apdu, uint8_t tag_number, @@ -93,6 +102,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testBACnetDeviceObjectPropertyReference( Test * pTest); #endif diff --git a/src/bacnet/bacerror.h b/src/bacnet/bacerror.h index 34d21f18..ac4fa158 100644 --- a/src/bacnet/bacerror.h +++ b/src/bacnet/bacerror.h @@ -26,12 +26,14 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacenum.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int bacerror_encode_apdu( uint8_t * apdu, uint8_t invoke_id, @@ -39,6 +41,7 @@ extern "C" { BACNET_ERROR_CLASS error_class, BACNET_ERROR_CODE error_code); + BACNET_STACK_EXPORT int bacerror_decode_service_request( uint8_t * apdu, unsigned apdu_len, @@ -47,6 +50,7 @@ extern "C" { BACNET_ERROR_CLASS * error_class, BACNET_ERROR_CODE * error_code); + BACNET_STACK_EXPORT int bacerror_decode_error_class_and_code( uint8_t * apdu, unsigned apdu_len, @@ -55,6 +59,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT int bacerror_decode_apdu( uint8_t * apdu, unsigned apdu_len, @@ -63,6 +68,7 @@ extern "C" { BACNET_ERROR_CLASS * error_class, BACNET_ERROR_CODE * error_code); + BACNET_STACK_EXPORT void testBACError( Test * pTest); #endif diff --git a/src/bacnet/bacint.h b/src/bacnet/bacint.h index 6724047d..89f5883e 100644 --- a/src/bacnet/bacint.h +++ b/src/bacnet/bacint.h @@ -27,6 +27,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #ifdef UINT64_MAX typedef uint64_t BACNET_UNSIGNED_INTEGER; @@ -41,80 +42,104 @@ extern "C" { #endif /* __cplusplus */ /* unsigned value encoding and decoding */ + BACNET_STACK_EXPORT int encode_unsigned16( uint8_t * apdu, uint16_t value); + BACNET_STACK_EXPORT int decode_unsigned16( uint8_t * apdu, uint16_t * value); + BACNET_STACK_EXPORT int encode_unsigned24( uint8_t * apdu, uint32_t value); + BACNET_STACK_EXPORT int decode_unsigned24( uint8_t * apdu, uint32_t * value); + BACNET_STACK_EXPORT int encode_unsigned32( uint8_t * apdu, uint32_t value); + BACNET_STACK_EXPORT int decode_unsigned32( uint8_t * apdu, uint32_t * value); #ifdef UINT64_MAX + BACNET_STACK_EXPORT int encode_unsigned40( uint8_t * buffer, uint64_t value); + BACNET_STACK_EXPORT int decode_unsigned40( uint8_t * buffer, uint64_t * value); + BACNET_STACK_EXPORT int encode_unsigned48( uint8_t * buffer, uint64_t value); + BACNET_STACK_EXPORT int decode_unsigned48( uint8_t * buffer, uint64_t * value); + BACNET_STACK_EXPORT int encode_unsigned56( uint8_t * buffer, uint64_t value); + BACNET_STACK_EXPORT int decode_unsigned56( uint8_t * buffer, uint64_t * value); + BACNET_STACK_EXPORT int encode_unsigned64( uint8_t * buffer, uint64_t value); + BACNET_STACK_EXPORT int decode_unsigned64( uint8_t * buffer, uint64_t * value); #endif + BACNET_STACK_EXPORT int bacnet_unsigned_length( BACNET_UNSIGNED_INTEGER value); /* signed value encoding and decoding */ + BACNET_STACK_EXPORT int encode_signed8( uint8_t * apdu, int8_t value); + BACNET_STACK_EXPORT int decode_signed8( uint8_t * apdu, int32_t * value); + BACNET_STACK_EXPORT int encode_signed16( uint8_t * apdu, int16_t value); + BACNET_STACK_EXPORT int decode_signed16( uint8_t * apdu, int32_t * value); + BACNET_STACK_EXPORT int encode_signed24( uint8_t * apdu, int32_t value); + BACNET_STACK_EXPORT int decode_signed24( uint8_t * apdu, int32_t * value); + BACNET_STACK_EXPORT int encode_signed32( uint8_t * apdu, int32_t value); + BACNET_STACK_EXPORT int decode_signed32( uint8_t * apdu, int32_t * value); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testBACnetIntegers( Test * pTest); #endif diff --git a/src/bacnet/bacnet_stack_exports.h b/src/bacnet/bacnet_stack_exports.h new file mode 100644 index 00000000..e4ae29ae --- /dev/null +++ b/src/bacnet/bacnet_stack_exports.h @@ -0,0 +1,53 @@ +/************************************************************************** +* +* Copyright (C) 2020 Steve Karg +* +* Permission is hereby granted, free of charge, to any person obtaining +* a copy of this software and associated documentation files (the +* "Software"), to deal in the Software without restriction, including +* without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to +* permit persons to whom the Software is furnished to do so, subject to +* the following conditions: +* +* The above copyright notice and this permission notice shall be included +* in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*********************************************************************/ +#ifndef BACNET_STACK_EXPORTS_H +#define BACNET_STACK_EXPORTS_H + + +#ifdef BACNET_STACK_STATIC_DEFINE + /* We want a static library */ +# define BACNET_STACK_EXPORT +#else + /* We want a shared library */ +# ifdef _MSC_VER +# define BACNET_STACK_LIBRARY_IMPORT __declspec(dllimport) +# define BACNET_STACK_LIBRARY_EXPORT __declspec(dllexport) +# else +# define BACNET_STACK_LIBRARY_IMPORT +# define BACNET_STACK_LIBRARY_EXPORT __attribute__((visibility("default"))) +# endif +#endif + + +#ifndef BACNET_STACK_EXPORT +# ifdef bacnet_stack_EXPORTS + /* We are building this library */ +# define BACNET_STACK_EXPORT BACNET_STACK_LIBRARY_EXPORT +# else + /* We are using this library */ +# define BACNET_STACK_EXPORT BACNET_STACK_LIBRARY_IMPORT +# endif +#endif + +#endif // BACNET_STACK_EXPORTS_H diff --git a/src/bacnet/bacprop.h b/src/bacnet/bacprop.h index 2fba7358..bf6e051c 100644 --- a/src/bacnet/bacprop.h +++ b/src/bacnet/bacprop.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacenum.h" typedef struct { @@ -37,11 +38,13 @@ typedef struct { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT signed bacprop_tag_by_index_default( PROP_TAG_DATA * data_list, signed index, signed default_ret); + BACNET_STACK_EXPORT signed bacprop_property_tag( BACNET_OBJECT_TYPE type, signed prop); diff --git a/src/bacnet/bacpropstates.h b/src/bacnet/bacpropstates.h index 706bf564..1f70b0b8 100644 --- a/src/bacnet/bacpropstates.h +++ b/src/bacnet/bacpropstates.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacenum.h" #include "bacnet/bacapp.h" #include "bacnet/timestamp.h" @@ -71,15 +72,18 @@ typedef struct { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int bacapp_decode_property_state( uint8_t * apdu, BACNET_PROPERTY_STATE * value); + BACNET_STACK_EXPORT int bacapp_decode_context_property_state( uint8_t * apdu, uint8_t tag_number, BACNET_PROPERTY_STATE * value); + BACNET_STACK_EXPORT int bacapp_encode_property_state( uint8_t * apdu, BACNET_PROPERTY_STATE * value); diff --git a/src/bacnet/bacreal.h b/src/bacnet/bacreal.h index 7124951a..8af68d31 100644 --- a/src/bacnet/bacreal.h +++ b/src/bacnet/bacreal.h @@ -27,39 +27,48 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int decode_real_safe( uint8_t * apdu, uint32_t len_value, float *real_value); + BACNET_STACK_EXPORT int decode_real( uint8_t * apdu, float *real_value); + BACNET_STACK_EXPORT int decode_context_real( uint8_t * apdu, uint8_t tag_number, float *real_value); + BACNET_STACK_EXPORT int encode_bacnet_real( float value, uint8_t * apdu); + BACNET_STACK_EXPORT int decode_double( uint8_t * apdu, double *real_value); + BACNET_STACK_EXPORT int decode_context_double( uint8_t * apdu, uint8_t tag_number, double *double_value); + BACNET_STACK_EXPORT int decode_double_safe( uint8_t * apdu, uint32_t len_value, double *double_value); + BACNET_STACK_EXPORT int encode_bacnet_double( double value, uint8_t * apdu); @@ -67,8 +76,10 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testBACreal( Test * pTest); + BACNET_STACK_EXPORT void testBACdouble( Test * pTest); #endif diff --git a/src/bacnet/bacstr.h b/src/bacnet/bacstr.h index 8d683c17..2286cd7d 100644 --- a/src/bacnet/bacstr.h +++ b/src/bacnet/bacstr.h @@ -27,6 +27,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/config.h" @@ -56,70 +57,88 @@ typedef struct BACnet_Octet_String { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void bitstring_init( BACNET_BIT_STRING * bit_string); + BACNET_STACK_EXPORT void bitstring_set_bit( BACNET_BIT_STRING * bit_string, uint8_t bit_number, bool value); + BACNET_STACK_EXPORT bool bitstring_bit( BACNET_BIT_STRING * bit_string, uint8_t bit_number); + BACNET_STACK_EXPORT uint8_t bitstring_bits_used( BACNET_BIT_STRING * bit_string); /* returns the number of bytes that a bit string is using */ + BACNET_STACK_EXPORT uint8_t bitstring_bytes_used( BACNET_BIT_STRING * bit_string); + BACNET_STACK_EXPORT uint8_t bitstring_bits_capacity( BACNET_BIT_STRING * bit_string); /* used for encoding and decoding from the APDU */ + BACNET_STACK_EXPORT uint8_t bitstring_octet( BACNET_BIT_STRING * bit_string, uint8_t octet_index); + BACNET_STACK_EXPORT bool bitstring_set_octet( BACNET_BIT_STRING * bit_string, uint8_t index, uint8_t octet); + BACNET_STACK_EXPORT bool bitstring_set_bits_used( BACNET_BIT_STRING * bit_string, uint8_t bytes_used, uint8_t unused_bits); + BACNET_STACK_EXPORT bool bitstring_copy( BACNET_BIT_STRING * dest, BACNET_BIT_STRING * src); + BACNET_STACK_EXPORT bool bitstring_same( BACNET_BIT_STRING * bitstring1, BACNET_BIT_STRING * bitstring2); + BACNET_STACK_EXPORT bool bitstring_init_ascii( BACNET_BIT_STRING * bit_string, const char *ascii); /* returns false if the string exceeds capacity initialize by using length=0 */ + BACNET_STACK_EXPORT bool characterstring_init( BACNET_CHARACTER_STRING * char_string, uint8_t encoding, const char *value, size_t length); /* used for ANSI C-Strings */ + BACNET_STACK_EXPORT bool characterstring_init_ansi( BACNET_CHARACTER_STRING * char_string, const char *value); bool characterstring_copy( BACNET_CHARACTER_STRING * dest, BACNET_CHARACTER_STRING * src); + BACNET_STACK_EXPORT bool characterstring_ansi_copy( char *dest, size_t dest_max_len, BACNET_CHARACTER_STRING * src); /* returns true if the strings are the same length, encoding, value */ + BACNET_STACK_EXPORT bool characterstring_same( BACNET_CHARACTER_STRING * dest, BACNET_CHARACTER_STRING * src); + BACNET_STACK_EXPORT bool characterstring_ansi_same( BACNET_CHARACTER_STRING * dest, const char *src); /* returns false if the string exceeds capacity */ + BACNET_STACK_EXPORT bool characterstring_append( BACNET_CHARACTER_STRING * char_string, const char *value, @@ -127,32 +146,42 @@ extern "C" { /* This function sets a new length without changing the value. If length exceeds capacity, no modification happens and function returns false. */ + BACNET_STACK_EXPORT bool characterstring_truncate( BACNET_CHARACTER_STRING * char_string, size_t length); + BACNET_STACK_EXPORT bool characterstring_set_encoding( BACNET_CHARACTER_STRING * char_string, uint8_t encoding); /* Returns the value */ + BACNET_STACK_EXPORT char *characterstring_value( BACNET_CHARACTER_STRING * char_string); /* returns the length */ + BACNET_STACK_EXPORT size_t characterstring_length( BACNET_CHARACTER_STRING * char_string); + BACNET_STACK_EXPORT uint8_t characterstring_encoding( BACNET_CHARACTER_STRING * char_string); + BACNET_STACK_EXPORT size_t characterstring_capacity( BACNET_CHARACTER_STRING * char_string); + BACNET_STACK_EXPORT bool characterstring_printable( BACNET_CHARACTER_STRING * char_string); + BACNET_STACK_EXPORT bool characterstring_valid( BACNET_CHARACTER_STRING * char_string); + BACNET_STACK_EXPORT bool utf8_isvalid( const char *str, size_t length); /* returns false if the string exceeds capacity initialize by using length=0 */ + BACNET_STACK_EXPORT bool octetstring_init( BACNET_OCTET_STRING * octet_string, uint8_t * value, @@ -160,18 +189,22 @@ extern "C" { #ifdef PRINT_ENABLED /* converts an null terminated ASCII Hex string to an octet string. returns true if successfully converted and fits; false if too long */ + BACNET_STACK_EXPORT bool octetstring_init_ascii_hex( BACNET_OCTET_STRING * octet_string, const char *ascii_hex); #endif + BACNET_STACK_EXPORT bool octetstring_copy( BACNET_OCTET_STRING * dest, BACNET_OCTET_STRING * src); + BACNET_STACK_EXPORT size_t octetstring_copy_value( uint8_t * dest, size_t length, BACNET_OCTET_STRING * src); /* returns false if the string exceeds capacity */ + BACNET_STACK_EXPORT bool octetstring_append( BACNET_OCTET_STRING * octet_string, uint8_t * value, @@ -179,24 +212,30 @@ extern "C" { /* This function sets a new length without changing the value. If length exceeds capacity, no modification happens and function returns false. */ + BACNET_STACK_EXPORT bool octetstring_truncate( BACNET_OCTET_STRING * octet_string, size_t length); /* Returns the value */ + BACNET_STACK_EXPORT uint8_t *octetstring_value( BACNET_OCTET_STRING * octet_string); /* Returns the length.*/ + BACNET_STACK_EXPORT size_t octetstring_length( BACNET_OCTET_STRING * octet_string); + BACNET_STACK_EXPORT size_t octetstring_capacity( BACNET_OCTET_STRING * octet_string); /* returns true if the same length and contents */ + BACNET_STACK_EXPORT bool octetstring_value_same( BACNET_OCTET_STRING * octet_string1, BACNET_OCTET_STRING * octet_string2); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testBACnetStrings( Test * pTest); #endif diff --git a/src/bacnet/bactext.h b/src/bacnet/bactext.h index 47b03535..a06bae2d 100644 --- a/src/bacnet/bactext.h +++ b/src/bacnet/bactext.h @@ -35,114 +35,158 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/indtext.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT const char *bactext_confirmed_service_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_unconfirmed_service_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_application_tag_name( unsigned index); + BACNET_STACK_EXPORT bool bactext_application_tag_index( const char *search_name, unsigned *found_index); + BACNET_STACK_EXPORT const char *bactext_object_type_name( unsigned index); + BACNET_STACK_EXPORT bool bactext_object_type_index( const char *search_name, unsigned *found_index); + BACNET_STACK_EXPORT bool bactext_object_type_strtol( const char *search_name, unsigned *found_index); + BACNET_STACK_EXPORT const char *bactext_notify_type_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_event_type_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_property_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_property_name_default( unsigned index, const char *default_string); + BACNET_STACK_EXPORT bool bactext_property_index( const char *search_name, unsigned *found_index); + BACNET_STACK_EXPORT bool bactext_property_strtol( const char *search_name, unsigned *found_index); + BACNET_STACK_EXPORT const char *bactext_engineering_unit_name( unsigned index); + BACNET_STACK_EXPORT bool bactext_engineering_unit_index( const char *search_name, unsigned *found_index); + BACNET_STACK_EXPORT const char *bactext_reject_reason_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_abort_reason_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_error_class_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_error_code_name( unsigned index); + BACNET_STACK_EXPORT unsigned bactext_property_id( const char *name); + BACNET_STACK_EXPORT const char *bactext_month_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_week_of_month_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_day_of_week_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_event_state_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_binary_present_value_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_binary_polarity_name( unsigned index); + BACNET_STACK_EXPORT bool bactext_binary_present_value_index( const char *search_name, unsigned *found_index); + BACNET_STACK_EXPORT const char *bactext_reliability_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_device_status_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_segmentation_name( unsigned index); + BACNET_STACK_EXPORT bool bactext_segmentation_index( const char *search_name, unsigned *found_index); + BACNET_STACK_EXPORT const char *bactext_node_type_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_character_string_encoding_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_event_transition_name( unsigned index); + BACNET_STACK_EXPORT bool bactext_event_transition_index( const char *search_name, unsigned *found_index); + BACNET_STACK_EXPORT const char *bactext_days_of_week_name( unsigned index); + BACNET_STACK_EXPORT bool bactext_days_of_week_index( const char *search_name, unsigned *found_index); + BACNET_STACK_EXPORT const char *bactext_network_layer_msg_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_life_safety_state_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_device_communications_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_lighting_operation_name( unsigned index); + BACNET_STACK_EXPORT const char *bactext_lighting_in_progress( unsigned index); + BACNET_STACK_EXPORT const char *bactext_lighting_transition( unsigned index); #ifdef __cplusplus diff --git a/src/bacnet/bactimevalue.h b/src/bacnet/bactimevalue.h index 518a7419..3991ab30 100644 --- a/src/bacnet/bactimevalue.h +++ b/src/bacnet/bactimevalue.h @@ -28,6 +28,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/bacapp.h" @@ -42,16 +43,20 @@ typedef struct { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int bacapp_encode_time_value(uint8_t * apdu, BACNET_TIME_VALUE * value); + BACNET_STACK_EXPORT int bacapp_encode_context_time_value(uint8_t * apdu, uint8_t tag_number, BACNET_TIME_VALUE * value); + BACNET_STACK_EXPORT int bacapp_decode_time_value(uint8_t * apdu, BACNET_TIME_VALUE * value); + BACNET_STACK_EXPORT int bacapp_decode_context_time_value(uint8_t * apdu, uint8_t tag_number, BACNET_TIME_VALUE * value); diff --git a/src/bacnet/basic/bbmd6/h_bbmd6.h b/src/bacnet/basic/bbmd6/h_bbmd6.h index df375697..e803e2ca 100644 --- a/src/bacnet/basic/bbmd6/h_bbmd6.h +++ b/src/bacnet/basic/bbmd6/h_bbmd6.h @@ -33,6 +33,7 @@ #include #include #include "bacnet/bacdef.h" +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/datalink/bvlc6.h" #ifdef __cplusplus @@ -40,19 +41,24 @@ extern "C" { #endif /* __cplusplus */ /* user application function prototypes */ + BACNET_STACK_EXPORT int bvlc6_handler( BACNET_IP6_ADDRESS *addr, BACNET_ADDRESS * src, uint8_t * npdu, uint16_t npdu_len); + BACNET_STACK_EXPORT int bvlc6_register_with_bbmd( BACNET_IP6_ADDRESS *bbmd_addr, uint32_t vmac_src, uint16_t time_to_live_seconds); + BACNET_STACK_EXPORT uint16_t bvlc6_get_last_result( void); + BACNET_STACK_EXPORT uint8_t bvlc6_get_function_code( void); + BACNET_STACK_EXPORT void bvlc6_init(void); diff --git a/src/bacnet/basic/bbmd6/vmac.h b/src/bacnet/basic/bbmd6/vmac.h index fa5ee3ef..fb242fc1 100644 --- a/src/bacnet/basic/bbmd6/vmac.h +++ b/src/bacnet/basic/bbmd6/vmac.h @@ -8,6 +8,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" /* define the max MAC as big as IPv6 + port number */ #define VMAC_MAC_MAX 18 @@ -26,22 +27,32 @@ struct vmac_data { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT unsigned int VMAC_Count(void); + BACNET_STACK_EXPORT struct vmac_data *VMAC_Find_By_Key(uint32_t device_id); + BACNET_STACK_EXPORT bool VMAC_Find_By_Data(struct vmac_data *vmac, uint32_t *device_id); + BACNET_STACK_EXPORT bool VMAC_Add(uint32_t device_id, struct vmac_data *pVMAC); + BACNET_STACK_EXPORT bool VMAC_Delete(uint32_t device_id); + BACNET_STACK_EXPORT bool VMAC_Different( struct vmac_data *vmac1, struct vmac_data *vmac2); + BACNET_STACK_EXPORT bool VMAC_Match( struct vmac_data *vmac1, struct vmac_data *vmac2); + BACNET_STACK_EXPORT void VMAC_Cleanup(void); + BACNET_STACK_EXPORT void VMAC_Init(void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testVMAC( Test * pTest); #endif diff --git a/src/bacnet/basic/binding/address.h b/src/bacnet/basic/binding/address.h index aa9581f6..809c007b 100644 --- a/src/bacnet/basic/binding/address.h +++ b/src/bacnet/basic/binding/address.h @@ -27,6 +27,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/readrange.h" @@ -34,31 +35,38 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void address_init( void); + BACNET_STACK_EXPORT void address_init_partial( void); + BACNET_STACK_EXPORT void address_add( uint32_t device_id, unsigned max_apdu, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT void address_remove_device( uint32_t device_id); + BACNET_STACK_EXPORT bool address_get_by_device( uint32_t device_id, unsigned *max_apdu, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT bool address_get_by_index( unsigned index, uint32_t * device_id, unsigned *max_apdu, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT bool address_device_get_by_index( unsigned index, uint32_t * device_id, @@ -66,59 +74,73 @@ extern "C" { unsigned *max_apdu, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT bool address_get_device_id( BACNET_ADDRESS * src, uint32_t * device_id); + BACNET_STACK_EXPORT unsigned address_count( void); + BACNET_STACK_EXPORT bool address_match( BACNET_ADDRESS * dest, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT bool address_bind_request( uint32_t device_id, unsigned *max_apdu, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT bool address_device_bind_request( uint32_t device_id, uint32_t * device_ttl, unsigned *max_apdu, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT void address_add_binding( uint32_t device_id, unsigned max_apdu, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT int address_list_encode( uint8_t * apdu, unsigned apdu_len); + BACNET_STACK_EXPORT int rr_address_list_encode( uint8_t * apdu, BACNET_READ_RANGE_DATA * pRequest); + BACNET_STACK_EXPORT void address_set_device_TTL( uint32_t device_id, uint32_t TimeOut, bool StaticFlag); + BACNET_STACK_EXPORT void address_cache_timer( uint16_t uSeconds); + BACNET_STACK_EXPORT void address_mac_init( BACNET_MAC_ADDRESS *mac, uint8_t *adr, uint8_t len); + BACNET_STACK_EXPORT bool address_mac_from_ascii( BACNET_MAC_ADDRESS *mac, char *arg); + BACNET_STACK_EXPORT void address_protected_entry_index_set(uint32_t top_protected_entry_index); + BACNET_STACK_EXPORT void address_own_device_id_set(uint32_t own_id); #ifdef __cplusplus diff --git a/src/bacnet/basic/npdu/h_npdu.h b/src/bacnet/basic/npdu/h_npdu.h index 3215418a..c84d340d 100644 --- a/src/bacnet/basic/npdu/h_npdu.h +++ b/src/bacnet/basic/npdu/h_npdu.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -41,25 +42,31 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void npdu_handler( BACNET_ADDRESS * src, uint8_t * pdu, uint16_t pdu_len); + BACNET_STACK_EXPORT void npdu_handler_cleanup(void); + BACNET_STACK_EXPORT void npdu_handler_init( uint16_t bip_net, uint16_t mstp_net); + BACNET_STACK_EXPORT void npdu_router_handler( uint16_t snet, BACNET_ADDRESS * src, uint8_t * pdu, uint16_t pdu_len); + BACNET_STACK_EXPORT int npdu_router_send_pdu( uint16_t dnet, BACNET_ADDRESS * dest, BACNET_NPDU_DATA * npdu_data, uint8_t * pdu, unsigned int pdu_len); + BACNET_STACK_EXPORT void npdu_router_get_my_address( uint16_t dnet, BACNET_ADDRESS * my_address); diff --git a/src/bacnet/basic/npdu/h_routed_npdu.h b/src/bacnet/basic/npdu/h_routed_npdu.h index f4aa3dae..6aea4d61 100644 --- a/src/bacnet/basic/npdu/h_routed_npdu.h +++ b/src/bacnet/basic/npdu/h_routed_npdu.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void routing_npdu_handler( BACNET_ADDRESS * src, int *DNET_list, diff --git a/src/bacnet/basic/npdu/s_router.h b/src/bacnet/basic/npdu/s_router.h index 4689a818..d50beae9 100644 --- a/src/bacnet/basic/npdu/s_router.h +++ b/src/bacnet/basic/npdu/s_router.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,27 +42,34 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void npdu_encode_npdu_network( BACNET_NPDU_DATA *npdu_data, BACNET_NETWORK_MESSAGE_TYPE network_message_type, bool data_expecting_reply, BACNET_MESSAGE_PRIORITY priority); + BACNET_STACK_EXPORT int Send_Network_Layer_Message( BACNET_NETWORK_MESSAGE_TYPE network_message_type, BACNET_ADDRESS * dst, int *iArgs); + BACNET_STACK_EXPORT void Send_Who_Is_Router_To_Network( BACNET_ADDRESS * dst, int dnet); + BACNET_STACK_EXPORT void Send_I_Am_Router_To_Network( const int DNET_list[]); + BACNET_STACK_EXPORT void Send_Reject_Message_To_Network( BACNET_ADDRESS * dst, uint8_t reject_reason, int dnet); + BACNET_STACK_EXPORT void Send_Initialize_Routing_Table( BACNET_ADDRESS * dst, const int DNET_list[]); + BACNET_STACK_EXPORT void Send_Initialize_Routing_Table_Ack( BACNET_ADDRESS * dst, const int DNET_list[]); diff --git a/src/bacnet/basic/object/acc.h b/src/bacnet/basic/object/acc.h index 203d7a04..84edc5d2 100644 --- a/src/bacnet/basic/object/acc.h +++ b/src/bacnet/basic/object/acc.h @@ -3,6 +3,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacint.h" #include "bacnet/rp.h" @@ -11,64 +12,86 @@ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Accumulator_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Accumulator_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Accumulator_Count( void); + BACNET_STACK_EXPORT uint32_t Accumulator_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Accumulator_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Accumulator_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT char *Accumulator_Name( uint32_t object_instance); + BACNET_STACK_EXPORT bool Accumulator_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT char *Accumulator_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Accumulator_Description_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT bool Accumulator_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Accumulator_Units_Set( uint32_t instance, uint16_t units); + BACNET_STACK_EXPORT uint16_t Accumulator_Units( uint32_t instance); + BACNET_STACK_EXPORT int Accumulator_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Accumulator_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT BACNET_UNSIGNED_INTEGER Accumulator_Present_Value(uint32_t object_instance); + BACNET_STACK_EXPORT bool Accumulator_Present_Value_Set( uint32_t object_instance, BACNET_UNSIGNED_INTEGER value); + BACNET_STACK_EXPORT BACNET_UNSIGNED_INTEGER Accumulator_Max_Pres_Value( uint32_t object_instance); + BACNET_STACK_EXPORT bool Accumulator_Max_Pres_Value_Set( uint32_t object_instance, BACNET_UNSIGNED_INTEGER value); + BACNET_STACK_EXPORT int32_t Accumulator_Scale_Integer(uint32_t object_instance); + BACNET_STACK_EXPORT bool Accumulator_Scale_Integer_Set(uint32_t object_instance, int32_t); + BACNET_STACK_EXPORT void Accumulator_Init( void); diff --git a/src/bacnet/basic/object/access_credential.h b/src/bacnet/basic/object/access_credential.h index b6c81afc..96bbb5b4 100644 --- a/src/bacnet/basic/object/access_credential.h +++ b/src/bacnet/basic/object/access_credential.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/datetime.h" @@ -75,45 +76,60 @@ extern "C" { assigned_access_rights[MAX_ASSIGNED_ACCESS_RIGHTS]; } ACCESS_CREDENTIAL_DESCR; + BACNET_STACK_EXPORT void Access_Credential_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Access_Credential_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Access_Credential_Count( void); + BACNET_STACK_EXPORT uint32_t Access_Credential_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Access_Credential_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Access_Credential_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Access_Credential_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Access_Credential_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT int Access_Credential_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Access_Credential_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Access_Credential_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Access_Credential_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Access_Credential_Cleanup( void); + BACNET_STACK_EXPORT void Access_Credential_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testAccessCredential( Test * pTest); #endif diff --git a/src/bacnet/basic/object/access_door.h b/src/bacnet/basic/object/access_door.h index 42b1e955..8c223a71 100644 --- a/src/bacnet/basic/object/access_door.h +++ b/src/bacnet/basic/object/access_door.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/rp.h" @@ -57,82 +58,110 @@ extern "C" { BACNET_DOOR_ALARM_STATE door_alarm_state; } ACCESS_DOOR_DESCR; + BACNET_STACK_EXPORT void Access_Door_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Access_Door_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Access_Door_Count( void); + BACNET_STACK_EXPORT uint32_t Access_Door_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Access_Door_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Access_Door_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT BACNET_DOOR_VALUE Access_Door_Present_Value( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Access_Door_Present_Value_Priority( uint32_t object_instance); + BACNET_STACK_EXPORT bool Access_Door_Present_Value_Set( uint32_t object_instance, BACNET_DOOR_VALUE value, unsigned priority); + BACNET_STACK_EXPORT bool Access_Door_Present_Value_Relinquish( uint32_t object_instance, unsigned priority); + BACNET_STACK_EXPORT BACNET_DOOR_VALUE Access_Door_Relinquish_Default( uint32_t object_instance); + BACNET_STACK_EXPORT bool Access_Door_Relinquish_Default_Set( uint32_t object_instance, float value); + BACNET_STACK_EXPORT bool Access_Door_Change_Of_Value( uint32_t instance); + BACNET_STACK_EXPORT void Access_Door_Change_Of_Value_Clear( uint32_t instance); + BACNET_STACK_EXPORT bool Access_Door_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); + BACNET_STACK_EXPORT bool Access_Door_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Access_Door_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT char *Access_Door_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Access_Door_Description_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT bool Access_Door_Out_Of_Service( uint32_t instance); + BACNET_STACK_EXPORT void Access_Door_Out_Of_Service_Set( uint32_t instance, bool oos_flag); + BACNET_STACK_EXPORT int Access_Door_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Access_Door_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Access_Door_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Access_Door_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Access_Door_Cleanup( void); + BACNET_STACK_EXPORT void Access_Door_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testAccessDoor( Test * pTest); #endif diff --git a/src/bacnet/basic/object/access_point.h b/src/bacnet/basic/object/access_point.h index 99ff9e00..2f92710e 100644 --- a/src/bacnet/basic/object/access_point.h +++ b/src/bacnet/basic/object/access_point.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/timestamp.h" @@ -64,52 +65,68 @@ extern "C" { uint8_t priority_for_writing; } ACCESS_POINT_DESCR; + BACNET_STACK_EXPORT void Access_Point_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Access_Point_Valid_Instance( uint32_t object_instance); unsigned Access_Point_Count( void); + BACNET_STACK_EXPORT uint32_t Access_Point_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Access_Point_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Access_Point_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Access_Point_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Access_Point_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT bool Access_Point_Out_Of_Service( uint32_t instance); + BACNET_STACK_EXPORT void Access_Point_Out_Of_Service_Set( uint32_t instance, bool oos_flag); + BACNET_STACK_EXPORT int Access_Point_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Access_Point_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Access_Point_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Access_Point_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Access_Point_Cleanup( void); + BACNET_STACK_EXPORT void Access_Point_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testAccessPoint( Test * pTest); #endif diff --git a/src/bacnet/basic/object/access_rights.h b/src/bacnet/basic/object/access_rights.h index db1e8778..496eae30 100644 --- a/src/bacnet/basic/object/access_rights.h +++ b/src/bacnet/basic/object/access_rights.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/bacdevobjpropref.h" @@ -62,44 +63,58 @@ extern "C" { positive_access_rules[MAX_POSITIVE_ACCESS_RIGHTS_RULES]; } ACCESS_RIGHTS_DESCR; + BACNET_STACK_EXPORT void Access_Rights_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Access_Rights_Valid_Instance( uint32_t object_instance); unsigned Access_Rights_Count( void); + BACNET_STACK_EXPORT uint32_t Access_Rights_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Access_Rights_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Access_Rights_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Access_Rights_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Access_Rights_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT int Access_Rights_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Access_Rights_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Access_Rights_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Access_Rights_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Access_Rights_Cleanup( void); + BACNET_STACK_EXPORT void Access_Rights_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testAccessRights( Test * pTest); #endif diff --git a/src/bacnet/basic/object/access_user.h b/src/bacnet/basic/object/access_user.h index 0f50ea81..8243e80d 100644 --- a/src/bacnet/basic/object/access_user.h +++ b/src/bacnet/basic/object/access_user.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/bacdevobjpropref.h" @@ -55,44 +56,58 @@ extern "C" { credentials[MAX_ACCESS_USER_CREDENTIALS_COUNT]; } ACCESS_USER_DESCR; + BACNET_STACK_EXPORT void Access_User_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Access_User_Valid_Instance( uint32_t object_instance); unsigned Access_User_Count( void); + BACNET_STACK_EXPORT uint32_t Access_User_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Access_User_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Access_User_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Access_User_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Access_User_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT int Access_User_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Access_User_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Access_User_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Access_User_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Access_User_Cleanup( void); + BACNET_STACK_EXPORT void Access_User_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testAccessUser( Test * pTest); #endif diff --git a/src/bacnet/basic/object/access_zone.h b/src/bacnet/basic/object/access_zone.h index 063e1885..bd1d6325 100644 --- a/src/bacnet/basic/object/access_zone.h +++ b/src/bacnet/basic/object/access_zone.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/bacdevobjpropref.h" @@ -63,50 +64,66 @@ extern "C" { exit_points[MAX_ACCESS_ZONE_EXIT_POINTS]; } ACCESS_ZONE_DESCR; + BACNET_STACK_EXPORT void Access_Zone_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Access_Zone_Valid_Instance( uint32_t object_instance); unsigned Access_Zone_Count( void); + BACNET_STACK_EXPORT uint32_t Access_Zone_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Access_Zone_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Access_Zone_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Access_Zone_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Access_Zone_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT bool Access_Zone_Out_Of_Service( uint32_t instance); + BACNET_STACK_EXPORT void Access_Zone_Out_Of_Service_Set( uint32_t instance, bool oos_flag); + BACNET_STACK_EXPORT int Access_Zone_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Access_Zone_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Access_Zone_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Access_Zone_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Access_Zone_Cleanup( void); + BACNET_STACK_EXPORT void Access_Zone_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testAccessZone( Test * pTest); #endif diff --git a/src/bacnet/basic/object/ai.h b/src/bacnet/basic/object/ai.h index 511312d8..e6a4d01a 100644 --- a/src/bacnet/basic/object/ai.h +++ b/src/bacnet/basic/object/ai.h @@ -28,6 +28,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/rp.h" #include "bacnet/wp.h" @@ -69,101 +70,132 @@ extern "C" { #endif } ANALOG_INPUT_DESCR; + BACNET_STACK_EXPORT void Analog_Input_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Analog_Input_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Analog_Input_Count( void); + BACNET_STACK_EXPORT uint32_t Analog_Input_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Analog_Input_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Analog_Input_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Analog_Input_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Analog_Input_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT char *Analog_Input_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Analog_Input_Description_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT bool Analog_Input_Units_Set( uint32_t instance, uint16_t units); + BACNET_STACK_EXPORT uint16_t Analog_Input_Units( uint32_t instance); + BACNET_STACK_EXPORT int Analog_Input_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Analog_Input_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT float Analog_Input_Present_Value( uint32_t object_instance); + BACNET_STACK_EXPORT void Analog_Input_Present_Value_Set( uint32_t object_instance, float value); + BACNET_STACK_EXPORT bool Analog_Input_Out_Of_Service( uint32_t object_instance); + BACNET_STACK_EXPORT void Analog_Input_Out_Of_Service_Set( uint32_t object_instance, bool oos_flag); + BACNET_STACK_EXPORT bool Analog_Input_Change_Of_Value( uint32_t instance); + BACNET_STACK_EXPORT void Analog_Input_Change_Of_Value_Clear( uint32_t instance); + BACNET_STACK_EXPORT bool Analog_Input_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); float Analog_Input_COV_Increment( uint32_t instance); + BACNET_STACK_EXPORT void Analog_Input_COV_Increment_Set( uint32_t instance, float value); /* note: header of Intrinsic_Reporting function is required even when INTRINSIC_REPORTING is not defined */ + BACNET_STACK_EXPORT void Analog_Input_Intrinsic_Reporting( uint32_t object_instance); #if defined(INTRINSIC_REPORTING) + BACNET_STACK_EXPORT int Analog_Input_Event_Information( unsigned index, BACNET_GET_EVENT_INFORMATION_DATA * getevent_data); + BACNET_STACK_EXPORT int Analog_Input_Alarm_Ack( BACNET_ALARM_ACK_DATA * alarmack_data, BACNET_ERROR_CODE * error_code); + BACNET_STACK_EXPORT int Analog_Input_Alarm_Summary( unsigned index, BACNET_GET_ALARM_SUMMARY_DATA * getalarm_data); #endif + BACNET_STACK_EXPORT bool Analog_Input_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Analog_Input_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Analog_Input_Cleanup( void); + BACNET_STACK_EXPORT void Analog_Input_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testAnalogInput( Test * pTest); #endif diff --git a/src/bacnet/basic/object/ao.h b/src/bacnet/basic/object/ao.h index 4982facd..777fa00b 100644 --- a/src/bacnet/basic/object/ao.h +++ b/src/bacnet/basic/object/ao.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/rp.h" @@ -36,99 +37,133 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Analog_Output_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Analog_Output_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Analog_Output_Count( void); + BACNET_STACK_EXPORT uint32_t Analog_Output_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Analog_Output_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Analog_Output_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT float Analog_Output_Present_Value( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Analog_Output_Present_Value_Priority( uint32_t object_instance); + BACNET_STACK_EXPORT bool Analog_Output_Present_Value_Set( uint32_t object_instance, float value, unsigned priority); + BACNET_STACK_EXPORT bool Analog_Output_Present_Value_Relinquish( uint32_t object_instance, unsigned priority); + BACNET_STACK_EXPORT float Analog_Output_Relinquish_Default( uint32_t object_instance); + BACNET_STACK_EXPORT bool Analog_Output_Relinquish_Default_Set( uint32_t object_instance, float value); + BACNET_STACK_EXPORT bool Analog_Output_Change_Of_Value( uint32_t instance); + BACNET_STACK_EXPORT void Analog_Output_Change_Of_Value_Clear( uint32_t instance); + BACNET_STACK_EXPORT bool Analog_Output_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); + BACNET_STACK_EXPORT float Analog_Output_COV_Increment( uint32_t instance); + BACNET_STACK_EXPORT void Analog_Output_COV_Increment_Set( uint32_t instance, float value); + BACNET_STACK_EXPORT bool Analog_Output_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Analog_Output_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT char *Analog_Output_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Analog_Output_Description_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT BACNET_RELIABILITY Analog_Output_Reliability( uint32_t object_instance); + BACNET_STACK_EXPORT bool Analog_Output_Reliability_Set( uint32_t object_instance, BACNET_RELIABILITY value); + BACNET_STACK_EXPORT bool Analog_Output_Units_Set( uint32_t instance, uint16_t units); + BACNET_STACK_EXPORT uint16_t Analog_Output_Units( uint32_t instance); + BACNET_STACK_EXPORT bool Analog_Output_Out_Of_Service( uint32_t instance); + BACNET_STACK_EXPORT void Analog_Output_Out_Of_Service_Set( uint32_t instance, bool oos_flag); + BACNET_STACK_EXPORT int Analog_Output_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Analog_Output_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Analog_Output_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Analog_Output_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Analog_Output_Cleanup( void); + BACNET_STACK_EXPORT void Analog_Output_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testAnalogOutput( Test * pTest); #endif diff --git a/src/bacnet/basic/object/av.h b/src/bacnet/basic/object/av.h index 6932a74f..95a7b910 100644 --- a/src/bacnet/basic/object/av.h +++ b/src/bacnet/basic/object/av.h @@ -28,6 +28,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/wp.h" @@ -70,106 +71,139 @@ extern "C" { } ANALOG_VALUE_DESCR; + BACNET_STACK_EXPORT void Analog_Value_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Analog_Value_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Analog_Value_Count( void); + BACNET_STACK_EXPORT uint32_t Analog_Value_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Analog_Value_Instance_To_Index( uint32_t object_instance); + BACNET_STACK_EXPORT bool Analog_Value_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Analog_Value_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT int Analog_Value_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Analog_Value_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Analog_Value_Present_Value_Set( uint32_t object_instance, float value, uint8_t priority); + BACNET_STACK_EXPORT float Analog_Value_Present_Value( uint32_t object_instance); + BACNET_STACK_EXPORT bool Analog_Value_Change_Of_Value( uint32_t instance); + BACNET_STACK_EXPORT void Analog_Value_Change_Of_Value_Clear( uint32_t instance); + BACNET_STACK_EXPORT bool Analog_Value_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); + BACNET_STACK_EXPORT float Analog_Value_COV_Increment( uint32_t instance); + BACNET_STACK_EXPORT void Analog_Value_COV_Increment_Set( uint32_t instance, float value); + BACNET_STACK_EXPORT char *Analog_Value_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Analog_Value_Description_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT BACNET_RELIABILITY Analog_Value_Reliability( uint32_t object_instance); + BACNET_STACK_EXPORT bool Analog_Value_Reliability_Set( uint32_t object_instance, BACNET_RELIABILITY value); + BACNET_STACK_EXPORT uint16_t Analog_Value_Units( uint32_t instance); + BACNET_STACK_EXPORT bool Analog_Value_Units_Set( uint32_t instance, uint16_t unit); + BACNET_STACK_EXPORT bool Analog_Value_Out_Of_Service( uint32_t instance); + BACNET_STACK_EXPORT void Analog_Value_Out_Of_Service_Set( uint32_t instance, bool oos_flag); /* note: header of Intrinsic_Reporting function is required even when INTRINSIC_REPORTING is not defined */ + BACNET_STACK_EXPORT void Analog_Value_Intrinsic_Reporting( uint32_t object_instance); #if defined(INTRINSIC_REPORTING) + BACNET_STACK_EXPORT int Analog_Value_Event_Information( unsigned index, BACNET_GET_EVENT_INFORMATION_DATA * getevent_data); + BACNET_STACK_EXPORT int Analog_Value_Alarm_Ack( BACNET_ALARM_ACK_DATA * alarmack_data, BACNET_ERROR_CODE * error_code); + BACNET_STACK_EXPORT int Analog_Value_Alarm_Summary( unsigned index, BACNET_GET_ALARM_SUMMARY_DATA * getalarm_data); #endif + BACNET_STACK_EXPORT bool Analog_Value_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Analog_Value_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Analog_Value_Cleanup( void); + BACNET_STACK_EXPORT void Analog_Value_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testAnalog_Value( Test * pTest); #endif diff --git a/src/bacnet/basic/object/bacfile.h b/src/bacnet/basic/object/bacfile.h index ad1883b9..298a8f46 100644 --- a/src/bacnet/basic/object/bacfile.h +++ b/src/bacnet/basic/object/bacfile.h @@ -36,6 +36,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -48,21 +49,28 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void BACfile_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool bacfile_object_name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool bacfile_valid_instance( uint32_t object_instance); + BACNET_STACK_EXPORT uint32_t bacfile_count( void); + BACNET_STACK_EXPORT uint32_t bacfile_index_to_instance( unsigned find_index); + BACNET_STACK_EXPORT unsigned bacfile_instance_to_index( uint32_t instance); + BACNET_STACK_EXPORT uint32_t bacfile_instance( char *filename); /* this is one way to match up the invoke ID with */ @@ -70,35 +78,46 @@ extern "C" { /* Another way would be to store the */ /* invokeID and file instance in a list or table */ /* when the request was sent */ + BACNET_STACK_EXPORT uint32_t bacfile_instance_from_tsm( uint8_t invokeID); /* handler ACK helper */ + BACNET_STACK_EXPORT bool bacfile_read_stream_data( BACNET_ATOMIC_READ_FILE_DATA * data); + BACNET_STACK_EXPORT bool bacfile_read_ack_stream_data( uint32_t instance, BACNET_ATOMIC_READ_FILE_DATA * data); + BACNET_STACK_EXPORT bool bacfile_write_stream_data( BACNET_ATOMIC_WRITE_FILE_DATA * data); + BACNET_STACK_EXPORT bool bacfile_read_record_data( BACNET_ATOMIC_READ_FILE_DATA * data); + BACNET_STACK_EXPORT bool bacfile_read_ack_record_data( uint32_t instance, BACNET_ATOMIC_READ_FILE_DATA * data); + BACNET_STACK_EXPORT bool bacfile_write_record_data( BACNET_ATOMIC_WRITE_FILE_DATA * data); + BACNET_STACK_EXPORT void bacfile_init( void); + BACNET_STACK_EXPORT uint32_t bacfile_file_size( uint32_t instance); /* handling for read property service */ + BACNET_STACK_EXPORT int bacfile_read_property( BACNET_READ_PROPERTY_DATA * rpdata); /* handling for write property service */ + BACNET_STACK_EXPORT bool bacfile_write_property( BACNET_WRITE_PROPERTY_DATA * wp_data); diff --git a/src/bacnet/basic/object/bi.h b/src/bacnet/basic/object/bi.h index 3f22da6e..23bfd94b 100644 --- a/src/bacnet/basic/object/bi.h +++ b/src/bacnet/basic/object/bi.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/cov.h" #include "bacnet/rp.h" @@ -36,95 +37,127 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Binary_Input_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Binary_Input_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Binary_Input_Count( void); + BACNET_STACK_EXPORT uint32_t Binary_Input_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Binary_Input_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Input_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Input_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Binary_Input_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT BACNET_BINARY_PV Binary_Input_Present_Value( uint32_t object_instance); + BACNET_STACK_EXPORT bool Binary_Input_Present_Value_Set( uint32_t object_instance, BACNET_BINARY_PV value); + BACNET_STACK_EXPORT char *Binary_Input_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Input_Description_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT BACNET_RELIABILITY Binary_Input_Reliability( uint32_t object_instance); + BACNET_STACK_EXPORT bool Binary_Input_Reliability_Set( uint32_t object_instance, BACNET_RELIABILITY value); + BACNET_STACK_EXPORT char *Binary_Input_Inactive_Text( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Input_Inactive_Text_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT char *Binary_Input_Active_Text( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Input_Active_Text_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT BACNET_POLARITY Binary_Input_Polarity( uint32_t object_instance); + BACNET_STACK_EXPORT bool Binary_Input_Polarity_Set( uint32_t object_instance, BACNET_POLARITY polarity); + BACNET_STACK_EXPORT bool Binary_Input_Out_Of_Service( uint32_t object_instance); + BACNET_STACK_EXPORT void Binary_Input_Out_Of_Service_Set( uint32_t object_instance, bool value); + BACNET_STACK_EXPORT bool Binary_Input_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); + BACNET_STACK_EXPORT bool Binary_Input_Change_Of_Value( uint32_t instance); + BACNET_STACK_EXPORT void Binary_Input_Change_Of_Value_Clear( uint32_t instance); + BACNET_STACK_EXPORT int Binary_Input_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Binary_Input_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Binary_Input_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Binary_Input_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Binary_Input_Cleanup( void); + BACNET_STACK_EXPORT void Binary_Input_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testBinaryInput( Test * pTest); #endif diff --git a/src/bacnet/basic/object/bo.h b/src/bacnet/basic/object/bo.h index 6b9b58c0..c5a70a51 100644 --- a/src/bacnet/basic/object/bo.h +++ b/src/bacnet/basic/object/bo.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/rp.h" @@ -36,101 +37,135 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Binary_Output_Init( void); + BACNET_STACK_EXPORT void Binary_Output_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Binary_Output_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Binary_Output_Count( void); + BACNET_STACK_EXPORT uint32_t Binary_Output_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Binary_Output_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Output_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Output_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Binary_Output_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT char *Binary_Output_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Output_Description_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT char *Binary_Output_Inactive_Text( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Output_Inactive_Text_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT char *Binary_Output_Active_Text( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Output_Active_Text_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT BACNET_BINARY_PV Binary_Output_Present_Value( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Output_Present_Value_Set( uint32_t instance, BACNET_BINARY_PV binary_value, unsigned priority); + BACNET_STACK_EXPORT bool Binary_Output_Present_Value_Relinquish( uint32_t instance, unsigned priority); + BACNET_STACK_EXPORT unsigned Binary_Output_Present_Value_Priority( uint32_t object_instance); + BACNET_STACK_EXPORT BACNET_POLARITY Binary_Output_Polarity( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Output_Polarity_Set( uint32_t object_instance, BACNET_POLARITY polarity); + BACNET_STACK_EXPORT bool Binary_Output_Out_Of_Service( uint32_t instance); + BACNET_STACK_EXPORT void Binary_Output_Out_Of_Service_Set( uint32_t object_instance, bool value); + BACNET_STACK_EXPORT BACNET_BINARY_PV Binary_Output_Relinquish_Default( uint32_t object_instance); + BACNET_STACK_EXPORT bool Binary_Output_Relinquish_Default_Set( uint32_t object_instance, BACNET_BINARY_PV value); + BACNET_STACK_EXPORT bool Binary_Output_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); + BACNET_STACK_EXPORT bool Binary_Output_Change_Of_Value( uint32_t instance); + BACNET_STACK_EXPORT void Binary_Output_Change_Of_Value_Clear( uint32_t instance); + BACNET_STACK_EXPORT int Binary_Output_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Binary_Output_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Binary_Output_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Binary_Output_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Binary_Output_Cleanup( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testBinaryOutput( Test * pTest); #endif diff --git a/src/bacnet/basic/object/bv.h b/src/bacnet/basic/object/bv.h index f560ebbe..50ab3f46 100644 --- a/src/bacnet/basic/object/bv.h +++ b/src/bacnet/basic/object/bv.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/rp.h" @@ -36,112 +37,150 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Binary_Value_Init( void); + BACNET_STACK_EXPORT void Binary_Value_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Binary_Value_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Binary_Value_Count( void); + BACNET_STACK_EXPORT uint32_t Binary_Value_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Binary_Value_Instance_To_Index( uint32_t object_instance); + BACNET_STACK_EXPORT bool Binary_Value_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Value_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Binary_Value_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT char *Binary_Value_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Value_Description_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT BACNET_RELIABILITY Binary_Value_Reliability( uint32_t object_instance); + BACNET_STACK_EXPORT bool Binary_Value_Reliability_Set( uint32_t object_instance, BACNET_RELIABILITY value); + BACNET_STACK_EXPORT char *Binary_Value_Inactive_Text( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Value_Inactive_Text_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT char *Binary_Value_Active_Text( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Value_Active_Text_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT int Binary_Value_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Binary_Value_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Binary_Value_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); + BACNET_STACK_EXPORT bool Binary_Value_Change_Of_Value( uint32_t instance); + BACNET_STACK_EXPORT void Binary_Value_Change_Of_Value_Clear( uint32_t instance); + BACNET_STACK_EXPORT BACNET_BINARY_PV Binary_Value_Present_Value( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Value_Present_Value_Set( uint32_t instance, BACNET_BINARY_PV value); + BACNET_STACK_EXPORT bool Binary_Value_Out_Of_Service( uint32_t instance); + BACNET_STACK_EXPORT void Binary_Value_Out_Of_Service_Set( uint32_t instance, bool value); + BACNET_STACK_EXPORT char *Binary_Value_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Value_Description_Set( uint32_t object_instance, char *text_string); + BACNET_STACK_EXPORT char *Binary_Value_Inactive_Text( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Value_Inactive_Text_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT char *Binary_Value_Active_Text( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Value_Active_Text_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT BACNET_POLARITY Binary_Value_Polarity( uint32_t instance); + BACNET_STACK_EXPORT bool Binary_Value_Polarity_Set( uint32_t object_instance, BACNET_POLARITY polarity); + BACNET_STACK_EXPORT bool Binary_Value_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Binary_Value_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Binary_Value_Cleanup( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testBinary_Value( Test * pTest); #endif diff --git a/src/bacnet/basic/object/channel.h b/src/bacnet/basic/object/channel.h index 2cfe2554..2ee0bf4b 100644 --- a/src/bacnet/basic/object/channel.h +++ b/src/bacnet/basic/object/channel.h @@ -36,6 +36,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/rp.h" #include "bacnet/wp.h" @@ -124,76 +125,106 @@ extern "C" { struct BACnet_Channel_Value_t *next; } BACNET_CHANNEL_VALUE; + BACNET_STACK_EXPORT void Channel_Property_Lists(const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Channel_Valid_Instance(uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Channel_Count(void); + BACNET_STACK_EXPORT uint32_t Channel_Index_To_Instance(unsigned index); + BACNET_STACK_EXPORT unsigned Channel_Instance_To_Index(uint32_t instance); + BACNET_STACK_EXPORT bool Channel_Object_Instance_Add(uint32_t instance); + BACNET_STACK_EXPORT bool Channel_Object_Name(uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Channel_Name_Set(uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT int Channel_Read_Property(BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Channel_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT BACNET_CHANNEL_VALUE * Channel_Present_Value(uint32_t object_instance); + BACNET_STACK_EXPORT bool Channel_Present_Value_Set( BACNET_WRITE_PROPERTY_DATA * wp_data, BACNET_APPLICATION_DATA_VALUE * value); + BACNET_STACK_EXPORT bool Channel_Out_Of_Service(uint32_t object_instance); + BACNET_STACK_EXPORT void Channel_Out_Of_Service_Set(uint32_t object_instance, bool oos_flag); + BACNET_STACK_EXPORT unsigned Channel_Last_Priority(uint32_t object_instance); + BACNET_STACK_EXPORT BACNET_WRITE_STATUS Channel_Write_Status(uint32_t object_instance); uint16_t Channel_Number(uint32_t object_instance); + BACNET_STACK_EXPORT bool Channel_Number_Set(uint32_t object_instance, uint16_t value); + BACNET_STACK_EXPORT unsigned Channel_Reference_List_Member_Count(uint32_t object_instance); + BACNET_STACK_EXPORT BACNET_DEVICE_OBJECT_PROPERTY_REFERENCE * Channel_Reference_List_Member_Element(uint32_t object_instance, unsigned element); + BACNET_STACK_EXPORT bool Channel_Reference_List_Member_Element_Set(uint32_t object_instance, unsigned array_index, BACNET_DEVICE_OBJECT_PROPERTY_REFERENCE *pMemberSrc); + BACNET_STACK_EXPORT unsigned Channel_Reference_List_Member_Element_Add(uint32_t object_instance, BACNET_DEVICE_OBJECT_PROPERTY_REFERENCE *pMemberSrc); + BACNET_STACK_EXPORT unsigned Channel_Reference_List_Member_Local_Add( uint32_t object_instance, BACNET_OBJECT_TYPE type, uint32_t instance, BACNET_PROPERTY_ID propertyIdentifier, uint32_t arrayIndex); + BACNET_STACK_EXPORT uint16_t Channel_Control_Groups_Element( uint32_t object_instance, int32_t array_index); + BACNET_STACK_EXPORT bool Channel_Control_Groups_Element_Set( uint32_t object_instance, int32_t array_index, uint16_t value); + BACNET_STACK_EXPORT bool Channel_Value_Copy(BACNET_CHANNEL_VALUE * cvalue, BACNET_APPLICATION_DATA_VALUE * value); + BACNET_STACK_EXPORT int Channel_Value_Encode(uint8_t *apdu, int apdu_max, BACNET_CHANNEL_VALUE * value); + BACNET_STACK_EXPORT int Channel_Coerce_Data_Encode( uint8_t * apdu, unsigned max_apdu, BACNET_APPLICATION_DATA_VALUE * value, BACNET_APPLICATION_TAG tag); + BACNET_STACK_EXPORT bool Channel_Write_Member_Value( BACNET_WRITE_PROPERTY_DATA * wp_data, BACNET_APPLICATION_DATA_VALUE * value); + BACNET_STACK_EXPORT void Channel_Init(void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testChannelObject(Test * pTest); #endif diff --git a/src/bacnet/basic/object/command.h b/src/bacnet/basic/object/command.h index 7e4d6519..273da6d6 100644 --- a/src/bacnet/basic/object/command.h +++ b/src/bacnet/basic/object/command.h @@ -44,6 +44,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/rp.h" #include "bacnet/wp.h" @@ -90,81 +91,106 @@ extern "C" { BACNET_ACTION_LIST Action[MAX_COMMAND_ACTIONS]; } COMMAND_DESCR; + BACNET_STACK_EXPORT void Command_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Command_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Command_Count( void); + BACNET_STACK_EXPORT uint32_t Command_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Command_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Command_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Command_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Command_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT char *Command_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Command_Description_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT int Command_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Command_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT uint32_t Command_Present_Value( uint32_t object_instance); + BACNET_STACK_EXPORT bool Command_Present_Value_Set( uint32_t object_instance, uint32_t value); + BACNET_STACK_EXPORT bool Command_In_Process( uint32_t object_instance); + BACNET_STACK_EXPORT bool Command_In_Process_Set( uint32_t object_instance, bool value); + BACNET_STACK_EXPORT bool Command_All_Writes_Successful( uint32_t object_instance); + BACNET_STACK_EXPORT bool Command_All_Writes_Successful_Set( uint32_t object_instance, bool value); + BACNET_STACK_EXPORT bool Command_Change_Of_Value( uint32_t instance); + BACNET_STACK_EXPORT void Command_Change_Of_Value_Clear( uint32_t instance); + BACNET_STACK_EXPORT bool Command_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); float Command_COV_Increment( uint32_t instance); + BACNET_STACK_EXPORT void Command_COV_Increment_Set( uint32_t instance, float value); /* note: header of Intrinsic_Reporting function is required even when INTRINSIC_REPORTING is not defined */ + BACNET_STACK_EXPORT void Command_Intrinsic_Reporting( uint32_t object_instance); + BACNET_STACK_EXPORT void Command_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testCommand( Test * pTest); #endif diff --git a/src/bacnet/basic/object/credential_data_input.h b/src/bacnet/basic/object/credential_data_input.h index 6083a267..8b33385a 100644 --- a/src/bacnet/basic/object/credential_data_input.h +++ b/src/bacnet/basic/object/credential_data_input.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/timestamp.h" @@ -60,52 +61,69 @@ extern "C" { BACNET_TIMESTAMP timestamp; } CREDENTIAL_DATA_INPUT_DESCR; + BACNET_STACK_EXPORT void Credential_Data_Input_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Credential_Data_Input_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Credential_Data_Input_Count( void); + BACNET_STACK_EXPORT uint32_t Credential_Data_Input_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Credential_Data_Input_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Credential_Data_Input_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Credential_Data_Input_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Credential_Data_Input_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT bool Credential_Data_Input_Out_Of_Service( uint32_t instance); + BACNET_STACK_EXPORT void Credential_Data_Input_Out_Of_Service_Set( uint32_t instance, bool oos_flag); + BACNET_STACK_EXPORT int Credential_Data_Input_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Credential_Data_Input_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Credential_Data_Input_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Credential_Data_Input_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Credential_Data_Input_Cleanup( void); + BACNET_STACK_EXPORT void Credential_Data_Input_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testCredentialDataInput( Test * pTest); #endif diff --git a/src/bacnet/basic/object/csv.h b/src/bacnet/basic/object/csv.h index 326e5f88..79e8622e 100644 --- a/src/bacnet/basic/object/csv.h +++ b/src/bacnet/basic/object/csv.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/rp.h" @@ -36,55 +37,71 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void CharacterString_Value_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool CharacterString_Value_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned CharacterString_Value_Count( void); + BACNET_STACK_EXPORT uint32_t CharacterString_Value_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned CharacterString_Value_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT int CharacterString_Value_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool CharacterString_Value_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); /* optional API */ + BACNET_STACK_EXPORT bool CharacterString_Value_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool CharacterString_Value_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool CharacterString_Value_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT bool CharacterString_Value_Present_Value( uint32_t object_instance, BACNET_CHARACTER_STRING * value); + BACNET_STACK_EXPORT bool CharacterString_Value_Present_Value_Set( uint32_t object_instance, BACNET_CHARACTER_STRING * value); + BACNET_STACK_EXPORT bool CharacterString_Value_Description_Set( uint32_t object_instance, char *text_string); + BACNET_STACK_EXPORT bool CharacterString_Value_Out_Of_Service( uint32_t object_instance); + BACNET_STACK_EXPORT void CharacterString_Value_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testCharacterStringValue( Test * pTest); #endif diff --git a/src/bacnet/basic/object/device.h b/src/bacnet/basic/object/device.h index 8dc218b3..a3cff7ff 100644 --- a/src/bacnet/basic/object/device.h +++ b/src/bacnet/basic/object/device.h @@ -31,6 +31,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/wp.h" @@ -221,164 +222,223 @@ typedef struct devObj_s { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Device_Init( object_functions_t * object_table); + BACNET_STACK_EXPORT bool Device_Reinitialize( BACNET_REINITIALIZE_DEVICE_DATA * rd_data); + BACNET_STACK_EXPORT bool Device_Reinitialize_State_Set(BACNET_REINITIALIZED_STATE state); + BACNET_STACK_EXPORT BACNET_REINITIALIZED_STATE Device_Reinitialized_State( void); + BACNET_STACK_EXPORT rr_info_function Device_Objects_RR_Info( BACNET_OBJECT_TYPE object_type); + BACNET_STACK_EXPORT void Device_getCurrentDateTime( BACNET_DATE_TIME * DateTime); + BACNET_STACK_EXPORT int32_t Device_UTC_Offset(void); + BACNET_STACK_EXPORT void Device_UTC_Offset_Set(int16_t offset); + BACNET_STACK_EXPORT bool Device_Daylight_Savings_Status(void); bool Device_Align_Intervals(void); + BACNET_STACK_EXPORT bool Device_Align_Intervals_Set(bool flag); + BACNET_STACK_EXPORT uint32_t Device_Time_Sync_Interval(void); + BACNET_STACK_EXPORT bool Device_Time_Sync_Interval_Set(uint32_t value); + BACNET_STACK_EXPORT uint32_t Device_Interval_Offset(void); + BACNET_STACK_EXPORT bool Device_Interval_Offset_Set(uint32_t value); + BACNET_STACK_EXPORT void Device_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT void Device_Objects_Property_List( BACNET_OBJECT_TYPE object_type, uint32_t object_instance, struct special_property_list_t *pPropertyList); /* functions to support COV */ + BACNET_STACK_EXPORT bool Device_Encode_Value_List( BACNET_OBJECT_TYPE object_type, uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); bool Device_Value_List_Supported( BACNET_OBJECT_TYPE object_type); + BACNET_STACK_EXPORT bool Device_COV( BACNET_OBJECT_TYPE object_type, uint32_t object_instance); + BACNET_STACK_EXPORT void Device_COV_Clear( BACNET_OBJECT_TYPE object_type, uint32_t object_instance); + BACNET_STACK_EXPORT uint32_t Device_Object_Instance_Number( void); + BACNET_STACK_EXPORT bool Device_Set_Object_Instance_Number( uint32_t object_id); + BACNET_STACK_EXPORT bool Device_Valid_Object_Instance_Number( uint32_t object_id); + BACNET_STACK_EXPORT unsigned Device_Object_List_Count( void); + BACNET_STACK_EXPORT bool Device_Object_List_Identifier( uint32_t array_index, BACNET_OBJECT_TYPE *object_type, uint32_t * instance); + BACNET_STACK_EXPORT unsigned Device_Count( void); + BACNET_STACK_EXPORT uint32_t Device_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT bool Device_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Device_Set_Object_Name( BACNET_CHARACTER_STRING * object_name); /* Copy a child object name, given its ID. */ + BACNET_STACK_EXPORT bool Device_Object_Name_Copy( BACNET_OBJECT_TYPE object_type, uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Device_Object_Name_ANSI_Init(const char * object_name); + BACNET_STACK_EXPORT char * Device_Object_Name_ANSI(void); + BACNET_STACK_EXPORT BACNET_DEVICE_STATUS Device_System_Status( void); + BACNET_STACK_EXPORT int Device_Set_System_Status( BACNET_DEVICE_STATUS status, bool local); + BACNET_STACK_EXPORT const char *Device_Vendor_Name( void); + BACNET_STACK_EXPORT uint16_t Device_Vendor_Identifier( void); + BACNET_STACK_EXPORT void Device_Set_Vendor_Identifier( uint16_t vendor_id); + BACNET_STACK_EXPORT const char *Device_Model_Name( void); + BACNET_STACK_EXPORT bool Device_Set_Model_Name( const char *name, size_t length); + BACNET_STACK_EXPORT const char *Device_Firmware_Revision( void); + BACNET_STACK_EXPORT const char *Device_Application_Software_Version( void); + BACNET_STACK_EXPORT bool Device_Set_Application_Software_Version( const char *name, size_t length); + BACNET_STACK_EXPORT const char *Device_Description( void); + BACNET_STACK_EXPORT bool Device_Set_Description( const char *name, size_t length); + BACNET_STACK_EXPORT const char *Device_Location( void); + BACNET_STACK_EXPORT bool Device_Set_Location( const char *name, size_t length); /* some stack-centric constant values - no set methods */ + BACNET_STACK_EXPORT uint8_t Device_Protocol_Version( void); + BACNET_STACK_EXPORT uint8_t Device_Protocol_Revision( void); + BACNET_STACK_EXPORT BACNET_SEGMENTATION Device_Segmentation_Supported( void); + BACNET_STACK_EXPORT uint32_t Device_Database_Revision( void); + BACNET_STACK_EXPORT void Device_Set_Database_Revision( uint32_t revision); + BACNET_STACK_EXPORT void Device_Inc_Database_Revision( void); + BACNET_STACK_EXPORT bool Device_Valid_Object_Name( BACNET_CHARACTER_STRING * object_name, BACNET_OBJECT_TYPE *object_type, uint32_t * object_instance); + BACNET_STACK_EXPORT bool Device_Valid_Object_Id( BACNET_OBJECT_TYPE object_type, uint32_t object_instance); + BACNET_STACK_EXPORT int Device_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Device_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool DeviceGetRRInfo( BACNET_READ_RANGE_DATA * pRequest, /* Info on the request */ RR_PROP_INFO * pInfo); /* Where to put the information */ + BACNET_STACK_EXPORT int Device_Read_Property_Local( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Device_Write_Property_Local( BACNET_WRITE_PROPERTY_DATA * wp_data); #if defined(INTRINSIC_REPORTING) + BACNET_STACK_EXPORT void Device_local_reporting( void); #endif @@ -387,53 +447,70 @@ extern "C" { * Enable by defining BAC_ROUTING in config.h and including gw_device.c * in the build (lib/Makefile). */ + BACNET_STACK_EXPORT void Routing_Device_Init( uint32_t first_object_instance); + BACNET_STACK_EXPORT uint16_t Add_Routed_Device( uint32_t Object_Instance, BACNET_CHARACTER_STRING * Object_Name, const char *Description); + BACNET_STACK_EXPORT DEVICE_OBJECT_DATA *Get_Routed_Device_Object( int idx); + BACNET_STACK_EXPORT BACNET_ADDRESS *Get_Routed_Device_Address( int idx); + BACNET_STACK_EXPORT void routed_get_my_address( BACNET_ADDRESS * my_address); + BACNET_STACK_EXPORT bool Routed_Device_Address_Lookup( int idx, uint8_t address_len, uint8_t * mac_adress); + BACNET_STACK_EXPORT bool Routed_Device_GetNext( BACNET_ADDRESS * dest, int *DNET_list, int *cursor); + BACNET_STACK_EXPORT bool Routed_Device_Is_Valid_Network( uint16_t dest_net, int *DNET_list); + BACNET_STACK_EXPORT uint32_t Routed_Device_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT bool Routed_Device_Valid_Object_Instance_Number( uint32_t object_id); + BACNET_STACK_EXPORT bool Routed_Device_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT uint32_t Routed_Device_Object_Instance_Number( void); + BACNET_STACK_EXPORT bool Routed_Device_Set_Object_Instance_Number( uint32_t object_id); + BACNET_STACK_EXPORT bool Routed_Device_Set_Object_Name( uint8_t encoding, const char *value, size_t length); + BACNET_STACK_EXPORT bool Routed_Device_Set_Description( const char *name, size_t length); + BACNET_STACK_EXPORT void Routed_Device_Inc_Database_Revision( void); + BACNET_STACK_EXPORT int Routed_Device_Service_Approval( BACNET_CONFIRMED_SERVICE service, int service_argument, diff --git a/src/bacnet/basic/object/iv.h b/src/bacnet/basic/object/iv.h index bb6c2d52..c66f2e6b 100644 --- a/src/bacnet/basic/object/iv.h +++ b/src/bacnet/basic/object/iv.h @@ -35,6 +35,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/wp.h" @@ -44,72 +45,95 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Integer_Value_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Integer_Value_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Integer_Value_Count( void); + BACNET_STACK_EXPORT uint32_t Integer_Value_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Integer_Value_Instance_To_Index( uint32_t object_instance); + BACNET_STACK_EXPORT bool Integer_Value_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT int Integer_Value_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Integer_Value_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Integer_Value_Present_Value_Set( uint32_t object_instance, int32_t value, uint8_t priority); + BACNET_STACK_EXPORT int32_t Integer_Value_Present_Value( uint32_t object_instance); + BACNET_STACK_EXPORT bool Integer_Value_Change_Of_Value( uint32_t instance); + BACNET_STACK_EXPORT void Integer_Value_Change_Of_Value_Clear( uint32_t instance); + BACNET_STACK_EXPORT bool Integer_Value_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); + BACNET_STACK_EXPORT float Integer_Value_COV_Increment( uint32_t instance); + BACNET_STACK_EXPORT void Integer_Value_COV_Increment_Set( uint32_t instance, float value); + BACNET_STACK_EXPORT char *Integer_Value_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Integer_Value_Description_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT uint16_t Integer_Value_Units( uint32_t instance); + BACNET_STACK_EXPORT bool Integer_Value_Units_Set( uint32_t instance, uint16_t unit); + BACNET_STACK_EXPORT bool Integer_Value_Out_Of_Service( uint32_t instance); + BACNET_STACK_EXPORT void Integer_Value_Out_Of_Service_Set( uint32_t instance, bool oos_flag); + BACNET_STACK_EXPORT void Integer_Value_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testInteger_Value( Test * pTest); #endif diff --git a/src/bacnet/basic/object/lc.h b/src/bacnet/basic/object/lc.h index 1a447f1e..89990821 100644 --- a/src/bacnet/basic/object/lc.h +++ b/src/bacnet/basic/object/lc.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/rp.h" @@ -36,39 +37,51 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Load_Control_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT void Load_Control_State_Machine_Handler( void); + BACNET_STACK_EXPORT bool Load_Control_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Load_Control_Count( void); + BACNET_STACK_EXPORT uint32_t Load_Control_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Load_Control_Instance_To_Index( uint32_t object_instance); + BACNET_STACK_EXPORT bool Load_Control_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT void Load_Control_Init( void); + BACNET_STACK_EXPORT void Load_Control_State_Machine( int object_index); + BACNET_STACK_EXPORT int Load_Control_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Load_Control_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testLoadControl( Test * pTest); #endif diff --git a/src/bacnet/basic/object/lo.h b/src/bacnet/basic/object/lo.h index 44915c67..dd04a755 100644 --- a/src/bacnet/basic/object/lo.h +++ b/src/bacnet/basic/object/lo.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/rp.h" @@ -36,141 +37,188 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Lighting_Output_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Lighting_Output_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Lighting_Output_Count( void); + BACNET_STACK_EXPORT uint32_t Lighting_Output_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Lighting_Output_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Lighting_Output_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT float Lighting_Output_Present_Value( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Lighting_Output_Present_Value_Priority( uint32_t object_instance); + BACNET_STACK_EXPORT bool Lighting_Output_Present_Value_Set( uint32_t object_instance, float value, unsigned priority); + BACNET_STACK_EXPORT bool Lighting_Output_Present_Value_Relinquish( uint32_t object_instance, unsigned priority); + BACNET_STACK_EXPORT float Lighting_Output_Relinquish_Default( uint32_t object_instance); + BACNET_STACK_EXPORT bool Lighting_Output_Relinquish_Default_Set( uint32_t object_instance, float value); + BACNET_STACK_EXPORT bool Lighting_Output_Change_Of_Value( uint32_t instance); + BACNET_STACK_EXPORT void Lighting_Output_Change_Of_Value_Clear( uint32_t instance); + BACNET_STACK_EXPORT bool Lighting_Output_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); + BACNET_STACK_EXPORT float Lighting_Output_COV_Increment( uint32_t instance); + BACNET_STACK_EXPORT void Lighting_Output_COV_Increment_Set( uint32_t instance, float value); + BACNET_STACK_EXPORT bool Lighting_Output_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Lighting_Output_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT char *Lighting_Output_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Lighting_Output_Description_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT bool Lighting_Output_Out_Of_Service( uint32_t instance); + BACNET_STACK_EXPORT void Lighting_Output_Out_Of_Service_Set( uint32_t instance, bool oos_flag); + BACNET_STACK_EXPORT bool Lighting_Output_Lighting_Command_Set( uint32_t object_instance, BACNET_LIGHTING_COMMAND *value); + BACNET_STACK_EXPORT bool Lighting_Output_Lighting_Command( uint32_t object_instance, BACNET_LIGHTING_COMMAND *value); + BACNET_STACK_EXPORT BACNET_LIGHTING_IN_PROGRESS Lighting_Output_In_Progress( uint32_t object_instance); + BACNET_STACK_EXPORT bool Lighting_Output_In_Progress_Set( uint32_t object_instance, BACNET_LIGHTING_IN_PROGRESS in_progress); + BACNET_STACK_EXPORT float Lighting_Output_Tracking_Value( uint32_t object_instance); + BACNET_STACK_EXPORT bool Lighting_Output_Tracking_Value_Set( uint32_t object_instance, float value); + BACNET_STACK_EXPORT bool Lighting_Output_Blink_Warn_Enable( uint32_t object_instance); + BACNET_STACK_EXPORT bool Lighting_Output_Blink_Warn_Enable_Set( uint32_t object_instance, bool enable); + BACNET_STACK_EXPORT uint32_t Lighting_Output_Egress_Time( uint32_t object_instance); + BACNET_STACK_EXPORT bool Lighting_Output_Egress_Time_Set( uint32_t object_instance, uint32_t seconds); + BACNET_STACK_EXPORT bool Lighting_Output_Egress_Active( uint32_t object_instance); + BACNET_STACK_EXPORT uint32_t Lighting_Output_Default_Fade_Time( uint32_t object_instance); + BACNET_STACK_EXPORT bool Lighting_Output_Default_Fade_Time_Set( uint32_t object_instance, uint32_t milliseconds); + BACNET_STACK_EXPORT float Lighting_Output_Default_Ramp_Rate( uint32_t object_instance); + BACNET_STACK_EXPORT bool Lighting_Output_Default_Ramp_Rate_Set( uint32_t object_instance, float percent_per_second); + BACNET_STACK_EXPORT float Lighting_Output_Default_Step_Increment( uint32_t object_instance); + BACNET_STACK_EXPORT bool Lighting_Output_Default_Step_Increment_Set( uint32_t object_instance, float step_increment); + BACNET_STACK_EXPORT unsigned Lighting_Output_Default_Priority( uint32_t object_instance); + BACNET_STACK_EXPORT bool Lighting_Output_Default_Priority_Set( uint32_t object_instance, unsigned priority); + BACNET_STACK_EXPORT void Lighting_Output_Timer( uint16_t milliseconds); + BACNET_STACK_EXPORT void Lighting_Output_Init( void); + BACNET_STACK_EXPORT int Lighting_Output_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Lighting_Output_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testLightingOutput( Test * pTest); #endif diff --git a/src/bacnet/basic/object/lsp.h b/src/bacnet/basic/object/lsp.h index 893f45ab..60d2918b 100644 --- a/src/bacnet/basic/object/lsp.h +++ b/src/bacnet/basic/object/lsp.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/rp.h" @@ -36,32 +37,42 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Life_Safety_Point_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Life_Safety_Point_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Life_Safety_Point_Count( void); + BACNET_STACK_EXPORT uint32_t Life_Safety_Point_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Life_Safety_Point_Instance_To_Index( uint32_t object_instance); + BACNET_STACK_EXPORT bool Life_Safety_Point_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT void Life_Safety_Point_Init( void); + BACNET_STACK_EXPORT int Life_Safety_Point_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Life_Safety_Point_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testLifeSafetyPoint( Test * pTest); #endif diff --git a/src/bacnet/basic/object/ms-input.h b/src/bacnet/basic/object/ms-input.h index f3f8f3ae..2d9d16f4 100644 --- a/src/bacnet/basic/object/ms-input.h +++ b/src/bacnet/basic/object/ms-input.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/rp.h" @@ -36,93 +37,122 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Multistate_Input_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Multistate_Input_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Multistate_Input_Count( void); + BACNET_STACK_EXPORT uint32_t Multistate_Input_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Multistate_Input_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT int Multistate_Input_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Multistate_Input_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); /* optional API */ + BACNET_STACK_EXPORT bool Multistate_Input_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Multistate_Input_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Multistate_Input_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT uint32_t Multistate_Input_Present_Value( uint32_t object_instance); + BACNET_STACK_EXPORT bool Multistate_Input_Present_Value_Set( uint32_t object_instance, uint32_t value); + BACNET_STACK_EXPORT bool Multistate_Input_Change_Of_Value( uint32_t instance); + BACNET_STACK_EXPORT void Multistate_Input_Change_Of_Value_Clear( uint32_t instance); + BACNET_STACK_EXPORT bool Multistate_Input_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); + BACNET_STACK_EXPORT bool Multistate_Input_Out_Of_Service( uint32_t object_instance); + BACNET_STACK_EXPORT void Multistate_Input_Out_Of_Service_Set( uint32_t object_instance, bool value); + BACNET_STACK_EXPORT char *Multistate_Input_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Multistate_Input_Description_Set( uint32_t object_instance, char *text_string); + BACNET_STACK_EXPORT BACNET_RELIABILITY Multistate_Input_Reliability( uint32_t object_instance); + BACNET_STACK_EXPORT bool Multistate_Input_Reliability_Set( uint32_t object_instance, BACNET_RELIABILITY value); + BACNET_STACK_EXPORT bool Multistate_Input_State_Text_Set( uint32_t object_instance, uint32_t state_index, char *new_name); + BACNET_STACK_EXPORT bool Multistate_Input_Max_States_Set( uint32_t instance, uint32_t max_states_requested); + BACNET_STACK_EXPORT char *Multistate_Input_State_Text( uint32_t object_instance, uint32_t state_index); + BACNET_STACK_EXPORT bool Multistate_Input_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Multistate_Input_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Multistate_Input_Cleanup( void); + BACNET_STACK_EXPORT void Multistate_Input_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testMultistateInput( Test * pTest); #endif diff --git a/src/bacnet/basic/object/mso.h b/src/bacnet/basic/object/mso.h index 9636b390..99515b51 100644 --- a/src/bacnet/basic/object/mso.h +++ b/src/bacnet/basic/object/mso.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/rp.h" @@ -36,69 +37,91 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Multistate_Output_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Multistate_Output_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Multistate_Output_Count( void); + BACNET_STACK_EXPORT uint32_t Multistate_Output_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Multistate_Output_Instance_To_Index( uint32_t object_instance); + BACNET_STACK_EXPORT bool Multistate_Output_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT void Multistate_Output_Init( void); + BACNET_STACK_EXPORT int Multistate_Output_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Multistate_Output_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool Multistate_Output_Change_Of_Value( uint32_t instance); + BACNET_STACK_EXPORT void Multistate_Output_Change_Of_Value_Clear( uint32_t instance); + BACNET_STACK_EXPORT bool Multistate_Output_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); + BACNET_STACK_EXPORT uint32_t Multistate_Output_Present_Value( uint32_t instance); + BACNET_STACK_EXPORT bool Multistate_Output_Present_Value_Set( uint32_t instance, unsigned value, unsigned priority); + BACNET_STACK_EXPORT bool Multistate_Output_Present_Value_Relinquish( uint32_t instance, unsigned priority); + BACNET_STACK_EXPORT bool Multistate_Output_Out_Of_Service( uint32_t instance); + BACNET_STACK_EXPORT void Multistate_Output_Out_Of_Service_Set( uint32_t instance, bool value); + BACNET_STACK_EXPORT char *Multistate_Output_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Multistate_Output_Description_Set( uint32_t object_instance, char *text_string); + BACNET_STACK_EXPORT bool Multistate_Output_State_Text_Set( uint32_t object_instance, uint32_t state_index, char *new_name); + BACNET_STACK_EXPORT bool Multistate_Output_Max_States_Set( uint32_t instance, uint32_t max_states_requested); + BACNET_STACK_EXPORT char *Multistate_Output_State_Text( uint32_t object_instance, uint32_t state_index); @@ -106,6 +129,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testMultistateOutput( Test * pTest); #endif diff --git a/src/bacnet/basic/object/msv.h b/src/bacnet/basic/object/msv.h index 5e81d22d..a9793384 100644 --- a/src/bacnet/basic/object/msv.h +++ b/src/bacnet/basic/object/msv.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/rp.h" @@ -36,23 +37,30 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Multistate_Value_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Multistate_Value_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Multistate_Value_Count( void); + BACNET_STACK_EXPORT uint32_t Multistate_Value_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Multistate_Value_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT int Multistate_Value_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Multistate_Value_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); @@ -60,56 +68,72 @@ extern "C" { bool Multistate_Value_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Multistate_Value_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Multistate_Value_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT uint32_t Multistate_Value_Present_Value( uint32_t object_instance); + BACNET_STACK_EXPORT bool Multistate_Value_Present_Value_Set( uint32_t object_instance, uint32_t value); + BACNET_STACK_EXPORT bool Multistate_Value_Change_Of_Value( uint32_t instance); + BACNET_STACK_EXPORT void Multistate_Value_Change_Of_Value_Clear( uint32_t instance); + BACNET_STACK_EXPORT bool Multistate_Value_Encode_Value_List( uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); + BACNET_STACK_EXPORT bool Multistate_Value_Out_Of_Service( uint32_t object_instance); + BACNET_STACK_EXPORT void Multistate_Value_Out_Of_Service_Set( uint32_t object_instance, bool value); + BACNET_STACK_EXPORT char *Multistate_Value_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Multistate_Value_Description_Set( uint32_t object_instance, char *text_string); + BACNET_STACK_EXPORT bool Multistate_Value_State_Text_Set( uint32_t object_instance, uint32_t state_index, char *new_name); + BACNET_STACK_EXPORT bool Multistate_Value_Max_States_Set( uint32_t instance, uint32_t max_states_requested); + BACNET_STACK_EXPORT char *Multistate_Value_State_Text( uint32_t object_instance, uint32_t state_index); + BACNET_STACK_EXPORT void Multistate_Value_Init( void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testMultistateValue( Test * pTest); #endif diff --git a/src/bacnet/basic/object/nc.h b/src/bacnet/basic/object/nc.h index fab321a3..16cc6912 100644 --- a/src/bacnet/basic/object/nc.h +++ b/src/bacnet/basic/object/nc.h @@ -25,6 +25,7 @@ #ifndef NC_H #define NC_H +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/event.h" @@ -97,39 +98,50 @@ BACnetRecipient ::= CHOICE { + BACNET_STACK_EXPORT void Notification_Class_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT void Notification_Class_Init( void); bool Notification_Class_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Notification_Class_Count( void); + BACNET_STACK_EXPORT uint32_t Notification_Class_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Notification_Class_Instance_To_Index( uint32_t object_instance); + BACNET_STACK_EXPORT bool Notification_Class_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT int Notification_Class_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Notification_Class_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT void Notification_Class_Get_Priorities( uint32_t Object_Instance, uint32_t * pPriorityArray); + BACNET_STACK_EXPORT void Notification_Class_common_reporting_function( BACNET_EVENT_NOTIFICATION_DATA * event_data); + BACNET_STACK_EXPORT void Notification_Class_find_recipient( void); #endif /* defined(INTRINSIC_REPORTING) */ diff --git a/src/bacnet/basic/object/netport.h b/src/bacnet/basic/object/netport.h index 315fa612..20d0abcd 100644 --- a/src/bacnet/basic/object/netport.h +++ b/src/bacnet/basic/object/netport.h @@ -36,6 +36,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -46,263 +47,343 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Network_Port_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT void Network_Port_Property_List( uint32_t object_instance, const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Network_Port_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT bool Network_Port_Name_Set( uint32_t object_instance, char *new_name); + BACNET_STACK_EXPORT char *Network_Port_Description( uint32_t instance); + BACNET_STACK_EXPORT bool Network_Port_Description_Set( uint32_t instance, char *new_name); + BACNET_STACK_EXPORT BACNET_RELIABILITY Network_Port_Reliability( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_Reliability_Set( uint32_t object_instance, BACNET_RELIABILITY value); + BACNET_STACK_EXPORT bool Network_Port_Out_Of_Service( uint32_t instance); + BACNET_STACK_EXPORT bool Network_Port_Out_Of_Service_Set( uint32_t instance, bool oos_flag); + BACNET_STACK_EXPORT uint8_t Network_Port_Type( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_Type_Set( uint32_t object_instance, uint8_t value); + BACNET_STACK_EXPORT uint16_t Network_Port_Network_Number( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_Network_Number_Set( uint32_t object_instance, uint16_t value); + BACNET_STACK_EXPORT BACNET_PORT_QUALITY Network_Port_Quality( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_Quality_Set( uint32_t object_instance, BACNET_PORT_QUALITY value); + BACNET_STACK_EXPORT bool Network_Port_MAC_Address( uint32_t object_instance, BACNET_OCTET_STRING *mac_address); + BACNET_STACK_EXPORT bool Network_Port_MAC_Address_Set( uint32_t object_instance, uint8_t *mac_src, uint8_t mac_len); + BACNET_STACK_EXPORT uint16_t Network_Port_APDU_Length( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_APDU_Length_Set( uint32_t object_instance, uint16_t value); + BACNET_STACK_EXPORT uint8_t Network_Port_MSTP_Max_Master( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_MSTP_Max_Master_Set( uint32_t object_instance, uint8_t value); + BACNET_STACK_EXPORT uint8_t Network_Port_MSTP_Max_Info_Frames( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_MSTP_Max_Info_Frames_Set( uint32_t object_instance, uint8_t value); + BACNET_STACK_EXPORT float Network_Port_Link_Speed( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_Link_Speed_Set( uint32_t object_instance, float value); + BACNET_STACK_EXPORT bool Network_Port_IP_Address( uint32_t object_instance, BACNET_OCTET_STRING *ip_address); + BACNET_STACK_EXPORT bool Network_Port_IP_Address_Get( uint32_t object_instance, uint8_t *a, uint8_t *b, uint8_t *c, uint8_t *d); + BACNET_STACK_EXPORT bool Network_Port_IP_Address_Set( uint32_t object_instance, uint8_t a, uint8_t b, uint8_t c, uint8_t d); + BACNET_STACK_EXPORT uint8_t Network_Port_IP_Subnet_Prefix( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_IP_Subnet_Prefix_Set( uint32_t object_instance, uint8_t value); + BACNET_STACK_EXPORT bool Network_Port_IP_Subnet( uint32_t object_instance, BACNET_OCTET_STRING *subnet_mask); + BACNET_STACK_EXPORT bool Network_Port_IP_Subnet_Get( uint32_t object_instance, uint8_t *a, uint8_t *b, uint8_t *c, uint8_t *d); + BACNET_STACK_EXPORT bool Network_Port_IP_Subnet_Set( uint32_t object_instance, uint8_t a, uint8_t b, uint8_t c, uint8_t d); + BACNET_STACK_EXPORT bool Network_Port_IP_Gateway( uint32_t object_instance, BACNET_OCTET_STRING *subnet_mask); + BACNET_STACK_EXPORT bool Network_Port_IP_Gateway_Get( uint32_t object_instance, uint8_t *a, uint8_t *b, uint8_t *c, uint8_t *d); + BACNET_STACK_EXPORT bool Network_Port_IP_Gateway_Set( uint32_t object_instance, uint8_t a, uint8_t b, uint8_t c, uint8_t d); + BACNET_STACK_EXPORT bool Network_Port_IP_DNS_Server( uint32_t object_instance, unsigned index, BACNET_OCTET_STRING *subnet_mask); + BACNET_STACK_EXPORT bool Network_Port_IP_DNS_Server_Get( uint32_t object_instance, unsigned index, uint8_t *a, uint8_t *b, uint8_t *c, uint8_t *d); + BACNET_STACK_EXPORT bool Network_Port_IP_DNS_Server_Set( uint32_t object_instance, unsigned index, uint8_t a, uint8_t b, uint8_t c, uint8_t d); + BACNET_STACK_EXPORT uint16_t Network_Port_BIP_Port( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_BIP_Port_Set( uint32_t object_instance, uint16_t value); + BACNET_STACK_EXPORT BACNET_IP_MODE Network_Port_BIP_Mode( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_BIP_Mode_Set( uint32_t object_instance, BACNET_IP_MODE value); + BACNET_STACK_EXPORT bool Network_Port_BBMD_Accept_FD_Registrations( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_BBMD_Accept_FD_Registrations_Set( uint32_t object_instance, bool value); + BACNET_STACK_EXPORT BACNET_IP_MODE Network_Port_BIP6_Mode( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_BIP6_Mode_Set( uint32_t object_instance, BACNET_IP_MODE value); + BACNET_STACK_EXPORT bool Network_Port_IPv6_Address( uint32_t object_instance, BACNET_OCTET_STRING *ip_address); + BACNET_STACK_EXPORT bool Network_Port_IPv6_Address_Set( uint32_t object_instance, uint8_t *ip_address); + BACNET_STACK_EXPORT bool Network_Port_IPv6_Multicast_Address( uint32_t object_instance, BACNET_OCTET_STRING *ip_address); + BACNET_STACK_EXPORT bool Network_Port_IPv6_Multicast_Address_Set( uint32_t object_instance, uint8_t *ip_address); + BACNET_STACK_EXPORT uint8_t Network_Port_IPv6_Subnet_Prefix( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_IPv6_Subnet_Prefix_Set( uint32_t object_instance, uint8_t value); + BACNET_STACK_EXPORT bool Network_Port_IPv6_Gateway( uint32_t object_instance, BACNET_OCTET_STRING *ip_address); + BACNET_STACK_EXPORT bool Network_Port_IPv6_Gateway_Set( uint32_t object_instance, uint8_t *ip_address); + BACNET_STACK_EXPORT bool Network_Port_IPv6_DNS_Server( uint32_t object_instance, unsigned dns_index, BACNET_OCTET_STRING *ip_address); + BACNET_STACK_EXPORT bool Network_Port_IPv6_DNS_Server_Set( uint32_t object_instance, unsigned dns_index, uint8_t *ip_address); + BACNET_STACK_EXPORT bool Network_Port_IPv6_DHCP_Server( uint32_t object_instance, BACNET_OCTET_STRING *ip_address); + BACNET_STACK_EXPORT bool Network_Port_IPv6_DHCP_Server_Set( uint32_t object_instance, uint8_t *ip_address); + BACNET_STACK_EXPORT bool Network_Port_IPv6_Zone_Index( uint32_t object_instance, BACNET_CHARACTER_STRING *zone_index); + BACNET_STACK_EXPORT bool Network_Port_IPv6_Gateway_Zone_Index_Set( uint32_t object_instance, char *zone_index); + BACNET_STACK_EXPORT uint16_t Network_Port_BIP6_Port( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_BIP6_Port_Set( uint32_t object_instance, uint16_t value); + BACNET_STACK_EXPORT bool Network_Port_Changes_Pending( uint32_t instance); + BACNET_STACK_EXPORT bool Network_Port_Changes_Pending_Set( uint32_t instance, bool flag); + BACNET_STACK_EXPORT bool Network_Port_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Network_Port_Count( void); + BACNET_STACK_EXPORT uint32_t Network_Port_Index_To_Instance( unsigned find_index); + BACNET_STACK_EXPORT unsigned Network_Port_Instance_To_Index( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_Object_Instance_Number_Set( unsigned index, uint32_t object_instance); + BACNET_STACK_EXPORT int Network_Port_Read_Range_BDT( uint8_t * apdu, BACNET_READ_RANGE_DATA * pRequest); + BACNET_STACK_EXPORT int Network_Port_Read_Range_FDT( uint8_t * apdu, BACNET_READ_RANGE_DATA * pRequest); + BACNET_STACK_EXPORT bool Network_Port_Read_Range( BACNET_READ_RANGE_DATA * pRequest, RR_PROP_INFO * pInfo); + BACNET_STACK_EXPORT bool Network_Port_Create( uint32_t object_instance); + BACNET_STACK_EXPORT bool Network_Port_Delete( uint32_t object_instance); + BACNET_STACK_EXPORT void Network_Port_Cleanup( void); + BACNET_STACK_EXPORT void Network_Port_Init( void); /* handling for read property service */ + BACNET_STACK_EXPORT int Network_Port_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); /* handling for write property service */ + BACNET_STACK_EXPORT bool Network_Port_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); diff --git a/src/bacnet/basic/object/osv.h b/src/bacnet/basic/object/osv.h index 5f005c57..57cf99cf 100644 --- a/src/bacnet/basic/object/osv.h +++ b/src/bacnet/basic/object/osv.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/wp.h" @@ -43,49 +44,69 @@ extern "C" { } OCTETSTRING_VALUE_DESCR; + BACNET_STACK_EXPORT void OctetString_Value_Property_Lists(const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool OctetString_Value_Valid_Instance(uint32_t object_instance); + BACNET_STACK_EXPORT unsigned OctetString_Value_Count(void); + BACNET_STACK_EXPORT uint32_t OctetString_Value_Index_To_Instance(unsigned index); + BACNET_STACK_EXPORT unsigned OctetString_Value_Instance_To_Index(uint32_t object_instance); + BACNET_STACK_EXPORT bool OctetString_Value_Object_Name(uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT int OctetString_Value_Read_Property(BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool OctetString_Value_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool OctetString_Value_Present_Value_Set(uint32_t object_instance, BACNET_OCTET_STRING * value, uint8_t priority); + BACNET_STACK_EXPORT BACNET_OCTET_STRING *OctetString_Value_Present_Value(uint32_t object_instance); + BACNET_STACK_EXPORT bool OctetString_Value_Change_Of_Value(uint32_t instance); + BACNET_STACK_EXPORT void OctetString_Value_Change_Of_Value_Clear(uint32_t instance); + BACNET_STACK_EXPORT bool OctetString_Value_Encode_Value_List(uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); + BACNET_STACK_EXPORT char *OctetString_Value_Description(uint32_t instance); + BACNET_STACK_EXPORT bool OctetString_Value_Description_Set(uint32_t instance, char *new_name); + BACNET_STACK_EXPORT bool OctetString_Value_Out_Of_Service(uint32_t instance); + BACNET_STACK_EXPORT void OctetString_Value_Out_Of_Service_Set(uint32_t instance, bool oos_flag); /* note: header of Intrinsic_Reporting function is required even when INTRINSIC_REPORTING is not defined */ + BACNET_STACK_EXPORT void OctetString_Value_Intrinsic_Reporting(uint32_t object_instance); + BACNET_STACK_EXPORT void OctetString_Value_Init(void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testOctetString_Value(Test * pTest); #endif diff --git a/src/bacnet/basic/object/piv.h b/src/bacnet/basic/object/piv.h index 4929a59a..d06f06d4 100644 --- a/src/bacnet/basic/object/piv.h +++ b/src/bacnet/basic/object/piv.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacerror.h" #include "bacnet/wp.h" @@ -43,49 +44,68 @@ extern "C" { } POSITIVEINTEGER_VALUE_DESCR; + BACNET_STACK_EXPORT void PositiveInteger_Value_Property_Lists(const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool PositiveInteger_Value_Valid_Instance(uint32_t object_instance); unsigned PositiveInteger_Value_Count(void); + BACNET_STACK_EXPORT uint32_t PositiveInteger_Value_Index_To_Instance(unsigned index); + BACNET_STACK_EXPORT unsigned PositiveInteger_Value_Instance_To_Index(uint32_t object_instance); + BACNET_STACK_EXPORT bool PositiveInteger_Value_Object_Name(uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT int PositiveInteger_Value_Read_Property(BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool PositiveInteger_Value_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT bool PositiveInteger_Value_Present_Value_Set(uint32_t object_instance, uint32_t value, uint8_t priority); + BACNET_STACK_EXPORT uint32_t PositiveInteger_Value_Present_Value(uint32_t object_instance); + BACNET_STACK_EXPORT bool PositiveInteger_Value_Change_Of_Value(uint32_t instance); + BACNET_STACK_EXPORT void PositiveInteger_Value_Change_Of_Value_Clear(uint32_t instance); + BACNET_STACK_EXPORT bool PositiveInteger_Value_Encode_Value_List(uint32_t object_instance, BACNET_PROPERTY_VALUE * value_list); + BACNET_STACK_EXPORT char *PositiveInteger_Value_Description(uint32_t instance); + BACNET_STACK_EXPORT bool PositiveInteger_Value_Description_Set(uint32_t instance, char *new_name); + BACNET_STACK_EXPORT bool PositiveInteger_Value_Out_Of_Service(uint32_t instance); + BACNET_STACK_EXPORT void PositiveInteger_Value_Out_Of_Service_Set(uint32_t instance, bool oos_flag); /* note: header of Intrinsic_Reporting function is required even when INTRINSIC_REPORTING is not defined */ + BACNET_STACK_EXPORT void PositiveInteger_Value_Intrinsic_Reporting(uint32_t object_instance); + BACNET_STACK_EXPORT void PositiveInteger_Value_Init(void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testPositiveInteger_Value(Test * pTest); #endif diff --git a/src/bacnet/basic/object/schedule.h b/src/bacnet/basic/object/schedule.h index a82d2a95..7c6a23e7 100644 --- a/src/bacnet/basic/object/schedule.h +++ b/src/bacnet/basic/object/schedule.h @@ -28,6 +28,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacapp.h" #include "bacnet/datetime.h" @@ -71,33 +72,46 @@ extern "C" { bool Out_Of_Service; } SCHEDULE_DESCR; + BACNET_STACK_EXPORT void Schedule_Property_Lists(const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Schedule_Valid_Instance(uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Schedule_Count(void); + BACNET_STACK_EXPORT uint32_t Schedule_Index_To_Instance(unsigned index); + BACNET_STACK_EXPORT unsigned Schedule_Instance_To_Index(uint32_t instance); + BACNET_STACK_EXPORT void Schedule_Init(void); + BACNET_STACK_EXPORT void Schedule_Out_Of_Service_Set( uint32_t object_instance, bool value); + BACNET_STACK_EXPORT bool Schedule_Out_Of_Service( uint32_t object_instance); + BACNET_STACK_EXPORT bool Schedule_Object_Name(uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT int Schedule_Read_Property(BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Schedule_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data); /* utility functions for calculating current Present Value * if Exception Schedule is to be added, these functions must take that into account */ + BACNET_STACK_EXPORT bool Schedule_In_Effective_Period(SCHEDULE_DESCR * desc, BACNET_DATE * date); + BACNET_STACK_EXPORT void Schedule_Recalculate_PV(SCHEDULE_DESCR * desc, BACNET_WEEKDAY wday, BACNET_TIME * time); diff --git a/src/bacnet/basic/object/trendlog.h b/src/bacnet/basic/object/trendlog.h index cef76c1a..00210e48 100644 --- a/src/bacnet/basic/object/trendlog.h +++ b/src/bacnet/basic/object/trendlog.h @@ -28,6 +28,7 @@ #include #include #include /* for time_t */ +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/cov.h" #include "bacnet/rp.h" @@ -123,74 +124,95 @@ extern "C" { #define TL_TYPE_ANY 10 /* We don't support this particular can of worms! */ + BACNET_STACK_EXPORT void Trend_Log_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); + BACNET_STACK_EXPORT bool Trend_Log_Valid_Instance( uint32_t object_instance); + BACNET_STACK_EXPORT unsigned Trend_Log_Count( void); + BACNET_STACK_EXPORT uint32_t Trend_Log_Index_To_Instance( unsigned index); + BACNET_STACK_EXPORT unsigned Trend_Log_Instance_To_Index( uint32_t instance); + BACNET_STACK_EXPORT bool Trend_Log_Object_Instance_Add( uint32_t instance); + BACNET_STACK_EXPORT bool Trend_Log_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING * object_name); + BACNET_STACK_EXPORT int Trend_Log_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT bool Trend_Log_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT void Trend_Log_Init( void); + BACNET_STACK_EXPORT void TL_Insert_Status_Rec( int iLog, BACNET_LOG_STATUS eStatus, bool bState); + BACNET_STACK_EXPORT bool TL_Is_Enabled( int iLog); + BACNET_STACK_EXPORT time_t TL_BAC_Time_To_Local( BACNET_DATE_TIME * SourceTime); + BACNET_STACK_EXPORT void TL_Local_Time_To_BAC( BACNET_DATE_TIME * DestTime, time_t SourceTime); + BACNET_STACK_EXPORT int TL_encode_entry( uint8_t * apdu, int iLog, int iEntry); + BACNET_STACK_EXPORT int TL_encode_by_position( uint8_t * apdu, BACNET_READ_RANGE_DATA * pRequest); + BACNET_STACK_EXPORT int TL_encode_by_sequence( uint8_t * apdu, BACNET_READ_RANGE_DATA * pRequest); + BACNET_STACK_EXPORT int TL_encode_by_time( uint8_t * apdu, BACNET_READ_RANGE_DATA * pRequest); + BACNET_STACK_EXPORT bool TrendLogGetRRInfo( BACNET_READ_RANGE_DATA * pRequest, /* Info on the request */ RR_PROP_INFO * pInfo); /* Where to put the information */ + BACNET_STACK_EXPORT int rr_trend_log_encode( uint8_t * apdu, BACNET_READ_RANGE_DATA * pRequest); + BACNET_STACK_EXPORT void trend_log_timer( uint16_t uSeconds); diff --git a/src/bacnet/basic/service/h_alarm_ack.h b/src/bacnet/basic/service/h_alarm_ack.h index f2c35ca3..2dd06452 100644 --- a/src/bacnet/basic/service/h_alarm_ack.h +++ b/src/bacnet/basic/service/h_alarm_ack.h @@ -30,6 +30,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -39,12 +40,14 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_alarm_ack( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src, BACNET_CONFIRMED_SERVICE_DATA * service_data); + BACNET_STACK_EXPORT void handler_alarm_ack_set( BACNET_OBJECT_TYPE object_type, alarm_ack_function pFunction); diff --git a/src/bacnet/basic/service/h_apdu.h b/src/bacnet/basic/service/h_apdu.h index 25aa048c..9aa1b526 100644 --- a/src/bacnet/basic/service/h_apdu.h +++ b/src/bacnet/basic/service/h_apdu.h @@ -30,6 +30,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -110,49 +111,60 @@ extern "C" { uint8_t invoke_id, uint8_t reject_reason); + BACNET_STACK_EXPORT void apdu_set_confirmed_ack_handler( BACNET_CONFIRMED_SERVICE service_choice, confirmed_ack_function pFunction); + BACNET_STACK_EXPORT void apdu_set_confirmed_simple_ack_handler( BACNET_CONFIRMED_SERVICE service_choice, confirmed_simple_ack_function pFunction); /* configure reject for confirmed services that are not supported */ + BACNET_STACK_EXPORT void apdu_set_unrecognized_service_handler_handler( confirmed_function pFunction); + BACNET_STACK_EXPORT void apdu_set_confirmed_handler( BACNET_CONFIRMED_SERVICE service_choice, confirmed_function pFunction); + BACNET_STACK_EXPORT void apdu_set_unconfirmed_handler( BACNET_UNCONFIRMED_SERVICE service_choice, unconfirmed_function pFunction); /* returns true if the service is supported by a handler */ + BACNET_STACK_EXPORT bool apdu_service_supported( BACNET_SERVICES_SUPPORTED service_supported); /* Function to translate a SERVICE_SUPPORTED_ enum to its SERVICE_CONFIRMED_ * or SERVICE_UNCONFIRMED_ index. */ + BACNET_STACK_EXPORT bool apdu_service_supported_to_index( BACNET_SERVICES_SUPPORTED service_supported, size_t * index, bool * bIsConfirmed); + BACNET_STACK_EXPORT void apdu_set_error_handler( BACNET_CONFIRMED_SERVICE service_choice, error_function pFunction); + BACNET_STACK_EXPORT void apdu_set_abort_handler( abort_function pFunction); + BACNET_STACK_EXPORT void apdu_set_reject_handler( reject_function pFunction); + BACNET_STACK_EXPORT uint16_t apdu_decode_confirmed_service_request( uint8_t * apdu, /* APDU data */ uint16_t apdu_len, @@ -161,15 +173,20 @@ extern "C" { uint8_t ** service_request, uint16_t * service_request_len); + BACNET_STACK_EXPORT uint16_t apdu_timeout( void); + BACNET_STACK_EXPORT void apdu_timeout_set( uint16_t value); + BACNET_STACK_EXPORT uint8_t apdu_retries( void); + BACNET_STACK_EXPORT void apdu_retries_set( uint8_t value); + BACNET_STACK_EXPORT void apdu_handler( BACNET_ADDRESS * src, /* source address */ uint8_t * apdu, /* APDU data */ diff --git a/src/bacnet/basic/service/h_arf.h b/src/bacnet/basic/service/h_arf.h index bd1eb019..5c12aa7b 100644 --- a/src/bacnet/basic/service/h_arf.h +++ b/src/bacnet/basic/service/h_arf.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT void handler_atomic_read_file(uint8_t* service_request, uint16_t service_len, BACNET_ADDRESS* src, BACNET_CONFIRMED_SERVICE_DATA* service_data); diff --git a/src/bacnet/basic/service/h_arf_a.h b/src/bacnet/basic/service/h_arf_a.h index 80a8c6aa..033449ba 100644 --- a/src/bacnet/basic/service/h_arf_a.h +++ b/src/bacnet/basic/service/h_arf_a.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT void handler_atomic_read_file_ack( uint8_t* service_request, uint16_t service_len, BACNET_ADDRESS* src, BACNET_CONFIRMED_SERVICE_ACK_DATA* service_data); diff --git a/src/bacnet/basic/service/h_awf.h b/src/bacnet/basic/service/h_awf.h index 8adb4993..db139a7d 100644 --- a/src/bacnet/basic/service/h_awf.h +++ b/src/bacnet/basic/service/h_awf.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT void handler_atomic_write_file(uint8_t* service_request, uint16_t service_len, BACNET_ADDRESS* src, BACNET_CONFIRMED_SERVICE_DATA* service_data); diff --git a/src/bacnet/basic/service/h_ccov.h b/src/bacnet/basic/service/h_ccov.h index 61ea5b81..ddd7fa63 100644 --- a/src/bacnet/basic/service/h_ccov.h +++ b/src/bacnet/basic/service/h_ccov.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_ccov_notification( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_cov.h b/src/bacnet/basic/service/h_cov.h index 4291ec78..c9bd6baf 100644 --- a/src/bacnet/basic/service/h_cov.h +++ b/src/bacnet/basic/service/h_cov.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,19 +41,25 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_cov_subscribe( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src, BACNET_CONFIRMED_SERVICE_DATA * service_data); + BACNET_STACK_EXPORT bool handler_cov_fsm( void); + BACNET_STACK_EXPORT void handler_cov_task( void); + BACNET_STACK_EXPORT void handler_cov_timer_seconds( uint32_t elapsed_seconds); + BACNET_STACK_EXPORT void handler_cov_init( void); + BACNET_STACK_EXPORT int handler_cov_encode_subscriptions( uint8_t * apdu, int max_apdu); diff --git a/src/bacnet/basic/service/h_dcc.h b/src/bacnet/basic/service/h_dcc.h index 4c948011..de4bf565 100644 --- a/src/bacnet/basic/service/h_dcc.h +++ b/src/bacnet/basic/service/h_dcc.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,13 +41,16 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_device_communication_control( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src, BACNET_CONFIRMED_SERVICE_DATA * service_data); + BACNET_STACK_EXPORT void handler_dcc_password_set( char *new_password); + BACNET_STACK_EXPORT char *handler_dcc_password(void); #ifdef __cplusplus diff --git a/src/bacnet/basic/service/h_gas_a.h b/src/bacnet/basic/service/h_gas_a.h index bf7cf53b..771b71e3 100644 --- a/src/bacnet/basic/service/h_gas_a.h +++ b/src/bacnet/basic/service/h_gas_a.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void get_alarm_summary_ack_handler( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_get_alarm_sum.h b/src/bacnet/basic/service/h_get_alarm_sum.h index f80a79c5..d3cc76fe 100644 --- a/src/bacnet/basic/service/h_get_alarm_sum.h +++ b/src/bacnet/basic/service/h_get_alarm_sum.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -41,10 +42,12 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_get_alarm_summary_set( BACNET_OBJECT_TYPE object_type, get_alarm_summary_function pFunction); + BACNET_STACK_EXPORT void handler_get_alarm_summary( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_getevent.h b/src/bacnet/basic/service/h_getevent.h index 39a3401b..0145b4f1 100644 --- a/src/bacnet/basic/service/h_getevent.h +++ b/src/bacnet/basic/service/h_getevent.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -42,16 +43,19 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_get_event_information_set( BACNET_OBJECT_TYPE object_type, get_event_info_function pFunction); + BACNET_STACK_EXPORT void handler_get_event_information( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src, BACNET_CONFIRMED_SERVICE_DATA * service_data); + BACNET_STACK_EXPORT void ge_ack_print_data(BACNET_GET_EVENT_INFORMATION_DATA* data, uint32_t device_id); diff --git a/src/bacnet/basic/service/h_getevent_a.h b/src/bacnet/basic/service/h_getevent_a.h index 86aecbec..ef462693 100644 --- a/src/bacnet/basic/service/h_getevent_a.h +++ b/src/bacnet/basic/service/h_getevent_a.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void get_event_ack_handler( uint8_t *service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_iam.h b/src/bacnet/basic/service/h_iam.h index 250458fc..e4c2ccb6 100644 --- a/src/bacnet/basic/service/h_iam.h +++ b/src/bacnet/basic/service/h_iam.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,11 +41,13 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_i_am_add( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT void handler_i_am_bind( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_ihave.h b/src/bacnet/basic/service/h_ihave.h index e9a52f36..70438c08 100644 --- a/src/bacnet/basic/service/h_ihave.h +++ b/src/bacnet/basic/service/h_ihave.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_i_have( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_lso.h b/src/bacnet/basic/service/h_lso.h index b3e998ee..b454707d 100644 --- a/src/bacnet/basic/service/h_lso.h +++ b/src/bacnet/basic/service/h_lso.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_lso( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_noserv.h b/src/bacnet/basic/service/h_noserv.h index 85a29c5d..88b56f45 100644 --- a/src/bacnet/basic/service/h_noserv.h +++ b/src/bacnet/basic/service/h_noserv.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_unrecognized_service( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_rd.h b/src/bacnet/basic/service/h_rd.h index b4ec4d58..38723bd6 100644 --- a/src/bacnet/basic/service/h_rd.h +++ b/src/bacnet/basic/service/h_rd.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_reinitialize_device( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_rp.h b/src/bacnet/basic/service/h_rp.h index 848b9de1..1a1e26b1 100644 --- a/src/bacnet/basic/service/h_rp.h +++ b/src/bacnet/basic/service/h_rp.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_read_property( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_rp_a.h b/src/bacnet/basic/service/h_rp_a.h index 5f64d5e0..409133c1 100644 --- a/src/bacnet/basic/service/h_rp_a.h +++ b/src/bacnet/basic/service/h_rp_a.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -41,11 +42,13 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_read_property_ack( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src, BACNET_CONFIRMED_SERVICE_ACK_DATA * service_data); + BACNET_STACK_EXPORT void rp_ack_print_data( BACNET_READ_PROPERTY_DATA * data); diff --git a/src/bacnet/basic/service/h_rpm.h b/src/bacnet/basic/service/h_rpm.h index 944fc7f1..57f25e43 100644 --- a/src/bacnet/basic/service/h_rpm.h +++ b/src/bacnet/basic/service/h_rpm.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_read_property_multiple( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_rpm_a.h b/src/bacnet/basic/service/h_rpm_a.h index 37f34440..32d3385d 100644 --- a/src/bacnet/basic/service/h_rpm_a.h +++ b/src/bacnet/basic/service/h_rpm_a.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -41,15 +42,18 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_read_property_multiple_ack( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src, BACNET_CONFIRMED_SERVICE_ACK_DATA * service_data); + BACNET_STACK_EXPORT int rpm_ack_decode_service_request( uint8_t * apdu, int apdu_len, BACNET_READ_ACCESS_DATA * read_access_data); + BACNET_STACK_EXPORT void rpm_ack_print_data( BACNET_READ_ACCESS_DATA * rpm_data); diff --git a/src/bacnet/basic/service/h_rr.h b/src/bacnet/basic/service/h_rr.h index a8ec9dd4..68f65fa0 100644 --- a/src/bacnet/basic/service/h_rr.h +++ b/src/bacnet/basic/service/h_rr.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_read_range( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_rr_a.h b/src/bacnet/basic/service/h_rr_a.h index a2078086..4fe55c5e 100644 --- a/src/bacnet/basic/service/h_rr_a.h +++ b/src/bacnet/basic/service/h_rr_a.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_read_range_ack( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_ts.h b/src/bacnet/basic/service/h_ts.h index 789ac720..dd398f16 100644 --- a/src/bacnet/basic/service/h_ts.h +++ b/src/bacnet/basic/service/h_ts.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -43,28 +44,40 @@ extern "C" { #endif /* __cplusplus */ /* time synchronization handlers */ + BACNET_STACK_EXPORT void handler_timesync( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT void handler_timesync_utc( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src); /* time sync master features */ + BACNET_STACK_EXPORT int handler_timesync_encode_recipients( uint8_t * apdu, int max_apdu); + BACNET_STACK_EXPORT void handler_timesync_task(BACNET_DATE_TIME *bdatetime); + BACNET_STACK_EXPORT void handler_timesync_init(void); + BACNET_STACK_EXPORT bool handler_timesync_recipient_write( BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT uint32_t handler_timesync_interval(void); + BACNET_STACK_EXPORT bool handler_timesync_interval_set(uint32_t minutes); + BACNET_STACK_EXPORT uint32_t handler_timesync_interval_offset(void); + BACNET_STACK_EXPORT bool handler_timesync_interval_offset_set(uint32_t minutes); bool handler_timesync_interval_align(void); + BACNET_STACK_EXPORT bool handler_timesync_interval_align_set(bool flag); + BACNET_STACK_EXPORT bool handler_timesync_recipient_address_set( unsigned index, BACNET_ADDRESS * address); diff --git a/src/bacnet/basic/service/h_ucov.h b/src/bacnet/basic/service/h_ucov.h index 235b2919..2eca8776 100644 --- a/src/bacnet/basic/service/h_ucov.h +++ b/src/bacnet/basic/service/h_ucov.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_ucov_notification( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_upt.h b/src/bacnet/basic/service/h_upt.h index 3278a136..a9ffedcd 100644 --- a/src/bacnet/basic/service/h_upt.h +++ b/src/bacnet/basic/service/h_upt.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -41,10 +42,12 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_unconfirmed_private_transfer( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT void private_transfer_print_data( BACNET_PRIVATE_TRANSFER_DATA *private_data); diff --git a/src/bacnet/basic/service/h_whohas.h b/src/bacnet/basic/service/h_whohas.h index c78c7722..73016cab 100644 --- a/src/bacnet/basic/service/h_whohas.h +++ b/src/bacnet/basic/service/h_whohas.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,11 +41,13 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_who_has( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT void handler_who_has_for_routing( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_whois.h b/src/bacnet/basic/service/h_whois.h index 9aad727b..11bb3c84 100644 --- a/src/bacnet/basic/service/h_whois.h +++ b/src/bacnet/basic/service/h_whois.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/apdu.h" @@ -40,21 +41,25 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_who_is( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT void handler_who_is_unicast( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT void handler_who_is_bcast_for_routing( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src); + BACNET_STACK_EXPORT void handler_who_is_unicast_for_routing( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/h_wp.h b/src/bacnet/basic/service/h_wp.h index c8b50ca5..e28977eb 100644 --- a/src/bacnet/basic/service/h_wp.h +++ b/src/bacnet/basic/service/h_wp.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,12 +42,14 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_write_property( uint8_t * service_request, uint16_t service_len, BACNET_ADDRESS * src, BACNET_CONFIRMED_SERVICE_DATA * service_data); + BACNET_STACK_EXPORT bool WPValidateString( BACNET_APPLICATION_DATA_VALUE * pValue, int iMaxLen, @@ -54,6 +57,7 @@ extern "C" { BACNET_ERROR_CLASS * pErrorClass, BACNET_ERROR_CODE * pErrorCode); + BACNET_STACK_EXPORT bool WPValidateArgType( BACNET_APPLICATION_DATA_VALUE * pValue, uint8_t ucExpectedType, diff --git a/src/bacnet/basic/service/h_wpm.h b/src/bacnet/basic/service/h_wpm.h index 921c42f0..99f87904 100644 --- a/src/bacnet/basic/service/h_wpm.h +++ b/src/bacnet/basic/service/h_wpm.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,6 +42,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void handler_write_property_multiple( uint8_t * service_request, uint16_t service_len, diff --git a/src/bacnet/basic/service/s_abort.h b/src/bacnet/basic/service/s_abort.h index 2885b2ec..b3f6117b 100644 --- a/src/bacnet/basic/service/s_abort.h +++ b/src/bacnet/basic/service/s_abort.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -42,6 +43,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int Send_Abort_To_Network( uint8_t * buffer, BACNET_ADDRESS *dest, @@ -49,6 +51,7 @@ extern "C" { BACNET_ABORT_REASON reason, bool server); + BACNET_STACK_EXPORT int abort_encode_pdu( uint8_t * buffer, BACNET_ADDRESS * dest, diff --git a/src/bacnet/basic/service/s_ack_alarm.h b/src/bacnet/basic/service/s_ack_alarm.h index 8fa6fe81..9a1f6412 100644 --- a/src/bacnet/basic/service/s_ack_alarm.h +++ b/src/bacnet/basic/service/s_ack_alarm.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -42,6 +43,7 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT uint8_t Send_Alarm_Acknowledgement(uint32_t device_id, BACNET_ALARM_ACK_DATA* data); diff --git a/src/bacnet/basic/service/s_arfs.h b/src/bacnet/basic/service/s_arfs.h index 3ea13ff1..5881f8b3 100644 --- a/src/bacnet/basic/service/s_arfs.h +++ b/src/bacnet/basic/service/s_arfs.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,6 +42,7 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT uint8_t Send_Atomic_Read_File_Stream(uint32_t device_id, uint32_t file_instance, int fileStartPosition, unsigned requestedOctetCount); diff --git a/src/bacnet/basic/service/s_awfs.h b/src/bacnet/basic/service/s_awfs.h index ebfe3b7c..22397328 100644 --- a/src/bacnet/basic/service/s_awfs.h +++ b/src/bacnet/basic/service/s_awfs.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,6 +42,7 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT uint8_t Send_Atomic_Write_File_Stream(uint32_t device_id, uint32_t file_instance, int fileStartPosition, diff --git a/src/bacnet/basic/service/s_cevent.h b/src/bacnet/basic/service/s_cevent.h index 82651ea5..ab4fd8db 100644 --- a/src/bacnet/basic/service/s_cevent.h +++ b/src/bacnet/basic/service/s_cevent.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -42,6 +43,7 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT uint8_t Send_CEvent_Notify(uint32_t device_id, BACNET_EVENT_NOTIFICATION_DATA* data); diff --git a/src/bacnet/basic/service/s_cov.h b/src/bacnet/basic/service/s_cov.h index f76a6ae1..3f9c965b 100644 --- a/src/bacnet/basic/service/s_cov.h +++ b/src/bacnet/basic/service/s_cov.h @@ -33,6 +33,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -43,16 +44,19 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int Send_UCOV_Notify( uint8_t * buffer, unsigned buffer_len, BACNET_COV_DATA * cov_data); + BACNET_STACK_EXPORT int ucov_notify_encode_pdu( uint8_t * buffer, unsigned buffer_len, BACNET_ADDRESS * dest, BACNET_NPDU_DATA * npdu_data, BACNET_COV_DATA * cov_data); + BACNET_STACK_EXPORT uint8_t Send_COV_Subscribe( uint32_t device_id, BACNET_SUBSCRIBE_COV_DATA * cov_data); diff --git a/src/bacnet/basic/service/s_dcc.h b/src/bacnet/basic/service/s_dcc.h index 6795e1cd..7302ca2a 100644 --- a/src/bacnet/basic/service/s_dcc.h +++ b/src/bacnet/basic/service/s_dcc.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,6 +42,7 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT uint8_t Send_Device_Communication_Control_Request( uint32_t device_id, uint16_t timeDuration, BACNET_COMMUNICATION_ENABLE_DISABLE state, char *password); diff --git a/src/bacnet/basic/service/s_error.h b/src/bacnet/basic/service/s_error.h index e3a4115d..9ef83dec 100644 --- a/src/bacnet/basic/service/s_error.h +++ b/src/bacnet/basic/service/s_error.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,6 +42,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int Send_Error_To_Network( uint8_t * buffer, BACNET_ADDRESS *dest, @@ -49,6 +51,7 @@ extern "C" { BACNET_ERROR_CLASS error_class, BACNET_ERROR_CODE error_code); + BACNET_STACK_EXPORT int error_encode_pdu( uint8_t * buffer, BACNET_ADDRESS * dest, diff --git a/src/bacnet/basic/service/s_get_alarm_sum.h b/src/bacnet/basic/service/s_get_alarm_sum.h index c8b16d99..baa637bb 100644 --- a/src/bacnet/basic/service/s_get_alarm_sum.h +++ b/src/bacnet/basic/service/s_get_alarm_sum.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,7 +42,9 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT uint8_t Send_Get_Alarm_Summary_Address(BACNET_ADDRESS *dest, uint16_t max_apdu); +BACNET_STACK_EXPORT uint8_t Send_Get_Alarm_Summary(uint32_t device_id); #ifdef __cplusplus diff --git a/src/bacnet/basic/service/s_get_event.h b/src/bacnet/basic/service/s_get_event.h index 53edcc84..d4853c1a 100644 --- a/src/bacnet/basic/service/s_get_event.h +++ b/src/bacnet/basic/service/s_get_event.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,9 +42,11 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT uint8_t Send_Get_Event_Information_Address( BACNET_ADDRESS *dest, uint16_t max_apdu, BACNET_OBJECT_ID *lastReceivedObjectIdentifier); +BACNET_STACK_EXPORT uint8_t Send_Get_Event_Information( uint32_t device_id, BACNET_OBJECT_ID *lastReceivedObjectIdentifier); diff --git a/src/bacnet/basic/service/s_getevent.h b/src/bacnet/basic/service/s_getevent.h index cdcf05b9..3c772b86 100644 --- a/src/bacnet/basic/service/s_getevent.h +++ b/src/bacnet/basic/service/s_getevent.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,8 +42,10 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT uint8_t Send_GetEvent(BACNET_ADDRESS* target_address, BACNET_OBJECT_ID* lastReceivedObjectIdentifier); +BACNET_STACK_EXPORT uint8_t Send_GetEvent_Global(void); #ifdef __cplusplus diff --git a/src/bacnet/basic/service/s_iam.h b/src/bacnet/basic/service/s_iam.h index 7c3028aa..92eb120e 100644 --- a/src/bacnet/basic/service/s_iam.h +++ b/src/bacnet/basic/service/s_iam.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/apdu.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" @@ -42,14 +43,19 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT void Send_I_Am_To_Network(BACNET_ADDRESS* target_address, uint32_t device_id, unsigned int max_apdu, int segmentation, uint16_t vendor_id); +BACNET_STACK_EXPORT int iam_encode_pdu(uint8_t* buffer, BACNET_ADDRESS* dest, BACNET_NPDU_DATA* npdu_data); +BACNET_STACK_EXPORT void Send_I_Am(uint8_t* buffer); +BACNET_STACK_EXPORT int iam_unicast_encode_pdu(uint8_t* buffer, BACNET_ADDRESS* src, BACNET_ADDRESS* dest, BACNET_NPDU_DATA* npdu_data); +BACNET_STACK_EXPORT void Send_I_Am_Unicast(uint8_t* buffer, BACNET_ADDRESS* src); #ifdef __cplusplus diff --git a/src/bacnet/basic/service/s_ihave.h b/src/bacnet/basic/service/s_ihave.h index b50dcd65..28a52652 100644 --- a/src/bacnet/basic/service/s_ihave.h +++ b/src/bacnet/basic/service/s_ihave.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,6 +42,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Send_I_Have( uint32_t device_id, BACNET_OBJECT_TYPE object_type, diff --git a/src/bacnet/basic/service/s_lso.h b/src/bacnet/basic/service/s_lso.h index 0805b0bd..96445ddd 100644 --- a/src/bacnet/basic/service/s_lso.h +++ b/src/bacnet/basic/service/s_lso.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -42,6 +43,7 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT uint8_t Send_Life_Safety_Operation_Data(uint32_t device_id, BACNET_LSO_DATA* data); diff --git a/src/bacnet/basic/service/s_rd.h b/src/bacnet/basic/service/s_rd.h index e663de60..d2f579ae 100644 --- a/src/bacnet/basic/service/s_rd.h +++ b/src/bacnet/basic/service/s_rd.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,6 +42,7 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT uint8_t Send_Reinitialize_Device_Request(uint32_t device_id, BACNET_REINITIALIZED_STATE state, char *password); diff --git a/src/bacnet/basic/service/s_readrange.h b/src/bacnet/basic/service/s_readrange.h index 4e0f95c9..696b0357 100644 --- a/src/bacnet/basic/service/s_readrange.h +++ b/src/bacnet/basic/service/s_readrange.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -42,6 +43,7 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT uint8_t Send_ReadRange_Request(uint32_t device_id, BACNET_READ_RANGE_DATA* read_access_data); diff --git a/src/bacnet/basic/service/s_rp.h b/src/bacnet/basic/service/s_rp.h index 4e076557..6d5064ae 100644 --- a/src/bacnet/basic/service/s_rp.h +++ b/src/bacnet/basic/service/s_rp.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,6 +42,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT uint8_t Send_Read_Property_Request_Address( BACNET_ADDRESS * dest, uint16_t max_apdu, @@ -48,6 +50,7 @@ extern "C" { uint32_t object_instance, BACNET_PROPERTY_ID object_property, uint32_t array_index); + BACNET_STACK_EXPORT uint8_t Send_Read_Property_Request( uint32_t device_id, /* destination device */ BACNET_OBJECT_TYPE object_type, diff --git a/src/bacnet/basic/service/s_rpm.h b/src/bacnet/basic/service/s_rpm.h index 2dd22f93..ce81cec7 100644 --- a/src/bacnet/basic/service/s_rpm.h +++ b/src/bacnet/basic/service/s_rpm.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -42,6 +43,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT uint8_t Send_Read_Property_Multiple_Request( uint8_t * pdu, size_t max_pdu, diff --git a/src/bacnet/basic/service/s_ts.h b/src/bacnet/basic/service/s_ts.h index b75d783c..1b176ba5 100644 --- a/src/bacnet/basic/service/s_ts.h +++ b/src/bacnet/basic/service/s_ts.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,21 +42,27 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Send_TimeSync( BACNET_DATE * bdate, BACNET_TIME * btime); + BACNET_STACK_EXPORT void Send_TimeSync_Remote( BACNET_ADDRESS * dest, BACNET_DATE * bdate, BACNET_TIME * btime); + BACNET_STACK_EXPORT void Send_TimeSyncUTC( BACNET_DATE * bdate, BACNET_TIME * btime); + BACNET_STACK_EXPORT void Send_TimeSyncUTC_Remote( BACNET_ADDRESS * dest, BACNET_DATE * bdate, BACNET_TIME * btime); + BACNET_STACK_EXPORT void Send_TimeSyncUTC_Device(void); + BACNET_STACK_EXPORT void Send_TimeSync_Device(void); #ifdef __cplusplus diff --git a/src/bacnet/basic/service/s_uevent.h b/src/bacnet/basic/service/s_uevent.h index f5afc74a..4162eb1c 100644 --- a/src/bacnet/basic/service/s_uevent.h +++ b/src/bacnet/basic/service/s_uevent.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,6 +42,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int Send_UEvent_Notify( uint8_t * buffer, BACNET_EVENT_NOTIFICATION_DATA * data, diff --git a/src/bacnet/basic/service/s_upt.h b/src/bacnet/basic/service/s_upt.h index a1f6d7c8..8a33ef5c 100644 --- a/src/bacnet/basic/service/s_upt.h +++ b/src/bacnet/basic/service/s_upt.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -42,6 +43,7 @@ extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT int Send_UnconfirmedPrivateTransfer(BACNET_ADDRESS* dest, BACNET_PRIVATE_TRANSFER_DATA* private_data); diff --git a/src/bacnet/basic/service/s_whohas.h b/src/bacnet/basic/service/s_whohas.h index 8a484646..12a03806 100644 --- a/src/bacnet/basic/service/s_whohas.h +++ b/src/bacnet/basic/service/s_whohas.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,10 +42,12 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Send_WhoHas_Name( int32_t low_limit, int32_t high_limit, const char *object_name); + BACNET_STACK_EXPORT void Send_WhoHas_Object(int32_t low_limit, int32_t high_limit, BACNET_OBJECT_TYPE object_type, uint32_t object_instance); diff --git a/src/bacnet/basic/service/s_whois.h b/src/bacnet/basic/service/s_whois.h index 542d9839..813536f3 100644 --- a/src/bacnet/basic/service/s_whois.h +++ b/src/bacnet/basic/service/s_whois.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,19 +42,24 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void Send_WhoIs( int32_t low_limit, int32_t high_limit); + BACNET_STACK_EXPORT void Send_WhoIs_Global( int32_t low_limit, int32_t high_limit); + BACNET_STACK_EXPORT void Send_WhoIs_Local( int32_t low_limit, int32_t high_limit); + BACNET_STACK_EXPORT void Send_WhoIs_Remote( BACNET_ADDRESS * target_address, int32_t low_limit, int32_t high_limit); + BACNET_STACK_EXPORT void Send_WhoIs_To_Network(BACNET_ADDRESS* target_address, int32_t low_limit, int32_t high_limit); diff --git a/src/bacnet/basic/service/s_wp.h b/src/bacnet/basic/service/s_wp.h index 132e3803..4e8b066e 100644 --- a/src/bacnet/basic/service/s_wp.h +++ b/src/bacnet/basic/service/s_wp.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -41,6 +42,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT uint8_t Send_Write_Property_Request( uint32_t device_id, /* destination device */ BACNET_OBJECT_TYPE object_type, @@ -49,6 +51,7 @@ extern "C" { BACNET_APPLICATION_DATA_VALUE * object_value, uint8_t priority, uint32_t array_index); + BACNET_STACK_EXPORT uint8_t Send_Write_Property_Request_Data( uint32_t device_id, BACNET_OBJECT_TYPE object_type, diff --git a/src/bacnet/basic/service/s_wpm.h b/src/bacnet/basic/service/s_wpm.h index 8feb2829..6d554ddc 100644 --- a/src/bacnet/basic/service/s_wpm.h +++ b/src/bacnet/basic/service/s_wpm.h @@ -32,6 +32,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -42,6 +43,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT uint8_t Send_Write_Property_Multiple_Request( uint8_t * pdu, size_t max_pdu, diff --git a/src/bacnet/basic/sys/bigend.h b/src/bacnet/basic/sys/bigend.h index c4a9f857..8d9bfe35 100644 --- a/src/bacnet/basic/sys/bigend.h +++ b/src/bacnet/basic/sys/bigend.h @@ -24,6 +24,8 @@ #ifndef BIGEND_H #define BIGEND_H +#include "bacnet/bacnet_stack_exports.h" + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ @@ -44,6 +46,7 @@ extern "C" { /* x[2] = 0x03 */ /* x[3] = 0x04 */ + BACNET_STACK_EXPORT int big_endian( void); diff --git a/src/bacnet/basic/sys/debug.h b/src/bacnet/basic/sys/debug.h index 0126b390..5b72ccf4 100644 --- a/src/bacnet/basic/sys/debug.h +++ b/src/bacnet/basic/sys/debug.h @@ -27,6 +27,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #ifndef DEBUG_ENABLED @@ -37,6 +38,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void debug_printf( const char *format, ...); diff --git a/src/bacnet/basic/sys/fifo.h b/src/bacnet/basic/sys/fifo.h index 447abcc1..b2009908 100644 --- a/src/bacnet/basic/sys/fifo.h +++ b/src/bacnet/basic/sys/fifo.h @@ -8,6 +8,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" /** * FIFO data structure @@ -31,43 +32,54 @@ typedef struct fifo_buffer_t FIFO_BUFFER; extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT unsigned FIFO_Count( FIFO_BUFFER const *b); + BACNET_STACK_EXPORT bool FIFO_Full( FIFO_BUFFER const *b); + BACNET_STACK_EXPORT bool FIFO_Available( FIFO_BUFFER const *b, unsigned count); + BACNET_STACK_EXPORT bool FIFO_Empty( FIFO_BUFFER const *b); + BACNET_STACK_EXPORT uint8_t FIFO_Peek( FIFO_BUFFER const *b); + BACNET_STACK_EXPORT uint8_t FIFO_Get( FIFO_BUFFER * b); + BACNET_STACK_EXPORT unsigned FIFO_Pull( FIFO_BUFFER * b, uint8_t * data_bytes, unsigned length); + BACNET_STACK_EXPORT bool FIFO_Put( FIFO_BUFFER * b, uint8_t data_byte); + BACNET_STACK_EXPORT bool FIFO_Add( FIFO_BUFFER * b, uint8_t * data_bytes, unsigned count); + BACNET_STACK_EXPORT void FIFO_Flush( FIFO_BUFFER * b); /* note: buffer_len must be a power of two */ + BACNET_STACK_EXPORT void FIFO_Init( FIFO_BUFFER * b, volatile uint8_t * buffer, @@ -75,6 +87,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testFIFOBuffer( Test * pTest); #endif diff --git a/src/bacnet/basic/sys/filename.h b/src/bacnet/basic/sys/filename.h index ab9b2e9e..8b6a7e28 100644 --- a/src/bacnet/basic/sys/filename.h +++ b/src/bacnet/basic/sys/filename.h @@ -24,10 +24,13 @@ #ifndef FILENAME_H #define FILENAME_H +#include "bacnet/bacnet_stack_exports.h" + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT char *filename_remove_path( const char *filename_in); diff --git a/src/bacnet/basic/sys/keylist.h b/src/bacnet/basic/sys/keylist.h index d6aaf5d7..79e7d98e 100644 --- a/src/bacnet/basic/sys/keylist.h +++ b/src/bacnet/basic/sys/keylist.h @@ -24,6 +24,7 @@ #ifndef KEYLIST_H #define KEYLIST_H +#include "bacnet/bacnet_stack_exports.h" #include "key.h" /* This is a key sorted linked list data library that */ @@ -48,68 +49,81 @@ extern "C" { #endif /* __cplusplus */ /* returns head of the list or NULL on failure. */ + BACNET_STACK_EXPORT OS_Keylist Keylist_Create( void); /* delete specified list */ /* note: you should pop all the nodes off the list first. */ + BACNET_STACK_EXPORT void Keylist_Delete( OS_Keylist list); /* inserts a node into its sorted position */ /* returns the index where it was added */ + BACNET_STACK_EXPORT int Keylist_Data_Add( OS_Keylist list, KEY key, void *data); /* deletes a node specified by its key */ + BACNET_STACK_EXPORT /* returns the data from the node */ void *Keylist_Data_Delete( OS_Keylist list, KEY key); /* deletes a node specified by its index */ + BACNET_STACK_EXPORT /* returns the data from the node */ void *Keylist_Data_Delete_By_Index( OS_Keylist list, int index); /* returns the data from last node, and removes it from the list */ + BACNET_STACK_EXPORT void *Keylist_Data_Pop( OS_Keylist list); /* returns the data from the node specified by key */ + BACNET_STACK_EXPORT void *Keylist_Data( OS_Keylist list, KEY key); /* returns the index from the node specified by key */ + BACNET_STACK_EXPORT int Keylist_Index( OS_Keylist list, KEY key); /* returns the data specified by key */ + BACNET_STACK_EXPORT void *Keylist_Data_Index( OS_Keylist list, int index); /* return the key at the given index */ + BACNET_STACK_EXPORT KEY Keylist_Key( OS_Keylist list, int index); /* returns the next empty key from the list */ + BACNET_STACK_EXPORT KEY Keylist_Next_Empty_Key( OS_Keylist list, KEY key); /* returns the number of items in the list */ + BACNET_STACK_EXPORT int Keylist_Count( OS_Keylist list); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testKeyList( Test * pTest); #endif diff --git a/src/bacnet/basic/sys/mstimer.h b/src/bacnet/basic/sys/mstimer.h index 30de565f..180d8866 100644 --- a/src/bacnet/basic/sys/mstimer.h +++ b/src/bacnet/basic/sys/mstimer.h @@ -20,6 +20,8 @@ #ifndef MSTIMER_H_ #define MSTIMER_H_ +#include "bacnet/bacnet_stack_exports.h" + /** * A timer. * @@ -46,18 +48,27 @@ struct mstimer_callback_data_t { extern "C" { #endif /* __cplusplus */ +BACNET_STACK_EXPORT void mstimer_set(struct mstimer *t, unsigned long interval); +BACNET_STACK_EXPORT void mstimer_reset(struct mstimer *t); +BACNET_STACK_EXPORT void mstimer_restart(struct mstimer *t); +BACNET_STACK_EXPORT int mstimer_expired(struct mstimer *t); +BACNET_STACK_EXPORT unsigned long mstimer_remaining(struct mstimer *t); +BACNET_STACK_EXPORT unsigned long mstimer_interval(struct mstimer *t); /* HAL implementation */ +BACNET_STACK_EXPORT unsigned long mstimer_now(void); +BACNET_STACK_EXPORT void mstimer_callback( struct mstimer_callback_data_t *cb, mstimer_callback_function callback, unsigned long milliseconds); +BACNET_STACK_EXPORT void mstimer_init(void); #ifdef __cplusplus diff --git a/src/bacnet/basic/sys/ringbuf.h b/src/bacnet/basic/sys/ringbuf.h index ffe01593..93ef3b32 100644 --- a/src/bacnet/basic/sys/ringbuf.h +++ b/src/bacnet/basic/sys/ringbuf.h @@ -11,6 +11,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" /** * ring buffer power of two alignment macro @@ -53,30 +54,43 @@ typedef struct ring_buffer_t RING_BUFFER; extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT unsigned Ringbuf_Count(RING_BUFFER const *b); + BACNET_STACK_EXPORT unsigned Ringbuf_Depth(RING_BUFFER const *b); + BACNET_STACK_EXPORT unsigned Ringbuf_Depth_Reset(RING_BUFFER *b); + BACNET_STACK_EXPORT unsigned Ringbuf_Size(RING_BUFFER const *b); + BACNET_STACK_EXPORT bool Ringbuf_Full(RING_BUFFER const *b); + BACNET_STACK_EXPORT bool Ringbuf_Empty(RING_BUFFER const *b); /* tail */ + BACNET_STACK_EXPORT volatile uint8_t *Ringbuf_Peek(RING_BUFFER const *b); bool Ringbuf_Pop(RING_BUFFER * b, uint8_t * data_element); + BACNET_STACK_EXPORT bool Ringbuf_Pop_Element(RING_BUFFER * b, uint8_t * this_element, uint8_t * data_element); + BACNET_STACK_EXPORT bool Ringbuf_Put_Front(RING_BUFFER * b, uint8_t * data_element); /* head */ + BACNET_STACK_EXPORT bool Ringbuf_Put(RING_BUFFER * b, uint8_t * data_element); /* pair of functions to use head memory directly */ + BACNET_STACK_EXPORT volatile uint8_t *Ringbuf_Data_Peek(RING_BUFFER * b); volatile uint8_t *Ringbuf_Peek_Next(RING_BUFFER const *b, uint8_t * data_element); + BACNET_STACK_EXPORT bool Ringbuf_Data_Put(RING_BUFFER * b, volatile uint8_t *data_element); /* Note: element_count must be a power of two */ + BACNET_STACK_EXPORT bool Ringbuf_Init(RING_BUFFER * b, volatile uint8_t * buffer, unsigned element_size, @@ -84,9 +98,13 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testRingBufPowerOfTwo(Test * pTest); + BACNET_STACK_EXPORT void testRingBufSizeSmall(Test * pTest); + BACNET_STACK_EXPORT void testRingBufSizeLarge(Test * pTest); + BACNET_STACK_EXPORT void testRingBufSizeInvalid(Test * pTest); #endif diff --git a/src/bacnet/basic/sys/sbuf.h b/src/bacnet/basic/sys/sbuf.h index 71636d46..081192b2 100644 --- a/src/bacnet/basic/sys/sbuf.h +++ b/src/bacnet/basic/sys/sbuf.h @@ -29,6 +29,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" struct static_buffer_t { char *data; /* block of memory or array of data */ @@ -41,35 +42,43 @@ typedef struct static_buffer_t STATIC_BUFFER; extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void sbuf_init( STATIC_BUFFER * b, /* static buffer structure */ char *data, /* data block */ unsigned size); /* actual size, in bytes, of the data block or array of data */ /* returns true if size==0, false if size > 0 */ + BACNET_STACK_EXPORT bool sbuf_empty( STATIC_BUFFER const *b); /* returns the data block, or NULL if not initialized */ + BACNET_STACK_EXPORT char *sbuf_data( STATIC_BUFFER const *b); /* returns the max size of the data block */ + BACNET_STACK_EXPORT unsigned sbuf_size( STATIC_BUFFER * b); /* returns the number of bytes used in the data block */ + BACNET_STACK_EXPORT unsigned sbuf_count( STATIC_BUFFER * b); /* returns true if successful, false if not enough room to append data */ + BACNET_STACK_EXPORT bool sbuf_put( STATIC_BUFFER * b, /* static buffer structure */ unsigned offset, /* where to start */ char *data, /* data to add */ unsigned data_size); /* how many to add */ /* returns true if successful, false if not enough room to append data */ + BACNET_STACK_EXPORT bool sbuf_append( STATIC_BUFFER * b, /* static buffer structure */ char *data, /* data to append */ unsigned data_size); /* how many to append */ /* returns true if successful, false if count is bigger than size */ + BACNET_STACK_EXPORT bool sbuf_truncate( STATIC_BUFFER * b, /* static buffer structure */ unsigned count); /* new number of bytes used in buffer */ diff --git a/src/bacnet/basic/tsm/tsm.h b/src/bacnet/basic/tsm/tsm.h index 184b3bcc..ed3dec74 100644 --- a/src/bacnet/basic/tsm/tsm.h +++ b/src/bacnet/basic/tsm/tsm.h @@ -27,6 +27,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/config.h" #include "bacnet/bacdef.h" #include "bacnet/npdu.h" @@ -35,7 +36,8 @@ doing client requests */ /* FIXME: modify basic service handlers to use TSM rather than this buffer! */ -extern uint8_t Handler_Transmit_Buffer[MAX_PDU]; +BACNET_STACK_EXPORT extern +uint8_t Handler_Transmit_Buffer[MAX_PDU]; #if (!MAX_TSM_TRANSACTIONS) #define tsm_free_invoke_id(x) (void)x; @@ -94,24 +96,32 @@ typedef void ( extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void tsm_set_timeout_handler( tsm_timeout_function pFunction); + BACNET_STACK_EXPORT bool tsm_transaction_available( void); + BACNET_STACK_EXPORT uint8_t tsm_transaction_idle_count( void); + BACNET_STACK_EXPORT void tsm_timer_milliseconds( uint16_t milliseconds); /* free the invoke ID when the reply comes back */ + BACNET_STACK_EXPORT void tsm_free_invoke_id( uint8_t invokeID); /* use these in tandem */ + BACNET_STACK_EXPORT uint8_t tsm_next_free_invokeID( void); + BACNET_STACK_EXPORT void tsm_invokeID_set( uint8_t invokeID); /* returns the same invoke ID that was given */ + BACNET_STACK_EXPORT void tsm_set_confirmed_unsegmented_transaction( uint8_t invokeID, BACNET_ADDRESS * dest, @@ -119,6 +129,7 @@ extern "C" { uint8_t * apdu, uint16_t apdu_len); /* returns true if transaction is found */ + BACNET_STACK_EXPORT bool tsm_get_transaction_pdu( uint8_t invokeID, BACNET_ADDRESS * dest, @@ -126,8 +137,10 @@ extern "C" { uint8_t * apdu, uint16_t * apdu_len); + BACNET_STACK_EXPORT bool tsm_invoke_id_free( uint8_t invokeID); + BACNET_STACK_EXPORT bool tsm_invoke_id_failed( uint8_t invokeID); diff --git a/src/bacnet/basic/ucix/ucix.h b/src/bacnet/basic/ucix/ucix.h index d857235f..3b5dd71a 100644 --- a/src/bacnet/basic/ucix/ucix.h +++ b/src/bacnet/basic/ucix/ucix.h @@ -18,53 +18,69 @@ #ifndef _UCI_H__ #define _UCI_H__ + +#include "bacnet/bacnet_stack_exports.h" + +BACNET_STACK_EXPORT struct uci_context *ucix_init( const char *config_file); +BACNET_STACK_EXPORT struct uci_context *ucix_init_path( const char *path, const char *config_file); +BACNET_STACK_EXPORT void ucix_cleanup( struct uci_context *ctx); +BACNET_STACK_EXPORT void ucix_save( struct uci_context *ctx); +BACNET_STACK_EXPORT void ucix_save_state( struct uci_context *ctx); +BACNET_STACK_EXPORT const char *ucix_get_option( struct uci_context *ctx, const char *p, const char *s, const char *o); +BACNET_STACK_EXPORT int ucix_get_option_int( struct uci_context *ctx, const char *p, const char *s, const char *o, int def); +BACNET_STACK_EXPORT void ucix_add_section( struct uci_context *ctx, const char *p, const char *s, const char *t); +BACNET_STACK_EXPORT void ucix_add_option( struct uci_context *ctx, const char *p, const char *s, const char *o, const char *t); +BACNET_STACK_EXPORT void ucix_add_option_int( struct uci_context *ctx, const char *p, const char *s, const char *o, int t); +BACNET_STACK_EXPORT int ucix_commit( struct uci_context *ctx, const char *p); +BACNET_STACK_EXPORT void ucix_revert( struct uci_context *ctx, const char *p, const char *s, const char *o); +BACNET_STACK_EXPORT void ucix_del( struct uci_context *ctx, const char *p, diff --git a/src/bacnet/cov.h b/src/bacnet/cov.h index 8f3e39ae..f84cda91 100644 --- a/src/bacnet/cov.h +++ b/src/bacnet/cov.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacapp.h" typedef struct BACnet_COV_Data { @@ -56,27 +57,32 @@ typedef struct BACnet_Subscribe_COV_Data { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int ucov_notify_encode_apdu( uint8_t * apdu, unsigned max_apdu_len, BACNET_COV_DATA * data); + BACNET_STACK_EXPORT int ucov_notify_decode_apdu( uint8_t * apdu, unsigned apdu_len, BACNET_COV_DATA * data); + BACNET_STACK_EXPORT int ucov_notify_send( uint8_t * apdu, unsigned max_apdu_len, BACNET_COV_DATA * data); + BACNET_STACK_EXPORT int ccov_notify_encode_apdu( uint8_t * apdu, unsigned max_apdu_len, uint8_t invoke_id, BACNET_COV_DATA * data); + BACNET_STACK_EXPORT int ccov_notify_decode_apdu( uint8_t * apdu, unsigned apdu_len, @@ -84,33 +90,39 @@ extern "C" { BACNET_COV_DATA * data); /* common for both confirmed and unconfirmed */ + BACNET_STACK_EXPORT int cov_notify_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_COV_DATA * data); + BACNET_STACK_EXPORT int cov_subscribe_property_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_SUBSCRIBE_COV_DATA * data); + BACNET_STACK_EXPORT int cov_subscribe_property_encode_apdu( uint8_t * apdu, unsigned max_apdu_len, uint8_t invoke_id, BACNET_SUBSCRIBE_COV_DATA * data); + BACNET_STACK_EXPORT int cov_subscribe_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_SUBSCRIBE_COV_DATA * data); + BACNET_STACK_EXPORT int cov_subscribe_encode_apdu( uint8_t * apdu, unsigned max_apdu_len, uint8_t invoke_id, BACNET_SUBSCRIBE_COV_DATA * data); + BACNET_STACK_EXPORT void cov_data_value_list_link( BACNET_COV_DATA *data, BACNET_PROPERTY_VALUE *value_list, @@ -118,10 +130,13 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testCOVNotify( Test * pTest); + BACNET_STACK_EXPORT void testCOVSubscribeProperty( Test * pTest); + BACNET_STACK_EXPORT void testCOVSubscribe( Test * pTest); #endif diff --git a/src/bacnet/credential_authentication_factor.h b/src/bacnet/credential_authentication_factor.h index 21b54951..bd9f5c95 100644 --- a/src/bacnet/credential_authentication_factor.h +++ b/src/bacnet/credential_authentication_factor.h @@ -28,6 +28,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacapp.h" #include "bacnet/authentication_factor.h" @@ -42,16 +43,20 @@ typedef struct { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int bacapp_encode_credential_authentication_factor( uint8_t * apdu, BACNET_CREDENTIAL_AUTHENTICATION_FACTOR * caf); + BACNET_STACK_EXPORT int bacapp_encode_context_credential_authentication_factor( uint8_t * apdu, uint8_t tag, BACNET_CREDENTIAL_AUTHENTICATION_FACTOR * caf); + BACNET_STACK_EXPORT int bacapp_decode_credential_authentication_factor( uint8_t * apdu, BACNET_CREDENTIAL_AUTHENTICATION_FACTOR * caf); + BACNET_STACK_EXPORT int bacapp_decode_context_credential_authentication_factor( uint8_t * apdu, uint8_t tag, diff --git a/src/bacnet/datalink/arcnet.h b/src/bacnet/datalink/arcnet.h index 337bf633..db8fe7b9 100644 --- a/src/bacnet/datalink/arcnet.h +++ b/src/bacnet/datalink/arcnet.h @@ -27,6 +27,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/npdu.h" @@ -38,15 +39,19 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT bool arcnet_valid( void); + BACNET_STACK_EXPORT void arcnet_cleanup( void); + BACNET_STACK_EXPORT bool arcnet_init( char *interface_name); /* function to send a packet out the 802.2 socket */ /* returns zero on success, non-zero on failure */ + BACNET_STACK_EXPORT int arcnet_send_pdu( BACNET_ADDRESS * dest, /* destination address */ BACNET_NPDU_DATA * npdu_data, /* network information */ @@ -55,14 +60,17 @@ extern "C" { /* receives an framed packet */ /* returns the number of octets in the PDU, or zero on failure */ + BACNET_STACK_EXPORT uint16_t arcnet_receive( BACNET_ADDRESS * src, /* source address */ uint8_t * pdu, /* PDU data */ uint16_t max_pdu, /* amount of space available in the PDU */ unsigned timeout); /* milliseconds to wait for a packet */ + BACNET_STACK_EXPORT void arcnet_get_my_address( BACNET_ADDRESS * my_address); + BACNET_STACK_EXPORT void arcnet_get_broadcast_address( BACNET_ADDRESS * dest); /* destination address */ diff --git a/src/bacnet/datalink/bacsec.h b/src/bacnet/datalink/bacsec.h index 9f5e9d78..62088ef2 100644 --- a/src/bacnet/datalink/bacsec.h +++ b/src/bacnet/datalink/bacsec.h @@ -39,6 +39,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -193,93 +194,124 @@ extern "C" { #endif /* __cplusplus */ /* helper functions */ + BACNET_STACK_EXPORT BACNET_KEY_IDENTIFIER_ALGORITHM key_algorithm(uint16_t id); + BACNET_STACK_EXPORT BACNET_KEY_IDENTIFIER_KEY_NUMBER key_number(uint16_t id); /* key manipulation functions - port specific! */ + BACNET_STACK_EXPORT BACNET_SECURITY_RESPONSE_CODE bacnet_master_key_set(BACNET_SET_MASTER_KEY * key); + BACNET_STACK_EXPORT BACNET_SECURITY_RESPONSE_CODE bacnet_distribution_key_update(BACNET_UPDATE_DISTRIBUTION_KEY * key); + BACNET_STACK_EXPORT BACNET_SECURITY_RESPONSE_CODE bacnet_key_set_update(BACNET_UPDATE_KEY_SET * update_key_sets); + BACNET_STACK_EXPORT BACNET_SECURITY_RESPONSE_CODE bacnet_find_key(uint8_t revision, BACNET_KEY_ENTRY * key); /* signing/verification and encryption/decryption - port specific */ + BACNET_STACK_EXPORT int key_sign_msg(BACNET_KEY_ENTRY * key, uint8_t * msg, uint32_t msg_len, uint8_t * signature); + // BACNET_STACK_EXPORT // bool key_verify_sign_msg(BACNET_KEY_ENTRY * key, // uint8_t * msg, // uint32_t msg_len, // uint8_t * signature); + BACNET_STACK_EXPORT int key_encrypt_msg(BACNET_KEY_ENTRY * key, uint8_t * msg, uint32_t msg_len, uint8_t * signature); + BACNET_STACK_EXPORT bool key_decrypt_msg(BACNET_KEY_ENTRY * key, uint8_t * msg, uint32_t msg_len, uint8_t * signature); + BACNET_STACK_EXPORT void key_set_padding(BACNET_KEY_ENTRY * key, int enc_len, uint16_t * padding_len, uint8_t * padding); /* encoders */ + // BACNET_STACK_EXPORT // int encode_security_wrapper(int bytes_before, // uint8_t * apdu, // BACNET_SECURITY_WRAPPER * wrapper); + BACNET_STACK_EXPORT int encode_challenge_request(uint8_t * apdu, BACNET_CHALLENGE_REQUEST * bc_req); + BACNET_STACK_EXPORT int encode_security_payload(uint8_t * apdu, BACNET_SECURITY_PAYLOAD * payload); + BACNET_STACK_EXPORT int encode_security_response(uint8_t * apdu, BACNET_SECURITY_RESPONSE * resp); + BACNET_STACK_EXPORT int encode_request_key_update(uint8_t * apdu, BACNET_REQUEST_KEY_UPDATE * req); + BACNET_STACK_EXPORT int encode_key_entry(uint8_t * apdu, BACNET_KEY_ENTRY * entry); + BACNET_STACK_EXPORT int encode_update_key_set(uint8_t * apdu, BACNET_UPDATE_KEY_SET * key_set); + BACNET_STACK_EXPORT int encode_update_distribution_key(uint8_t * apdu, BACNET_UPDATE_DISTRIBUTION_KEY * dist_key); + BACNET_STACK_EXPORT int encode_request_master_key(uint8_t * apdu, BACNET_REQUEST_MASTER_KEY * req_master_key); + BACNET_STACK_EXPORT int encode_set_master_key(uint8_t * apdu, BACNET_SET_MASTER_KEY * set_master_key); /* safe decoders */ + // BACNET_STACK_EXPORT // int decode_security_wrapper_safe(int bytes_before, // uint8_t * apdu, // uint32_t apdu_len_remaining, // BACNET_SECURITY_WRAPPER * wrapper); + BACNET_STACK_EXPORT int decode_challenge_request_safe(uint8_t * apdu, uint32_t apdu_len_remaining, BACNET_CHALLENGE_REQUEST * bc_req); + BACNET_STACK_EXPORT int decode_security_payload_safe(uint8_t * apdu, uint32_t apdu_len_remaining, BACNET_SECURITY_PAYLOAD * payload); + BACNET_STACK_EXPORT int decode_security_response_safe(uint8_t * apdu, uint32_t apdu_len_remaining, BACNET_SECURITY_RESPONSE * resp); + BACNET_STACK_EXPORT int decode_request_key_update_safe(uint8_t * apdu, uint32_t apdu_len_remaining, BACNET_REQUEST_KEY_UPDATE * req); + BACNET_STACK_EXPORT int decode_key_entry_safe(uint8_t * apdu, uint32_t apdu_len_remaining, BACNET_KEY_ENTRY * entry); + BACNET_STACK_EXPORT int decode_update_key_set_safe(uint8_t * apdu, uint32_t apdu_len_remaining, BACNET_UPDATE_KEY_SET * key_set); + BACNET_STACK_EXPORT int decode_update_distribution_key_safe(uint8_t * apdu, uint32_t apdu_len_remaining, BACNET_UPDATE_DISTRIBUTION_KEY * dist_key); + BACNET_STACK_EXPORT int decode_request_master_key_safe(uint8_t * apdu, uint32_t apdu_len_remaining, BACNET_REQUEST_MASTER_KEY * req_master_key); + BACNET_STACK_EXPORT int decode_set_master_key_safe(uint8_t * apdu, uint32_t apdu_len_remaining, BACNET_SET_MASTER_KEY * set_master_key); diff --git a/src/bacnet/datalink/bip.h b/src/bacnet/datalink/bip.h index dfb31d4b..a1a6e6d4 100644 --- a/src/bacnet/datalink/bip.h +++ b/src/bacnet/datalink/bip.h @@ -27,6 +27,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/npdu.h" #include "bacport.h" @@ -46,27 +47,36 @@ extern "C" { /* note: define init, set_interface, and cleanup in your port */ /* on Linux, ifname is eth0, ath0, arc0, and others. on Windows, ifname is the dotted ip address of the interface */ + BACNET_STACK_EXPORT bool bip_init( char *ifname); + BACNET_STACK_EXPORT void bip_set_interface( char *ifname); + BACNET_STACK_EXPORT void bip_cleanup( void); /* common BACnet/IP functions */ + BACNET_STACK_EXPORT void bip_set_socket( int sock_fd); + BACNET_STACK_EXPORT int bip_socket( void); + BACNET_STACK_EXPORT bool bip_valid( void); + BACNET_STACK_EXPORT void bip_get_broadcast_address( BACNET_ADDRESS * dest); /* destination address */ + BACNET_STACK_EXPORT void bip_get_my_address( BACNET_ADDRESS * my_address); /* function to send a packet out the BACnet/IP socket */ /* returns zero on success, non-zero on failure */ + BACNET_STACK_EXPORT int bip_send_pdu( BACNET_ADDRESS * dest, /* destination address */ BACNET_NPDU_DATA * npdu_data, /* network information */ @@ -75,6 +85,7 @@ extern "C" { /* receives a BACnet/IP packet */ /* returns the number of octets in the PDU, or zero on failure */ + BACNET_STACK_EXPORT uint16_t bip_receive( BACNET_ADDRESS * src, /* source address */ uint8_t * pdu, /* PDU data */ @@ -82,24 +93,31 @@ extern "C" { unsigned timeout); /* milliseconds to wait for a packet */ /* use network byte order for setting */ + BACNET_STACK_EXPORT void bip_set_port( uint16_t port); + BACNET_STACK_EXPORT bool bip_port_changed(void); /* returns network byte order */ + BACNET_STACK_EXPORT uint16_t bip_get_port( void); /* use network byte order for setting */ + BACNET_STACK_EXPORT void bip_set_addr( uint32_t net_address); /* returns network byte order */ + BACNET_STACK_EXPORT uint32_t bip_get_addr( void); /* use network byte order for setting */ + BACNET_STACK_EXPORT void bip_set_broadcast_addr( uint32_t net_address); /* returns network byte order */ + BACNET_STACK_EXPORT uint32_t bip_get_broadcast_addr( void); @@ -108,6 +126,7 @@ extern "C" { a name that is a domain name returns 0 if not found, or an IP address in network byte order */ + BACNET_STACK_EXPORT long bip_getaddrbyname( const char *host_name); diff --git a/src/bacnet/datalink/bip6.h b/src/bacnet/datalink/bip6.h index 59421b6e..12725f13 100644 --- a/src/bacnet/datalink/bip6.h +++ b/src/bacnet/datalink/bip6.h @@ -16,6 +16,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/npdu.h" #include "bacnet/datalink/bvlc6.h" @@ -33,19 +34,25 @@ extern "C" { /* 6 datalink functions used by demo handlers and applications: init, send, receive, cleanup, unicast/broadcast address. Note: the addresses used here are VMAC addresses. */ + BACNET_STACK_EXPORT bool bip6_init( char *ifname); + BACNET_STACK_EXPORT void bip6_cleanup( void); + BACNET_STACK_EXPORT void bip6_get_broadcast_address( BACNET_ADDRESS * my_address); + BACNET_STACK_EXPORT void bip6_get_my_address( BACNET_ADDRESS * my_address); + BACNET_STACK_EXPORT int bip6_send_pdu( BACNET_ADDRESS * dest, BACNET_NPDU_DATA * npdu_data, uint8_t * pdu, unsigned pdu_len); + BACNET_STACK_EXPORT uint16_t bip6_receive( BACNET_ADDRESS * src, uint8_t * pdu, @@ -53,28 +60,37 @@ extern "C" { unsigned timeout); /* functions that are custom per port */ + BACNET_STACK_EXPORT void bip6_set_interface( char *ifname); + BACNET_STACK_EXPORT bool bip6_address_match_self( BACNET_IP6_ADDRESS *addr); + BACNET_STACK_EXPORT bool bip6_set_addr( BACNET_IP6_ADDRESS *addr); + BACNET_STACK_EXPORT bool bip6_get_addr( BACNET_IP6_ADDRESS *addr); + BACNET_STACK_EXPORT void bip6_set_port( uint16_t port); + BACNET_STACK_EXPORT uint16_t bip6_get_port( void); + BACNET_STACK_EXPORT bool bip6_set_broadcast_addr( BACNET_IP6_ADDRESS *addr); /* returns network byte order */ + BACNET_STACK_EXPORT bool bip6_get_broadcast_addr( BACNET_IP6_ADDRESS *addr); + BACNET_STACK_EXPORT int bip6_send_mpdu( BACNET_IP6_ADDRESS *addr, uint8_t * mtu, diff --git a/src/bacnet/datalink/bvlc.h b/src/bacnet/datalink/bvlc.h index 77851927..f03360cd 100644 --- a/src/bacnet/datalink/bvlc.h +++ b/src/bacnet/datalink/bvlc.h @@ -28,6 +28,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/npdu.h" #include "bacnet/datalink/bip.h" @@ -40,6 +41,7 @@ extern "C" { #endif /* __cplusplus */ #if defined(BBMD_ENABLED) && BBMD_ENABLED + BACNET_STACK_EXPORT void bvlc_maintenance_timer( time_t seconds); #else @@ -57,55 +59,67 @@ extern "C" { struct in_addr broadcast_mask; /* in tework format */ } BBMD_TABLE_ENTRY; + BACNET_STACK_EXPORT uint16_t bvlc_receive( BACNET_ADDRESS * src, /* returns the source address */ uint8_t * npdu, /* returns the NPDU */ uint16_t max_npdu, /* amount of space available in the NPDU */ unsigned timeout); /* number of milliseconds to wait for a packet */ + BACNET_STACK_EXPORT int bvlc_send_pdu( BACNET_ADDRESS * dest, /* destination address */ BACNET_NPDU_DATA * npdu_data, /* network information */ uint8_t * pdu, /* any data to be sent - may be null */ unsigned pdu_len); + BACNET_STACK_EXPORT int bvlc_send_mpdu( struct sockaddr_in *dest, uint8_t * mtu, uint16_t mtu_len); #if defined(BBMD_CLIENT_ENABLED) && BBMD_CLIENT_ENABLED + BACNET_STACK_EXPORT int bvlc_encode_write_bdt_init( uint8_t * pdu, unsigned entries); + BACNET_STACK_EXPORT int bvlc_encode_read_fdt( uint8_t * pdu); + BACNET_STACK_EXPORT int bvlc_encode_delete_fdt_entry( uint8_t * pdu, uint32_t address, /* in network byte order */ uint16_t port); /* in network byte order */ + BACNET_STACK_EXPORT int bvlc_encode_original_unicast_npdu( uint8_t * pdu, uint8_t * npdu, unsigned npdu_length); + BACNET_STACK_EXPORT int bvlc_encode_original_broadcast_npdu( uint8_t * pdu, uint8_t * npdu, unsigned npdu_length); #endif + BACNET_STACK_EXPORT int bvlc_encode_read_bdt( uint8_t * pdu); + BACNET_STACK_EXPORT int bvlc_bbmd_read_bdt( uint32_t bbmd_address, uint16_t bbmd_port); /* registers with a bbmd as a foreign device */ + BACNET_STACK_EXPORT int bvlc_register_with_bbmd( uint32_t bbmd_address, /* in network byte order */ uint16_t bbmd_port, /* in network byte order */ uint16_t time_to_live_seconds); /* Note any BVLC_RESULT code, or NAK the BVLL message in the unsupported cases. */ + BACNET_STACK_EXPORT int bvlc_for_non_bbmd( struct sockaddr_in *sout, uint8_t * npdu, @@ -114,6 +128,7 @@ extern "C" { /* Returns the last BVLL Result we received, either as the result of a BBMD * request we sent, or (if not a BBMD or Client), from trying to register * as a foreign device. */ + BACNET_STACK_EXPORT BACNET_BVLC_RESULT bvlc_get_last_result( void); @@ -121,6 +136,7 @@ extern "C" { * We have to store this higher layer code for when the lower layers * need to know what it is, especially to differentiate between * BVLC_ORIGINAL_UNICAST_NPDU and BVLC_ORIGINAL_BROADCAST_NPDU. */ + BACNET_STACK_EXPORT BACNET_BVLC_FUNCTION bvlc_get_function_code( void); @@ -132,26 +148,31 @@ extern "C" { /* Get handle to broadcast distribution table. Returns the number of * valid entries in the table. */ + BACNET_STACK_EXPORT int bvlc_get_bdt_local( const BBMD_TABLE_ENTRY** table); /* Invalidate all entries in the broadcast distribution table */ + BACNET_STACK_EXPORT void bvlc_clear_bdt_local(void); /* Add new entry to broadcast distribution table. Returns true if the new * entry was added successfully */ + BACNET_STACK_EXPORT bool bvlc_add_bdt_entry_local( BBMD_TABLE_ENTRY* entry); /* Backup broadcast distribution table to a file. * Filename is the BBMD_BACKUP_FILE constant */ + BACNET_STACK_EXPORT void bvlc_bdt_backup_local( void); /* Restore broadcast distribution from a file. * Filename is the BBMD_BACKUP_FILE constant */ + BACNET_STACK_EXPORT void bvlc_bdt_restore_local( void); @@ -170,10 +191,12 @@ extern "C" { /* Set global IP address of a NAT enabled router which is used in forwarded * messages. Enables NAT handling. */ + BACNET_STACK_EXPORT void bvlc_set_global_address_for_nat(const struct in_addr* addr); /* Disable NAT handling of BBMD. */ + BACNET_STACK_EXPORT void bvlc_disable_nat(void); #ifdef __cplusplus diff --git a/src/bacnet/datalink/bvlc6.h b/src/bacnet/datalink/bvlc6.h index 95aab400..5a8229a9 100644 --- a/src/bacnet/datalink/bvlc6.h +++ b/src/bacnet/datalink/bvlc6.h @@ -13,6 +13,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/npdu.h" @@ -161,24 +162,30 @@ typedef struct BACnet_IP6_Foreign_Device_Table_Entry { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int bvlc6_encode_address( uint8_t * pdu, uint16_t pdu_size, BACNET_IP6_ADDRESS * ip6_address); + BACNET_STACK_EXPORT int bvlc6_decode_address( uint8_t * pdu, uint16_t pdu_len, BACNET_IP6_ADDRESS * ip6_address); + BACNET_STACK_EXPORT bool bvlc6_address_copy( BACNET_IP6_ADDRESS * dst, BACNET_IP6_ADDRESS * src); + BACNET_STACK_EXPORT bool bvlc6_address_different( BACNET_IP6_ADDRESS * dst, BACNET_IP6_ADDRESS * src); + BACNET_STACK_EXPORT bool bvlc6_address_from_ascii( BACNET_IP6_ADDRESS *addr, const char *addrstr); + BACNET_STACK_EXPORT bool bvlc6_address_set( BACNET_IP6_ADDRESS * addr, uint16_t addr0, @@ -189,6 +196,7 @@ extern "C" { uint16_t addr5, uint16_t addr6, uint16_t addr7); + BACNET_STACK_EXPORT bool bvlc6_address_get( BACNET_IP6_ADDRESS * addr, uint16_t *addr0, @@ -200,35 +208,42 @@ extern "C" { uint16_t *addr6, uint16_t *addr7); + BACNET_STACK_EXPORT bool bvlc6_vmac_address_set( BACNET_ADDRESS * addr, uint32_t device_id); + BACNET_STACK_EXPORT bool bvlc6_vmac_address_get( BACNET_ADDRESS * addr, uint32_t *device_id); + BACNET_STACK_EXPORT int bvlc6_encode_header( uint8_t * pdu, uint16_t pdu_size, uint8_t message_type, uint16_t length); + BACNET_STACK_EXPORT int bvlc6_decode_header( uint8_t * pdu, uint16_t pdu_len, uint8_t * message_type, uint16_t * length); + BACNET_STACK_EXPORT int bvlc6_encode_result( uint8_t * pdu, uint16_t pdu_size, uint32_t vmac, uint16_t result_code); + BACNET_STACK_EXPORT int bvlc6_decode_result( uint8_t * pdu, uint16_t pdu_len, uint32_t * vmac, uint16_t * result_code); + BACNET_STACK_EXPORT int bvlc6_encode_original_unicast( uint8_t * pdu, uint16_t pdu_size, @@ -236,6 +251,7 @@ extern "C" { uint32_t vmac_dst, uint8_t * npdu, uint16_t npdu_len); + BACNET_STACK_EXPORT int bvlc6_decode_original_unicast( uint8_t * pdu, uint16_t pdu_len, @@ -245,12 +261,14 @@ extern "C" { uint16_t npdu_size, uint16_t * npdu_len); + BACNET_STACK_EXPORT int bvlc6_encode_original_broadcast( uint8_t * pdu, uint16_t pdu_size, uint32_t vmac, uint8_t * npdu, uint16_t npdu_len); + BACNET_STACK_EXPORT int bvlc6_decode_original_broadcast( uint8_t * pdu, uint16_t pdu_len, @@ -259,23 +277,27 @@ extern "C" { uint16_t npdu_size, uint16_t * npdu_len); + BACNET_STACK_EXPORT int bvlc6_encode_address_resolution( uint8_t * pdu, uint16_t pdu_size, uint32_t vmac_src, uint32_t vmac_target); + BACNET_STACK_EXPORT int bvlc6_decode_address_resolution( uint8_t * pdu, uint16_t pdu_len, uint32_t * vmac_src, uint32_t * vmac_target); + BACNET_STACK_EXPORT int bvlc6_encode_forwarded_address_resolution( uint8_t * pdu, uint16_t pdu_size, uint32_t vmac_src, uint32_t vmac_target, BACNET_IP6_ADDRESS * bip6_address); + BACNET_STACK_EXPORT int bvlc6_decode_forwarded_address_resolution( uint8_t * pdu, uint16_t pdu_len, @@ -283,37 +305,44 @@ extern "C" { uint32_t * vmac_target, BACNET_IP6_ADDRESS * bip6_address); + BACNET_STACK_EXPORT int bvlc6_encode_address_resolution_ack( uint8_t * pdu, uint16_t pdu_size, uint32_t vmac_src, uint32_t vmac_dst); + BACNET_STACK_EXPORT int bvlc6_decode_address_resolution_ack( uint8_t * pdu, uint16_t pdu_len, uint32_t * vmac_src, uint32_t * vmac_dst); + BACNET_STACK_EXPORT int bvlc6_encode_virtual_address_resolution( uint8_t * pdu, uint16_t pdu_size, uint32_t vmac_src); + BACNET_STACK_EXPORT int bvlc6_decode_virtual_address_resolution( uint8_t * pdu, uint16_t pdu_len, uint32_t * vmac_src); + BACNET_STACK_EXPORT int bvlc6_encode_virtual_address_resolution_ack( uint8_t * pdu, uint16_t pdu_size, uint32_t vmac_src, uint32_t vmac_dst); + BACNET_STACK_EXPORT int bvlc6_decode_virtual_address_resolution_ack( uint8_t * pdu, uint16_t pdu_len, uint32_t * vmac_src, uint32_t * vmac_dst); + BACNET_STACK_EXPORT int bvlc6_encode_forwarded_npdu( uint8_t * pdu, uint16_t pdu_size, @@ -321,6 +350,7 @@ extern "C" { BACNET_IP6_ADDRESS * address, uint8_t * npdu, uint16_t npdu_len); + BACNET_STACK_EXPORT int bvlc6_decode_forwarded_npdu( uint8_t * pdu, uint16_t pdu_len, @@ -330,33 +360,39 @@ extern "C" { uint16_t npdu_size, uint16_t * npdu_len); + BACNET_STACK_EXPORT int bvlc6_encode_register_foreign_device( uint8_t * pdu, uint16_t pdu_size, uint32_t vmac_src, uint16_t ttl_seconds); + BACNET_STACK_EXPORT int bvlc6_decode_register_foreign_device( uint8_t * pdu, uint16_t pdu_len, uint32_t * vmac_src, uint16_t * ttl_seconds); + BACNET_STACK_EXPORT int bvlc6_encode_delete_foreign_device( uint8_t * pdu, uint16_t pdu_size, uint32_t vmac_src, BACNET_IP6_FOREIGN_DEVICE_TABLE_ENTRY * fdt_entry); + BACNET_STACK_EXPORT int bvlc6_decode_delete_foreign_device( uint8_t * pdu, uint16_t pdu_len, uint32_t * vmac_src, BACNET_IP6_FOREIGN_DEVICE_TABLE_ENTRY * fdt_entry); + BACNET_STACK_EXPORT int bvlc6_encode_secure_bvll( uint8_t * pdu, uint16_t pdu_size, uint8_t * sbuf, uint16_t sbuf_len); + BACNET_STACK_EXPORT int bvlc6_decode_secure_bvll( uint8_t * pdu, uint16_t pdu_len, @@ -364,12 +400,14 @@ extern "C" { uint16_t sbuf_size, uint16_t * sbuf_len); + BACNET_STACK_EXPORT int bvlc6_encode_distribute_broadcast_to_network( uint8_t * pdu, uint16_t pdu_size, uint32_t vmac, uint8_t * npdu, uint16_t npdu_len); + BACNET_STACK_EXPORT int bvlc6_decode_distribute_broadcast_to_network( uint8_t * pdu, uint16_t pdu_len, @@ -380,6 +418,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void test_BVLC6( Test * pTest); #endif diff --git a/src/bacnet/datalink/crc.h b/src/bacnet/datalink/crc.h index d8b0fe3d..f4c674d9 100644 --- a/src/bacnet/datalink/crc.h +++ b/src/bacnet/datalink/crc.h @@ -26,14 +26,17 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT uint8_t CRC_Calc_Header( uint8_t dataValue, uint8_t crcValue); + BACNET_STACK_EXPORT uint16_t CRC_Calc_Data( uint8_t dataValue, uint16_t crcValue); diff --git a/src/bacnet/datalink/datalink.h b/src/bacnet/datalink/datalink.h index 3b19b81f..b115253f 100644 --- a/src/bacnet/datalink/datalink.h +++ b/src/bacnet/datalink/datalink.h @@ -24,6 +24,7 @@ #ifndef DATALINK_H #define DATALINK_H +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/config.h" #include "bacnet/bacdef.h" @@ -72,7 +73,8 @@ #define datalink_cleanup bip_cleanup #define datalink_get_broadcast_address bip_get_broadcast_address #ifdef BAC_ROUTING -extern void routed_get_my_address( +BACNET_STACK_EXPORT +void routed_get_my_address( BACNET_ADDRESS * my_address); #define datalink_get_my_address routed_get_my_address #else @@ -99,25 +101,32 @@ extern void routed_get_my_address( extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int datalink_send_pdu( BACNET_ADDRESS * dest, BACNET_NPDU_DATA * npdu_data, uint8_t * pdu, unsigned pdu_len); - extern uint16_t datalink_receive( + BACNET_STACK_EXPORT + uint16_t datalink_receive( BACNET_ADDRESS * src, uint8_t * pdu, uint16_t max_pdu, unsigned timeout); - extern void datalink_cleanup( + BACNET_STACK_EXPORT + void datalink_cleanup( void); - extern void datalink_get_broadcast_address( + BACNET_STACK_EXPORT + void datalink_get_broadcast_address( BACNET_ADDRESS * dest); - extern void datalink_get_my_address( + BACNET_STACK_EXPORT + void datalink_get_my_address( BACNET_ADDRESS * my_address); - extern void datalink_set_interface( + BACNET_STACK_EXPORT + void datalink_set_interface( char *ifname); - extern void datalink_set( + BACNET_STACK_EXPORT + void datalink_set( char *datalink_string); #ifdef __cplusplus diff --git a/src/bacnet/datalink/dlenv.h b/src/bacnet/datalink/dlenv.h index 108b8e2f..81318189 100644 --- a/src/bacnet/datalink/dlenv.h +++ b/src/bacnet/datalink/dlenv.h @@ -25,24 +25,33 @@ #ifndef DLENV_H #define DLENV_H +#include "bacnet/bacnet_stack_exports.h" + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void dlenv_init( void); + BACNET_STACK_EXPORT int dlenv_register_as_foreign_device( void); + BACNET_STACK_EXPORT void dlenv_maintenance_timer( uint16_t elapsed_seconds); /* Simple setters and getter. */ + BACNET_STACK_EXPORT void dlenv_bbmd_address_set( long address); + BACNET_STACK_EXPORT void dlenv_bbmd_port_set( int port); + BACNET_STACK_EXPORT void dlenv_bbmd_ttl_set( int ttl_secs); + BACNET_STACK_EXPORT int dlenv_bbmd_result( void); diff --git a/src/bacnet/datalink/dlmstp.h b/src/bacnet/datalink/dlmstp.h index 05d4185e..d708e071 100644 --- a/src/bacnet/datalink/dlmstp.h +++ b/src/bacnet/datalink/dlmstp.h @@ -27,6 +27,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/npdu.h" @@ -47,14 +48,18 @@ typedef struct dlmstp_packet { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT bool dlmstp_init( char *ifname); + BACNET_STACK_EXPORT void dlmstp_reset( void); + BACNET_STACK_EXPORT void dlmstp_cleanup( void); /* returns number of bytes sent on success, negative on failure */ + BACNET_STACK_EXPORT int dlmstp_send_pdu( BACNET_ADDRESS * dest, /* destination address */ BACNET_NPDU_DATA * npdu_data, /* network information */ @@ -62,6 +67,7 @@ extern "C" { unsigned pdu_len); /* number of bytes of data */ /* returns the number of octets in the PDU, or zero on failure */ + BACNET_STACK_EXPORT uint16_t dlmstp_receive( BACNET_ADDRESS * src, /* source address */ uint8_t * pdu, /* PDU data */ @@ -75,8 +81,10 @@ extern "C" { /* nodes. This may be used to allocate more or less of the available link */ /* bandwidth to particular nodes. If Max_Info_Frames is not writable in a */ /* node, its value shall be 1. */ + BACNET_STACK_EXPORT void dlmstp_set_max_info_frames( uint8_t max_info_frames); + BACNET_STACK_EXPORT uint8_t dlmstp_max_info_frames( void); @@ -85,35 +93,47 @@ extern "C" { /* allowable address for master nodes. The value of Max_Master shall be */ /* less than or equal to 127. If Max_Master is not writable in a node, */ /* its value shall be 127. */ + BACNET_STACK_EXPORT void dlmstp_set_max_master( uint8_t max_master); + BACNET_STACK_EXPORT uint8_t dlmstp_max_master( void); /* MAC address 0-127 */ + BACNET_STACK_EXPORT void dlmstp_set_mac_address( uint8_t my_address); + BACNET_STACK_EXPORT uint8_t dlmstp_mac_address( void); + BACNET_STACK_EXPORT void dlmstp_get_my_address( BACNET_ADDRESS * my_address); + BACNET_STACK_EXPORT void dlmstp_get_broadcast_address( BACNET_ADDRESS * dest); /* destination address */ /* RS485 Baud Rate 9600, 19200, 38400, 57600, 115200 */ + BACNET_STACK_EXPORT void dlmstp_set_baud_rate( uint32_t baud); + BACNET_STACK_EXPORT uint32_t dlmstp_baud_rate( void); + BACNET_STACK_EXPORT void dlmstp_fill_bacnet_address( BACNET_ADDRESS * src, uint8_t mstp_address); + BACNET_STACK_EXPORT bool dlmstp_sole_master( void); + BACNET_STACK_EXPORT bool dlmstp_send_pdu_queue_empty(void); + BACNET_STACK_EXPORT bool dlmstp_send_pdu_queue_full(void); #ifdef __cplusplus diff --git a/src/bacnet/datalink/ethernet.h b/src/bacnet/datalink/ethernet.h index 61f3be9f..13cf03df 100644 --- a/src/bacnet/datalink/ethernet.h +++ b/src/bacnet/datalink/ethernet.h @@ -27,6 +27,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/npdu.h" @@ -38,15 +39,19 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT bool ethernet_valid( void); + BACNET_STACK_EXPORT void ethernet_cleanup( void); + BACNET_STACK_EXPORT bool ethernet_init( char *interface_name); /* function to send a packet out the 802.2 socket */ /* returns number of bytes sent on success, negative on failure */ + BACNET_STACK_EXPORT int ethernet_send_pdu( BACNET_ADDRESS * dest, /* destination address */ BACNET_NPDU_DATA * npdu_data, /* network information */ @@ -55,23 +60,29 @@ extern "C" { /* receives an 802.2 framed packet */ /* returns the number of octets in the PDU, or zero on failure */ + BACNET_STACK_EXPORT uint16_t ethernet_receive( BACNET_ADDRESS * src, /* source address */ uint8_t * pdu, /* PDU data */ uint16_t max_pdu, /* amount of space available in the PDU */ unsigned timeout); /* milliseconds to wait for a packet */ + BACNET_STACK_EXPORT void ethernet_set_my_address( BACNET_ADDRESS * my_address); + BACNET_STACK_EXPORT void ethernet_get_my_address( BACNET_ADDRESS * my_address); + BACNET_STACK_EXPORT void ethernet_get_broadcast_address( BACNET_ADDRESS * dest); /* destination address */ /* some functions from Linux driver */ + BACNET_STACK_EXPORT void ethernet_debug_address( const char *info, BACNET_ADDRESS * dest); + BACNET_STACK_EXPORT int ethernet_send( uint8_t * mtu, int mtu_len); diff --git a/src/bacnet/datalink/mstp.h b/src/bacnet/datalink/mstp.h index 50d30bf9..b6874f7b 100644 --- a/src/bacnet/datalink/mstp.h +++ b/src/bacnet/datalink/mstp.h @@ -28,6 +28,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/datalink/mstpdef.h" struct mstp_port_struct_t { @@ -173,21 +174,27 @@ struct mstp_port_struct_t { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void MSTP_Init( volatile struct mstp_port_struct_t *mstp_port); + BACNET_STACK_EXPORT void MSTP_Receive_Frame_FSM( volatile struct mstp_port_struct_t *mstp_port); + BACNET_STACK_EXPORT bool MSTP_Master_Node_FSM( volatile struct mstp_port_struct_t *mstp_port); + BACNET_STACK_EXPORT void MSTP_Slave_Node_FSM( volatile struct mstp_port_struct_t *mstp_port); /* returns true if line is active */ + BACNET_STACK_EXPORT bool MSTP_Line_Active( volatile struct mstp_port_struct_t *mstp_port); + BACNET_STACK_EXPORT uint16_t MSTP_Create_Frame( uint8_t * buffer, /* where frame is loaded */ uint16_t buffer_len, /* amount of space available */ @@ -197,6 +204,7 @@ extern "C" { uint8_t * data, /* any data to be sent - may be null */ uint16_t data_len); /* number of bytes of data (up to 501) */ + BACNET_STACK_EXPORT void MSTP_Create_And_Send_Frame( volatile struct mstp_port_struct_t *mstp_port, /* port to send from */ uint8_t frame_type, /* type of frame to send - see defines */ @@ -205,23 +213,27 @@ extern "C" { uint8_t * data, /* any data to be sent - may be null */ uint16_t data_len); + BACNET_STACK_EXPORT void MSTP_Fill_BACnet_Address( BACNET_ADDRESS * src, uint8_t mstp_address); /* functions used by the MS/TP state machine to put or get data */ /* FIXME: developer must implement these in their DLMSTP module */ + BACNET_STACK_EXPORT uint16_t MSTP_Put_Receive( volatile struct mstp_port_struct_t *mstp_port); /* for the MS/TP state machine to use for getting data to send */ /* Return: amount of PDU data */ + BACNET_STACK_EXPORT uint16_t MSTP_Get_Send( volatile struct mstp_port_struct_t *mstp_port, unsigned timeout); /* milliseconds to wait for a packet */ /* for the MS/TP state machine to use for getting the reply for Data-Expecting-Reply Frame */ /* Return: amount of PDU data */ + BACNET_STACK_EXPORT uint16_t MSTP_Get_Reply( volatile struct mstp_port_struct_t *mstp_port, unsigned timeout); /* milliseconds to wait for a packet */ diff --git a/src/bacnet/datalink/mstptext.h b/src/bacnet/datalink/mstptext.h index a409eb69..b25e418a 100644 --- a/src/bacnet/datalink/mstptext.h +++ b/src/bacnet/datalink/mstptext.h @@ -24,14 +24,19 @@ #ifndef MSTPTEXT_H #define MSTPTEXT_H +#include "bacnet/bacnet_stack_exports.h" + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT const char *mstptext_receive_state( unsigned index); + BACNET_STACK_EXPORT const char *mstptext_master_state( unsigned index); + BACNET_STACK_EXPORT const char *mstptext_frame_type( unsigned index); diff --git a/src/bacnet/datetime.h b/src/bacnet/datetime.h index 1d24a4ab..c00c0a4e 100644 --- a/src/bacnet/datetime.h +++ b/src/bacnet/datetime.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" typedef enum BACnet_Weekday { BACNET_WEEKDAY_MONDAY = 1, @@ -76,21 +77,25 @@ extern "C" { #endif /* __cplusplus */ /* utility initialization functions */ + BACNET_STACK_EXPORT void datetime_set_date( BACNET_DATE * bdate, uint16_t year, uint8_t month, uint8_t day); + BACNET_STACK_EXPORT void datetime_set_time( BACNET_TIME * btime, uint8_t hour, uint8_t minute, uint8_t seconds, uint8_t hundredths); + BACNET_STACK_EXPORT void datetime_set( BACNET_DATE_TIME * bdatetime, BACNET_DATE * bdate, BACNET_TIME * btime); + BACNET_STACK_EXPORT void datetime_set_values( BACNET_DATE_TIME * bdatetime, uint16_t year, @@ -101,40 +106,53 @@ extern "C" { uint8_t seconds, uint8_t hundredths); /* utility test for validity */ + BACNET_STACK_EXPORT bool datetime_is_valid( BACNET_DATE * bdate, BACNET_TIME * btime); + BACNET_STACK_EXPORT bool datetime_time_is_valid( BACNET_TIME * btime); + BACNET_STACK_EXPORT bool datetime_date_is_valid( BACNET_DATE * bdate); + BACNET_STACK_EXPORT /* date and time calculations and summaries */ uint32_t datetime_days_since_epoch( BACNET_DATE * bdate); + BACNET_STACK_EXPORT void datetime_days_since_epoch_into_date( uint32_t days, BACNET_DATE * bdate); + BACNET_STACK_EXPORT uint32_t datetime_day_of_year( BACNET_DATE *bdate); + BACNET_STACK_EXPORT void datetime_day_of_year_into_date( uint32_t days, uint16_t year, BACNET_DATE *bdate); + BACNET_STACK_EXPORT bool datetime_is_leap_year( uint16_t year); + BACNET_STACK_EXPORT uint8_t datetime_month_days( uint16_t year, uint8_t month); + BACNET_STACK_EXPORT uint8_t datetime_day_of_week( uint16_t year, uint8_t month, uint8_t day); + BACNET_STACK_EXPORT bool datetime_ymd_is_valid( uint16_t year, uint8_t month, uint8_t day); + BACNET_STACK_EXPORT uint32_t datetime_seconds_since_midnight( BACNET_TIME * btime); + BACNET_STACK_EXPORT uint16_t datetime_minutes_since_midnight( BACNET_TIME * btime); @@ -142,12 +160,15 @@ extern "C" { if the date/times are the same, return is 0 if date1 is before date2, returns negative if date1 is after date2, returns positive */ + BACNET_STACK_EXPORT int datetime_compare_date( BACNET_DATE * date1, BACNET_DATE * date2); + BACNET_STACK_EXPORT int datetime_compare_time( BACNET_TIME * time1, BACNET_TIME * time2); + BACNET_STACK_EXPORT int datetime_compare( BACNET_DATE_TIME * datetime1, BACNET_DATE_TIME * datetime2); @@ -158,112 +179,148 @@ extern "C" { int datetime_wildcard_compare_date( BACNET_DATE * date1, BACNET_DATE * date2); + BACNET_STACK_EXPORT int datetime_wildcard_compare_time( BACNET_TIME * time1, BACNET_TIME * time2); + BACNET_STACK_EXPORT int datetime_wildcard_compare( BACNET_DATE_TIME * datetime1, BACNET_DATE_TIME * datetime2); /* utility copy functions */ + BACNET_STACK_EXPORT void datetime_copy_date( BACNET_DATE * dest, BACNET_DATE * src); + BACNET_STACK_EXPORT void datetime_copy_time( BACNET_TIME * dest, BACNET_TIME * src); + BACNET_STACK_EXPORT void datetime_copy( BACNET_DATE_TIME * dest, BACNET_DATE_TIME * src); /* utility add or subtract minutes function */ + BACNET_STACK_EXPORT void datetime_add_minutes( BACNET_DATE_TIME * bdatetime, int32_t minutes); /* date and time wildcards */ + BACNET_STACK_EXPORT bool datetime_wildcard_year( BACNET_DATE *bdate); + BACNET_STACK_EXPORT void datetime_wildcard_year_set( BACNET_DATE *bdate); + BACNET_STACK_EXPORT bool datetime_wildcard_month( BACNET_DATE *bdate); + BACNET_STACK_EXPORT void datetime_wildcard_month_set( BACNET_DATE *bdate); + BACNET_STACK_EXPORT bool datetime_wildcard_day( BACNET_DATE *bdate); + BACNET_STACK_EXPORT void datetime_wildcard_day_set( BACNET_DATE *bdate); + BACNET_STACK_EXPORT bool datetime_wildcard_weekday( BACNET_DATE *bdate); + BACNET_STACK_EXPORT void datetime_wildcard_weekday_set( BACNET_DATE *bdate); + BACNET_STACK_EXPORT bool datetime_wildcard_hour( BACNET_TIME *btime); + BACNET_STACK_EXPORT void datetime_wildcard_hour_set( BACNET_TIME *btime); + BACNET_STACK_EXPORT bool datetime_wildcard_minute( BACNET_TIME *btime); + BACNET_STACK_EXPORT void datetime_wildcard_minute_set( BACNET_TIME *btime); + BACNET_STACK_EXPORT bool datetime_wildcard_second( BACNET_TIME *btime); + BACNET_STACK_EXPORT void datetime_wildcard_second_set( BACNET_TIME *btime); + BACNET_STACK_EXPORT bool datetime_wildcard_hundredths( BACNET_TIME *btime); + BACNET_STACK_EXPORT void datetime_wildcard_hundredths_set( BACNET_TIME *btime); + BACNET_STACK_EXPORT bool datetime_wildcard( BACNET_DATE_TIME * bdatetime); + BACNET_STACK_EXPORT bool datetime_wildcard_present( BACNET_DATE_TIME * bdatetime); + BACNET_STACK_EXPORT void datetime_wildcard_set( BACNET_DATE_TIME * bdatetime); + BACNET_STACK_EXPORT void datetime_date_wildcard_set( BACNET_DATE * bdate); + BACNET_STACK_EXPORT void datetime_time_wildcard_set( BACNET_TIME * btime); + BACNET_STACK_EXPORT bool datetime_local_to_utc( BACNET_DATE_TIME * utc_time, BACNET_DATE_TIME * local_time, int16_t utc_offset_minutes, int8_t dst_adjust_minutes); + BACNET_STACK_EXPORT bool datetime_utc_to_local( BACNET_DATE_TIME * local_time, BACNET_DATE_TIME * utc_time, int16_t utc_offset_minutes, int8_t dst_adjust_minutes); + BACNET_STACK_EXPORT int bacapp_encode_datetime( uint8_t * apdu, BACNET_DATE_TIME * value); + BACNET_STACK_EXPORT int bacapp_encode_context_datetime( uint8_t * apdu, uint8_t tag_number, BACNET_DATE_TIME * value); + BACNET_STACK_EXPORT int bacapp_decode_datetime( uint8_t * apdu, BACNET_DATE_TIME * value); + BACNET_STACK_EXPORT int bacapp_decode_context_datetime( uint8_t * apdu, uint8_t tag_number, BACNET_DATE_TIME * value); /* implementation agnostic functions - create your own! */ + BACNET_STACK_EXPORT bool datetime_local( BACNET_DATE * bdate, BACNET_TIME * btime, int16_t * utc_offset_minutes, bool * dst_active); + BACNET_STACK_EXPORT void datetime_init(void); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testDateTime( Test * pTest); #endif diff --git a/src/bacnet/dcc.h b/src/bacnet/dcc.h index 7d63f2b0..f61fe010 100644 --- a/src/bacnet/dcc.h +++ b/src/bacnet/dcc.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacenum.h" #include "bacnet/bacstr.h" @@ -34,27 +35,35 @@ extern "C" { #endif /* __cplusplus */ /* return the status */ + BACNET_STACK_EXPORT BACNET_COMMUNICATION_ENABLE_DISABLE dcc_enable_status( void); + BACNET_STACK_EXPORT bool dcc_communication_enabled( void); + BACNET_STACK_EXPORT bool dcc_communication_disabled( void); + BACNET_STACK_EXPORT bool dcc_communication_initiation_disabled( void); /* return the time */ + BACNET_STACK_EXPORT uint32_t dcc_duration_seconds( void); /* called every second or so. If more than one second, then seconds should be the number of seconds to tick away */ + BACNET_STACK_EXPORT void dcc_timer_seconds( uint32_t seconds); /* setup the communication values */ + BACNET_STACK_EXPORT bool dcc_set_status_duration( BACNET_COMMUNICATION_ENABLE_DISABLE status, uint16_t minutes); /* encode service */ + BACNET_STACK_EXPORT int dcc_encode_apdu( uint8_t * apdu, uint8_t invoke_id, @@ -63,6 +72,7 @@ extern "C" { BACNET_CHARACTER_STRING * password); /* NULL=optional */ /* decode the service request only */ + BACNET_STACK_EXPORT int dcc_decode_service_request( uint8_t * apdu, unsigned apdu_len, @@ -72,6 +82,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT int dcc_decode_apdu( uint8_t * apdu, unsigned apdu_len, @@ -80,6 +91,7 @@ extern "C" { BACNET_COMMUNICATION_ENABLE_DISABLE * enable_disable, BACNET_CHARACTER_STRING * password); + BACNET_STACK_EXPORT void test_DeviceCommunicationControl( Test * pTest); #endif diff --git a/src/bacnet/event.h b/src/bacnet/event.h index 25e93b61..0966d256 100644 --- a/src/bacnet/event.h +++ b/src/bacnet/event.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacenum.h" #include "bacnet/bacapp.h" #include "bacnet/timestamp.h" @@ -151,6 +152,7 @@ extern "C" { ** Creates a Confirmed Event Notification APDU ** ****************************************************/ + BACNET_STACK_EXPORT int cevent_notify_encode_apdu( uint8_t * apdu, uint8_t invoke_id, @@ -161,6 +163,7 @@ extern "C" { ** Creates an Unconfirmed Event Notification APDU ** ****************************************************/ + BACNET_STACK_EXPORT int uevent_notify_encode_apdu( uint8_t * apdu, BACNET_EVENT_NOTIFICATION_DATA * data); @@ -170,6 +173,7 @@ extern "C" { ** Encodes the service data part of Event Notification ** ****************************************************/ + BACNET_STACK_EXPORT int event_notify_encode_service_request( uint8_t * apdu, BACNET_EVENT_NOTIFICATION_DATA * data); @@ -179,6 +183,7 @@ extern "C" { ** Decodes the service data part of Event Notification ** ****************************************************/ + BACNET_STACK_EXPORT int event_notify_decode_service_request( uint8_t * apdu, unsigned apdu_len, @@ -189,6 +194,7 @@ extern "C" { ** Sends an Unconfirmed Event Notifcation to a dest ** ****************************************************/ + BACNET_STACK_EXPORT int uevent_notify_send( uint8_t * buffer, BACNET_EVENT_NOTIFICATION_DATA * data, diff --git a/src/bacnet/get_alarm_sum.h b/src/bacnet/get_alarm_sum.h index e89d28b9..e4d51a4f 100644 --- a/src/bacnet/get_alarm_sum.h +++ b/src/bacnet/get_alarm_sum.h @@ -53,25 +53,30 @@ typedef int ( extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int get_alarm_summary_encode_apdu( uint8_t * apdu, uint8_t invoke_id); /* set GetAlarmSummary function */ + BACNET_STACK_EXPORT void handler_get_alarm_summary_set( BACNET_OBJECT_TYPE object_type, get_alarm_summary_function pFunction); /* encode service */ + BACNET_STACK_EXPORT int get_alarm_summary_ack_encode_apdu_init( uint8_t * apdu, uint8_t invoke_id); + BACNET_STACK_EXPORT int get_alarm_summary_ack_encode_apdu_data( uint8_t * apdu, size_t max_apdu, BACNET_GET_ALARM_SUMMARY_DATA * get_alarm_data); + BACNET_STACK_EXPORT int get_alarm_summary_ack_decode_apdu_data( uint8_t * apdu, size_t max_apdu, diff --git a/src/bacnet/getevent.h b/src/bacnet/getevent.h index 3aa1edd8..f64a08e4 100644 --- a/src/bacnet/getevent.h +++ b/src/bacnet/getevent.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/timestamp.h" @@ -55,31 +56,37 @@ typedef int ( extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int getevent_encode_apdu( uint8_t * apdu, uint8_t invoke_id, BACNET_OBJECT_ID * lastReceivedObjectIdentifier); + BACNET_STACK_EXPORT int getevent_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_OBJECT_ID * object_id); + BACNET_STACK_EXPORT int getevent_ack_encode_apdu_init( uint8_t * apdu, size_t max_apdu, uint8_t invoke_id); + BACNET_STACK_EXPORT int getevent_ack_encode_apdu_data( uint8_t * apdu, size_t max_apdu, BACNET_GET_EVENT_INFORMATION_DATA * get_event_data); + BACNET_STACK_EXPORT int getevent_ack_encode_apdu_end( uint8_t * apdu, size_t max_apdu, bool moreEvents); + BACNET_STACK_EXPORT int getevent_ack_decode_service_request( uint8_t * apdu, int apdu_len, /* total length of the apdu */ @@ -88,12 +95,14 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT int getevent_decode_apdu( uint8_t * apdu, unsigned apdu_len, uint8_t * invoke_id, BACNET_OBJECT_ID * lastReceivedObjectIdentifier); + BACNET_STACK_EXPORT int getevent_ack_decode_apdu( uint8_t * apdu, int apdu_len, /* total length of the apdu */ @@ -101,9 +110,11 @@ extern "C" { BACNET_GET_EVENT_INFORMATION_DATA * get_event_data, bool * moreEvents); + BACNET_STACK_EXPORT void testGetEventInformationAck( Test * pTest); + BACNET_STACK_EXPORT void testGetEventInformation( Test * pTest); diff --git a/src/bacnet/iam.h b/src/bacnet/iam.h index 191201b0..0267d670 100644 --- a/src/bacnet/iam.h +++ b/src/bacnet/iam.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacaddr.h" #include "bacnet/npdu.h" @@ -34,6 +35,7 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int iam_encode_apdu( uint8_t * apdu, uint32_t device_id, @@ -41,6 +43,7 @@ extern "C" { int segmentation, uint16_t vendor_id); + BACNET_STACK_EXPORT int iam_decode_service_request( uint8_t * apdu, uint32_t * pDevice_id, @@ -50,6 +53,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT int iam_decode_apdu( uint8_t * apdu, uint32_t * pDevice_id, @@ -57,6 +61,7 @@ extern "C" { int *pSegmentation, uint16_t * pVendor_id); + BACNET_STACK_EXPORT void testIAm( Test * pTest); #endif diff --git a/src/bacnet/ihave.h b/src/bacnet/ihave.h index 41ee3eb9..99e3a33e 100644 --- a/src/bacnet/ihave.h +++ b/src/bacnet/ihave.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacstr.h" typedef struct BACnet_I_Have_Data { @@ -38,15 +39,18 @@ typedef struct BACnet_I_Have_Data { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int ihave_encode_apdu( uint8_t * apdu, BACNET_I_HAVE_DATA * data); + BACNET_STACK_EXPORT int ihave_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_I_HAVE_DATA * data); + BACNET_STACK_EXPORT int ihave_decode_apdu( uint8_t * apdu, unsigned apdu_len, @@ -54,6 +58,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testIHave( Test * pTest); #endif diff --git a/src/bacnet/indtext.h b/src/bacnet/indtext.h index ee9f8c3e..fd34aa37 100644 --- a/src/bacnet/indtext.h +++ b/src/bacnet/indtext.h @@ -27,6 +27,7 @@ #include #include #include +#include "bacnet/bacnet_stack_exports.h" /* index and text pairs */ typedef const struct { @@ -43,33 +44,39 @@ extern "C" { If the string is not found, false is returned If the string is found, true is returned and the found_index contains the first index where the string was found. */ + BACNET_STACK_EXPORT bool indtext_by_string( INDTEXT_DATA * data_list, const char *search_name, unsigned *found_index); /* case insensitive version */ + BACNET_STACK_EXPORT bool indtext_by_istring( INDTEXT_DATA * data_list, const char *search_name, unsigned *found_index); /* Searches for a matching string and returns the index to the string or the default_index if the string is not found. */ + BACNET_STACK_EXPORT unsigned indtext_by_string_default( INDTEXT_DATA * data_list, const char *search_name, unsigned default_index); /* case insensitive version */ + BACNET_STACK_EXPORT unsigned indtext_by_istring_default( INDTEXT_DATA * data_list, const char *search_name, unsigned default_index); /* for a given index, return the matching string, or NULL if not found */ + BACNET_STACK_EXPORT const char *indtext_by_index( INDTEXT_DATA * data_list, unsigned index); /* for a given index, return the matching string, or default_name if not found */ + BACNET_STACK_EXPORT const char *indtext_by_index_default( INDTEXT_DATA * data_list, unsigned index, @@ -78,6 +85,7 @@ extern "C" { or default_name if not found. if the index is before the split, the before_split_default_name is used */ + BACNET_STACK_EXPORT const char *indtext_by_index_split_default( INDTEXT_DATA * data_list, unsigned index, @@ -86,6 +94,7 @@ extern "C" { const char *default_name); /* returns the number of elements in the list */ + BACNET_STACK_EXPORT unsigned indtext_count( INDTEXT_DATA * data_list); @@ -98,6 +107,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testIndexText( Test * pTest); #endif diff --git a/src/bacnet/lighting.h b/src/bacnet/lighting.h index 2d3c43bb..d9bc63e2 100644 --- a/src/bacnet/lighting.h +++ b/src/bacnet/lighting.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacenum.h" /* BACnetLightingCommand ::= SEQUENCE { @@ -58,20 +59,25 @@ typedef struct BACnetLightingCommand { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int lighting_command_encode( uint8_t * apdu, BACNET_LIGHTING_COMMAND * data); + BACNET_STACK_EXPORT int lighting_command_encode_context( uint8_t * apdu, uint8_t tag_number, BACNET_LIGHTING_COMMAND * value); + BACNET_STACK_EXPORT int lighting_command_decode( uint8_t * apdu, unsigned apdu_max_len, BACNET_LIGHTING_COMMAND * data); + BACNET_STACK_EXPORT bool lighting_command_copy( BACNET_LIGHTING_COMMAND * dst, BACNET_LIGHTING_COMMAND * src); + BACNET_STACK_EXPORT bool lighting_command_same( BACNET_LIGHTING_COMMAND * dst, BACNET_LIGHTING_COMMAND * src); diff --git a/src/bacnet/lso.h b/src/bacnet/lso.h index e81e011b..12d2d0fa 100644 --- a/src/bacnet/lso.h +++ b/src/bacnet/lso.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacenum.h" #include "bacnet/bacdef.h" #include "bacnet/bacstr.h" @@ -45,11 +46,13 @@ extern "C" { } BACNET_LSO_DATA; + BACNET_STACK_EXPORT int lso_encode_apdu( uint8_t * apdu, uint8_t invoke_id, BACNET_LSO_DATA * data); /* decode the service request only */ + BACNET_STACK_EXPORT int lso_decode_service_request( uint8_t * apdu, unsigned apdu_len, @@ -58,6 +61,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testLSO( Test * pTest); #endif diff --git a/src/bacnet/npdu.h b/src/bacnet/npdu.h index b6eb098c..54894f55 100644 --- a/src/bacnet/npdu.h +++ b/src/bacnet/npdu.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -64,25 +65,30 @@ typedef struct router_port_t { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT uint8_t npdu_encode_max_seg_max_apdu( int max_segs, int max_apdu); + BACNET_STACK_EXPORT int npdu_encode_pdu( uint8_t * npdu, BACNET_ADDRESS * dest, BACNET_ADDRESS * src, BACNET_NPDU_DATA * npdu_data); + BACNET_STACK_EXPORT void npdu_encode_npdu_data( BACNET_NPDU_DATA * npdu, bool data_expecting_reply, BACNET_MESSAGE_PRIORITY priority); + BACNET_STACK_EXPORT void npdu_copy_data( BACNET_NPDU_DATA * dest, BACNET_NPDU_DATA * src); + BACNET_STACK_EXPORT int npdu_decode( uint8_t * npdu, BACNET_ADDRESS * dest, diff --git a/src/bacnet/property.h b/src/bacnet/property.h index 2322215a..e9084b07 100644 --- a/src/bacnet/property.h +++ b/src/bacnet/property.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/rp.h" @@ -37,17 +38,22 @@ extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT const int * property_list_optional( BACNET_OBJECT_TYPE object_type); + BACNET_STACK_EXPORT const int * property_list_required( BACNET_OBJECT_TYPE object_type); + BACNET_STACK_EXPORT void property_list_special( BACNET_OBJECT_TYPE object_type, struct special_property_list_t *pPropertyList); + BACNET_STACK_EXPORT BACNET_PROPERTY_ID property_list_special_property( BACNET_OBJECT_TYPE object_type, BACNET_PROPERTY_ID special_property, unsigned index); + BACNET_STACK_EXPORT unsigned property_list_special_count( BACNET_OBJECT_TYPE object_type, BACNET_PROPERTY_ID special_property); diff --git a/src/bacnet/proplist.h b/src/bacnet/proplist.h index a45b3824..f0a57511 100644 --- a/src/bacnet/proplist.h +++ b/src/bacnet/proplist.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" #include "bacnet/rp.h" @@ -46,11 +47,14 @@ struct special_property_list_t { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT unsigned property_list_count( const int *pList); + BACNET_STACK_EXPORT bool property_list_member( const int *pList, int object_property); + BACNET_STACK_EXPORT int property_list_encode( BACNET_READ_PROPERTY_DATA * rpdata, const int *pListRequired, diff --git a/src/bacnet/ptransfer.h b/src/bacnet/ptransfer.h index 3a2bbc74..ea167022 100644 --- a/src/bacnet/ptransfer.h +++ b/src/bacnet/ptransfer.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" typedef struct BACnet_Private_Transfer_Data { uint16_t vendorID; @@ -38,24 +39,29 @@ typedef struct BACnet_Private_Transfer_Data { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT int ptransfer_encode_apdu( uint8_t * apdu, uint8_t invoke_id, BACNET_PRIVATE_TRANSFER_DATA * private_data); + BACNET_STACK_EXPORT int uptransfer_encode_apdu( uint8_t * apdu, BACNET_PRIVATE_TRANSFER_DATA * private_data); + BACNET_STACK_EXPORT int ptransfer_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_PRIVATE_TRANSFER_DATA * private_data); + BACNET_STACK_EXPORT int ptransfer_error_encode_apdu( uint8_t * apdu, uint8_t invoke_id, BACNET_ERROR_CLASS error_class, BACNET_ERROR_CODE error_code, BACNET_PRIVATE_TRANSFER_DATA * private_data); + BACNET_STACK_EXPORT int ptransfer_error_decode_service_request( uint8_t * apdu, unsigned apdu_len, @@ -63,6 +69,7 @@ extern "C" { BACNET_ERROR_CODE * error_code, BACNET_PRIVATE_TRANSFER_DATA * private_data); + BACNET_STACK_EXPORT int ptransfer_ack_encode_apdu( uint8_t * apdu, uint8_t invoke_id, @@ -72,10 +79,13 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void test_Private_Transfer_Request( Test * pTest); + BACNET_STACK_EXPORT void test_Private_Transfer_Ack( Test * pTest); + BACNET_STACK_EXPORT void test_Private_Transfer_Error( Test * pTest); #endif diff --git a/src/bacnet/rd.h b/src/bacnet/rd.h index e5aacc2f..edb6bd9f 100644 --- a/src/bacnet/rd.h +++ b/src/bacnet/rd.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacenum.h" typedef struct BACnet_Reinitialize_Device_Data { @@ -45,6 +46,7 @@ extern "C" { #endif /* __cplusplus */ /* encode service */ + BACNET_STACK_EXPORT int rd_encode_apdu( uint8_t * apdu, uint8_t invoke_id, @@ -52,6 +54,7 @@ extern "C" { BACNET_CHARACTER_STRING * password); /* decode the service request only */ + BACNET_STACK_EXPORT int rd_decode_service_request( uint8_t * apdu, unsigned apdu_len, @@ -60,6 +63,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT int rd_decode_apdu( uint8_t * apdu, unsigned apdu_len, @@ -67,6 +71,7 @@ extern "C" { BACNET_REINITIALIZED_STATE * state, BACNET_CHARACTER_STRING * password); + BACNET_STACK_EXPORT void test_ReinitializeDevice( Test * pTest); #endif diff --git a/src/bacnet/readrange.h b/src/bacnet/readrange.h index ee12a83f..03da2e3f 100644 --- a/src/bacnet/readrange.h +++ b/src/bacnet/readrange.h @@ -24,6 +24,7 @@ #ifndef READRANGE_H #define READRANGE_H +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacstr.h" #include "bacnet/datetime.h" @@ -131,26 +132,31 @@ extern "C" { BACNET_READ_RANGE_DATA * pRequest, /* Info on the request */ RR_PROP_INFO * pInfo); /* Where to write the response to */ + BACNET_STACK_EXPORT int rr_encode_apdu( uint8_t * apdu, uint8_t invoke_id, BACNET_READ_RANGE_DATA * rrdata); + BACNET_STACK_EXPORT int rr_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_READ_RANGE_DATA * rrdata); + BACNET_STACK_EXPORT int rr_ack_encode_apdu( uint8_t * apdu, uint8_t invoke_id, BACNET_READ_RANGE_DATA * rrdata); + BACNET_STACK_EXPORT int rr_ack_decode_service_request( uint8_t * apdu, int apdu_len, /* total length of the apdu */ BACNET_READ_RANGE_DATA * rrdata); + BACNET_STACK_EXPORT uint8_t Send_ReadRange_Request( uint32_t device_id, /* destination device */ BACNET_READ_RANGE_DATA * read_access_data); diff --git a/src/bacnet/reject.h b/src/bacnet/reject.h index b8d3e23b..f17b5d9a 100644 --- a/src/bacnet/reject.h +++ b/src/bacnet/reject.h @@ -26,22 +26,27 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacenum.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT BACNET_REJECT_REASON reject_convert_error_code( BACNET_ERROR_CODE error_code); + BACNET_STACK_EXPORT BACNET_ERROR_CODE reject_convert_to_error_code( BACNET_REJECT_REASON reject_code); + BACNET_STACK_EXPORT int reject_encode_apdu( uint8_t * apdu, uint8_t invoke_id, uint8_t reject_reason); + BACNET_STACK_EXPORT int reject_decode_service_request( uint8_t * apdu, unsigned apdu_len, @@ -49,6 +54,7 @@ extern "C" { uint8_t * reject_reason); #ifdef TEST + BACNET_STACK_EXPORT void testReject( Test * pTest); #endif diff --git a/src/bacnet/rp.h b/src/bacnet/rp.h index a8c78dc5..fb32dff0 100644 --- a/src/bacnet/rp.h +++ b/src/bacnet/rp.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" #include "bacnet/bacenum.h" @@ -61,38 +62,45 @@ extern "C" { #endif /* __cplusplus */ /* encode service */ + BACNET_STACK_EXPORT int rp_encode_apdu( uint8_t * apdu, uint8_t invoke_id, BACNET_READ_PROPERTY_DATA * rpdata); /* decode the service request only */ + BACNET_STACK_EXPORT int rp_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_READ_PROPERTY_DATA * rpdata); /* method to encode the ack without extra buffer */ + BACNET_STACK_EXPORT int rp_ack_encode_apdu_init( uint8_t * apdu, uint8_t invoke_id, BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT int rp_ack_encode_apdu_object_property_end( uint8_t * apdu); /* method to encode the ack using extra buffer */ + BACNET_STACK_EXPORT int rp_ack_encode_apdu( uint8_t * apdu, uint8_t invoke_id, BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT int rp_ack_decode_service_request( uint8_t * apdu, int apdu_len, /* total length of the apdu */ BACNET_READ_PROPERTY_DATA * rpdata); /* Decode instead to RPM-style data structure. */ + BACNET_STACK_EXPORT int rp_ack_fully_decode_service_request( uint8_t * apdu, int apdu_len, @@ -100,20 +108,24 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT int rp_decode_apdu( uint8_t * apdu, unsigned apdu_len, uint8_t * invoke_id, BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT int rp_ack_decode_apdu( uint8_t * apdu, int apdu_len, /* total length of the apdu */ uint8_t * invoke_id, BACNET_READ_PROPERTY_DATA * rpdata); + BACNET_STACK_EXPORT void test_ReadProperty( Test * pTest); + BACNET_STACK_EXPORT void test_ReadPropertyAck( Test * pTest); #endif diff --git a/src/bacnet/rpm.h b/src/bacnet/rpm.h index ed361588..86fd33a9 100644 --- a/src/bacnet/rpm.h +++ b/src/bacnet/rpm.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacenum.h" #include "bacnet/bacdef.h" #include "bacnet/bacapp.h" @@ -85,23 +86,28 @@ extern "C" { until the APDU is full.*/ /* RPM */ + BACNET_STACK_EXPORT int rpm_encode_apdu_init( uint8_t * apdu, uint8_t invoke_id); + BACNET_STACK_EXPORT int rpm_encode_apdu_object_begin( uint8_t * apdu, BACNET_OBJECT_TYPE object_type, uint32_t object_instance); + BACNET_STACK_EXPORT int rpm_encode_apdu_object_property( uint8_t * apdu, BACNET_PROPERTY_ID object_property, BACNET_ARRAY_INDEX array_index); + BACNET_STACK_EXPORT int rpm_encode_apdu_object_end( uint8_t * apdu); + BACNET_STACK_EXPORT int rpm_encode_apdu( uint8_t * apdu, size_t max_apdu, @@ -109,58 +115,70 @@ extern "C" { BACNET_READ_ACCESS_DATA * read_access_data); /* decode the object portion of the service request only */ + BACNET_STACK_EXPORT int rpm_decode_object_id( uint8_t * apdu, unsigned apdu_len, BACNET_RPM_DATA * rpmdata); /* is this the end of this object property list? */ + BACNET_STACK_EXPORT int rpm_decode_object_end( uint8_t * apdu, unsigned apdu_len); /* decode the object property portion of the service request only */ + BACNET_STACK_EXPORT int rpm_decode_object_property( uint8_t * apdu, unsigned apdu_len, BACNET_RPM_DATA * rpmdata); /* RPM Ack - reply from server */ + BACNET_STACK_EXPORT int rpm_ack_encode_apdu_init( uint8_t * apdu, uint8_t invoke_id); + BACNET_STACK_EXPORT int rpm_ack_encode_apdu_object_begin( uint8_t * apdu, BACNET_RPM_DATA * rpmdata); + BACNET_STACK_EXPORT int rpm_ack_encode_apdu_object_property( uint8_t * apdu, BACNET_PROPERTY_ID object_property, BACNET_ARRAY_INDEX array_index); + BACNET_STACK_EXPORT int rpm_ack_encode_apdu_object_property_value( uint8_t * apdu, uint8_t * application_data, unsigned application_data_len); + BACNET_STACK_EXPORT int rpm_ack_encode_apdu_object_property_error( uint8_t * apdu, BACNET_ERROR_CLASS error_class, BACNET_ERROR_CODE error_code); + BACNET_STACK_EXPORT int rpm_ack_encode_apdu_object_end( uint8_t * apdu); + BACNET_STACK_EXPORT int rpm_ack_decode_object_id( uint8_t * apdu, unsigned apdu_len, BACNET_OBJECT_TYPE * object_type, uint32_t * object_instance); /* is this the end of the list of this objects properties values? */ + BACNET_STACK_EXPORT int rpm_ack_decode_object_end( uint8_t * apdu, unsigned apdu_len); + BACNET_STACK_EXPORT int rpm_ack_decode_object_property( uint8_t * apdu, unsigned apdu_len, @@ -168,6 +186,7 @@ extern "C" { BACNET_ARRAY_INDEX * array_index); #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT int rpm_decode_apdu( uint8_t * apdu, unsigned apdu_len, @@ -175,6 +194,7 @@ extern "C" { uint8_t ** service_request, unsigned *service_request_len); + BACNET_STACK_EXPORT int rpm_ack_decode_apdu( uint8_t * apdu, int apdu_len, /* total length of the apdu */ @@ -182,8 +202,10 @@ extern "C" { uint8_t ** service_request, unsigned *service_request_len); + BACNET_STACK_EXPORT void testReadPropertyMultiple( Test * pTest); + BACNET_STACK_EXPORT void testReadPropertyMultipleAck( Test * pTest); #endif diff --git a/src/bacnet/timestamp.h b/src/bacnet/timestamp.h index 5b8ffc20..bcde4393 100644 --- a/src/bacnet/timestamp.h +++ b/src/bacnet/timestamp.h @@ -24,6 +24,7 @@ #ifndef _TIMESTAMP_H_ #define _TIMESTAMP_H_ #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacenum.h" #include "bacnet/bacdcode.h" @@ -48,34 +49,42 @@ typedef struct BACnet_Timestamp { extern "C" { #endif /* __cplusplus */ + BACNET_STACK_EXPORT void bacapp_timestamp_sequence_set( BACNET_TIMESTAMP * dest, uint16_t sequenceNum); + BACNET_STACK_EXPORT void bacapp_timestamp_time_set( BACNET_TIMESTAMP * dest, BACNET_TIME *btime); + BACNET_STACK_EXPORT void bacapp_timestamp_datetime_set( BACNET_TIMESTAMP * dest, BACNET_DATE_TIME * bdateTime); + BACNET_STACK_EXPORT void bacapp_timestamp_copy( BACNET_TIMESTAMP * dest, BACNET_TIMESTAMP * src); + BACNET_STACK_EXPORT int bacapp_encode_timestamp( uint8_t * apdu, BACNET_TIMESTAMP * value); + BACNET_STACK_EXPORT int bacapp_decode_timestamp( uint8_t * apdu, BACNET_TIMESTAMP * value); + BACNET_STACK_EXPORT int bacapp_encode_context_timestamp( uint8_t * apdu, uint8_t tag_number, BACNET_TIMESTAMP * value); + BACNET_STACK_EXPORT int bacapp_decode_context_timestamp( uint8_t * apdu, uint8_t tag_number, diff --git a/src/bacnet/timesync.h b/src/bacnet/timesync.h index 86d76796..548228d7 100644 --- a/src/bacnet/timesync.h +++ b/src/bacnet/timesync.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdef.h" struct BACnet_Recipient_List; @@ -50,40 +51,48 @@ extern "C" { #endif /* __cplusplus */ /* encode service */ + BACNET_STACK_EXPORT int timesync_utc_encode_apdu( uint8_t * apdu, BACNET_DATE * my_date, BACNET_TIME * my_time); + BACNET_STACK_EXPORT int timesync_encode_apdu( uint8_t * apdu, BACNET_DATE * my_date, BACNET_TIME * my_time); + BACNET_STACK_EXPORT int timesync_encode_apdu_service( uint8_t * apdu, BACNET_UNCONFIRMED_SERVICE service, BACNET_DATE * my_date, BACNET_TIME * my_time); /* decode the service request only */ + BACNET_STACK_EXPORT int timesync_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_DATE * my_date, BACNET_TIME * my_time); + BACNET_STACK_EXPORT int timesync_utc_decode_apdu( uint8_t * apdu, unsigned apdu_len, BACNET_DATE * my_date, BACNET_TIME * my_time); + BACNET_STACK_EXPORT int timesync_decode_apdu( uint8_t * apdu, unsigned apdu_len, BACNET_DATE * my_date, BACNET_TIME * my_time); + BACNET_STACK_EXPORT int timesync_encode_timesync_recipients( uint8_t * apdu, unsigned max_apdu, BACNET_RECIPIENT_LIST * recipient); + BACNET_STACK_EXPORT int timesync_decode_timesync_recipients( uint8_t * apdu, unsigned apdu_len, @@ -91,6 +100,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testTimeSync( Test * pTest); #endif diff --git a/src/bacnet/whohas.h b/src/bacnet/whohas.h index bebcc95d..426e722b 100644 --- a/src/bacnet/whohas.h +++ b/src/bacnet/whohas.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacstr.h" typedef struct BACnet_Who_Has_Data { @@ -43,15 +44,18 @@ extern "C" { #endif /* __cplusplus */ /* encode service - use -1 for limit if you want unlimited */ + BACNET_STACK_EXPORT int whohas_encode_apdu( uint8_t * apdu, BACNET_WHO_HAS_DATA * data); + BACNET_STACK_EXPORT int whohas_decode_service_request( uint8_t * apdu, unsigned apdu_len, BACNET_WHO_HAS_DATA * data); + BACNET_STACK_EXPORT int whohas_decode_apdu( uint8_t * apdu, unsigned apdu_len, @@ -59,6 +63,7 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT void testWhoHas( Test * pTest); #endif diff --git a/src/bacnet/whois.h b/src/bacnet/whois.h index 5832ad8f..3b2e3954 100644 --- a/src/bacnet/whois.h +++ b/src/bacnet/whois.h @@ -26,17 +26,20 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* encode service - use -1 for limit if you want unlimited */ + BACNET_STACK_EXPORT int whois_encode_apdu( uint8_t * apdu, int32_t low_limit, int32_t high_limit); + BACNET_STACK_EXPORT int whois_decode_service_request( uint8_t * apdu, unsigned apdu_len, @@ -44,12 +47,14 @@ extern "C" { int32_t * pHigh_limit); #ifdef TEST + BACNET_STACK_EXPORT int whois_decode_apdu( uint8_t * apdu, unsigned apdu_len, int32_t * pLow_limit, int32_t * pHigh_limit); + BACNET_STACK_EXPORT void testWhoIs( Test * pTest); #endif diff --git a/src/bacnet/wp.h b/src/bacnet/wp.h index 5dfc079c..e3331934 100644 --- a/src/bacnet/wp.h +++ b/src/bacnet/wp.h @@ -26,6 +26,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdcode.h" #include "bacnet/bacapp.h" @@ -66,12 +67,14 @@ extern "C" { #endif /* __cplusplus */ /* encode service */ + BACNET_STACK_EXPORT int wp_encode_apdu( uint8_t * apdu, uint8_t invoke_id, BACNET_WRITE_PROPERTY_DATA * wp_data); /* decode the service request only */ + BACNET_STACK_EXPORT int wp_decode_service_request( uint8_t * apdu, unsigned apdu_len, @@ -79,14 +82,17 @@ extern "C" { #ifdef TEST #include "ctest.h" + BACNET_STACK_EXPORT int wp_decode_apdu( uint8_t * apdu, unsigned apdu_len, uint8_t * invoke_id, BACNET_WRITE_PROPERTY_DATA * wp_data); + BACNET_STACK_EXPORT void testWriteProperty( Test * pTest); + BACNET_STACK_EXPORT void testWritePropertyTag( Test * pTest, BACNET_APPLICATION_DATA_VALUE * value); diff --git a/src/bacnet/wpm.h b/src/bacnet/wpm.h index 37e26633..805847ad 100644 --- a/src/bacnet/wpm.h +++ b/src/bacnet/wpm.h @@ -27,6 +27,7 @@ #include #include +#include "bacnet/bacnet_stack_exports.h" #include "bacnet/bacdcode.h" #include "bacnet/bacapp.h" #include "bacnet/wp.h" @@ -57,18 +58,23 @@ extern "C" { /* encode objects */ + BACNET_STACK_EXPORT int wpm_encode_apdu_init( uint8_t * apdu, uint8_t invoke_id); + BACNET_STACK_EXPORT int wpm_encode_apdu_object_begin( uint8_t * apdu, BACNET_OBJECT_TYPE object_type, uint32_t object_instance); + BACNET_STACK_EXPORT int wpm_encode_apdu_object_end( uint8_t * apdu); + BACNET_STACK_EXPORT int wpm_encode_apdu_object_property( uint8_t * apdu, BACNET_WRITE_PROPERTY_DATA * wpdata); + BACNET_STACK_EXPORT int wpm_encode_apdu( uint8_t * apdu, size_t max_apdu, @@ -76,10 +82,12 @@ extern "C" { BACNET_WRITE_ACCESS_DATA * write_access_data); /* encode service */ + BACNET_STACK_EXPORT int wpm_ack_encode_apdu_init( uint8_t * apdu, uint8_t invoke_id); + BACNET_STACK_EXPORT int wpm_error_ack_encode_apdu( uint8_t * apdu, uint8_t invoke_id,