Reduced MS/TP MAX_APDU to use 480 by default in examples (#683)

* Reduced MS/TP MAX_APDU to 480 from 1476 so that devices not use new MS/TP extended frame types which older routers do not understand.

* Added extra objects to STM32F4xx example to elicit edge cases in object-list for testing.
This commit is contained in:
Steve Karg
2024-07-02 12:47:15 -05:00
committed by GitHub
parent d5b0060d8a
commit cb4f675e39
18 changed files with 242 additions and 48 deletions
+2 -1
View File
@@ -221,7 +221,8 @@ target_compile_definitions(${EXECUTABLE} PRIVATE
-DHSE_VALUE=25000000 -DHSE_VALUE=25000000
# BACnet Stack library # BACnet Stack library
-DBACDL_MSTP -DBACDL_MSTP
-DMAX_APDU=1476 # note: MS/TP extended frames can be up to MAX_APDU=1476 bytes
-DMAX_APDU=480
-DBIG_ENDIAN=0 -DBIG_ENDIAN=0
-DMAX_TSM_TRANSACTIONS=0 -DMAX_TSM_TRANSACTIONS=0
-DBACAPP_MINIMAL -DBACAPP_MINIMAL
+2 -1
View File
@@ -153,7 +153,8 @@ OPTIMIZE_FLAGS += -DNDEBUG
BACNET_FLAGS = -DBACDL_MSTP=1 BACNET_FLAGS = -DBACDL_MSTP=1
BACNET_FLAGS += -DBACAPP_MINIMAL BACNET_FLAGS += -DBACAPP_MINIMAL
BACNET_FLAGS += -DMAX_APDU=1476 # note: MS/TP extended frames can be up to MAX_APDU=1476 bytes
BACNET_FLAGS += -DMAX_APDU=480
BACNET_FLAGS += -DBIG_ENDIAN=0 BACNET_FLAGS += -DBIG_ENDIAN=0
BACNET_FLAGS += -DMAX_TSM_TRANSACTIONS=0 BACNET_FLAGS += -DMAX_TSM_TRANSACTIONS=0
BACNET_FLAGS += -DMAX_CHARACTER_STRING_BYTES=64 BACNET_FLAGS += -DMAX_CHARACTER_STRING_BYTES=64
+1 -1
View File
@@ -227,7 +227,7 @@
<state>STM32F10X_XL</state> <state>STM32F10X_XL</state>
<state>USE_STDPERIPH_DRIVER</state> <state>USE_STDPERIPH_DRIVER</state>
<state>BACDL_MSTP</state> <state>BACDL_MSTP</state>
<state>MAX_APDU=1476</state> <state>MAX_APDU=480</state>
<state>MAX_TSM_TRANSACTIONS=0</state> <state>MAX_TSM_TRANSACTIONS=0</state>
<state>BACAPP_MINIMAL</state> <state>BACAPP_MINIMAL</state>
</option> </option>
+13 -1
View File
@@ -151,6 +151,16 @@ set(BACNET_PROJECT_SOURCE
${CMAKE_SOURCE_DIR}/device.c ${CMAKE_SOURCE_DIR}/device.c
${CMAKE_SOURCE_DIR}/netport.c ${CMAKE_SOURCE_DIR}/netport.c
${LIBRARY_BACNET_BASIC}/object/ai.c
${LIBRARY_BACNET_BASIC}/object/ao.c
${LIBRARY_BACNET_BASIC}/object/av.c
${LIBRARY_BACNET_BASIC}/object/bi.c
${LIBRARY_BACNET_BASIC}/object/bo.c
${LIBRARY_BACNET_BASIC}/object/bv.c
${LIBRARY_BACNET_BASIC}/object/ms-input.c
${LIBRARY_BACNET_BASIC}/object/mso.c
${LIBRARY_BACNET_BASIC}/object/msv.c
${LIBRARY_BACNET_BASIC}/service/h_dcc.c ${LIBRARY_BACNET_BASIC}/service/h_dcc.c
${LIBRARY_BACNET_BASIC}/service/h_apdu.c ${LIBRARY_BACNET_BASIC}/service/h_apdu.c
${LIBRARY_BACNET_BASIC}/npdu/h_npdu.c ${LIBRARY_BACNET_BASIC}/npdu/h_npdu.c
@@ -167,6 +177,7 @@ set(BACNET_PROJECT_SOURCE
${LIBRARY_BACNET_BASIC}/sys/debug.c ${LIBRARY_BACNET_BASIC}/sys/debug.c
${LIBRARY_BACNET_BASIC}/sys/ringbuf.c ${LIBRARY_BACNET_BASIC}/sys/ringbuf.c
${LIBRARY_BACNET_BASIC}/sys/fifo.c ${LIBRARY_BACNET_BASIC}/sys/fifo.c
${LIBRARY_BACNET_BASIC}/sys/keylist.c
${LIBRARY_BACNET_BASIC}/sys/mstimer.c ${LIBRARY_BACNET_BASIC}/sys/mstimer.c
${LIBRARY_BACNET_CORE}/abort.c ${LIBRARY_BACNET_CORE}/abort.c
@@ -273,8 +284,9 @@ target_link_options(${EXECUTABLE} PRIVATE
# Create hex and bin files # Create hex and bin files
add_custom_command(TARGET ${EXECUTABLE} add_custom_command(TARGET ${EXECUTABLE}
POST_BUILD POST_BUILD
COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE} ${PROJECT_NAME}.hex
COMMAND ${CMAKE_OBJCOPY} -O binary ${EXECUTABLE} ${PROJECT_NAME}.bin COMMAND ${CMAKE_OBJCOPY} -O binary ${EXECUTABLE} ${PROJECT_NAME}.bin
COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE} ${PROJECT_NAME}.hex
COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE} ${CMAKE_SOURCE_DIR}/${PROJECT_NAME}.hex
) )
# Print executable size # Print executable size
+13 -2
View File
@@ -34,6 +34,15 @@ PLATFORM_SRC = \
BASIC_SRC = \ BASIC_SRC = \
$(BACNET_BASIC)/npdu/h_npdu.c \ $(BACNET_BASIC)/npdu/h_npdu.c \
$(BACNET_BASIC)/object/ai.c \
$(BACNET_BASIC)/object/ao.c \
$(BACNET_BASIC)/object/av.c \
$(BACNET_BASIC)/object/bi.c \
$(BACNET_BASIC)/object/bo.c \
$(BACNET_BASIC)/object/bv.c \
$(BACNET_BASIC)/object/ms-input.c \
$(BACNET_BASIC)/object/mso.c \
$(BACNET_BASIC)/object/msv.c \
$(BACNET_BASIC)/service/h_apdu.c \ $(BACNET_BASIC)/service/h_apdu.c \
$(BACNET_BASIC)/service/h_dcc.c \ $(BACNET_BASIC)/service/h_dcc.c \
$(BACNET_BASIC)/service/h_rd.c \ $(BACNET_BASIC)/service/h_rd.c \
@@ -48,6 +57,7 @@ BASIC_SRC = \
$(BACNET_BASIC)/sys/debug.c \ $(BACNET_BASIC)/sys/debug.c \
$(BACNET_BASIC)/sys/ringbuf.c \ $(BACNET_BASIC)/sys/ringbuf.c \
$(BACNET_BASIC)/sys/fifo.c \ $(BACNET_BASIC)/sys/fifo.c \
$(BACNET_BASIC)/sys/keylist.c \
$(BACNET_BASIC)/sys/mstimer.c \ $(BACNET_BASIC)/sys/mstimer.c \
$(BACNET_BASIC)/tsm/tsm.c $(BACNET_BASIC)/tsm/tsm.c
@@ -149,8 +159,9 @@ MCU_FLAGS += -DUSE_STDPERIPH_DRIVER
OPTIMIZE_FLAGS := -Os -ggdb OPTIMIZE_FLAGS := -Os -ggdb
OPTIMIZE_FLAGS += -DNDEBUG OPTIMIZE_FLAGS += -DNDEBUG
BACNET_FLAGS = -DBACDL_MSTP=1 BACNET_FLAGS = -DBACDL_MSTP=
BACNET_FLAGS += -DMAX_APDU=1476 # note: MS/TP extended frames can be up to MAX_APDU=1476 bytes
BACNET_FLAGS += -DMAX_APDU=480
BACNET_FLAGS += -DBIG_ENDIAN=0 BACNET_FLAGS += -DBIG_ENDIAN=0
BACNET_FLAGS += -DMAX_TSM_TRANSACTIONS=0 BACNET_FLAGS += -DMAX_TSM_TRANSACTIONS=0
BACNET_FLAGS += -DMAX_CHARACTER_STRING_BYTES=64 BACNET_FLAGS += -DMAX_CHARACTER_STRING_BYTES=64
+65 -2
View File
@@ -37,7 +37,15 @@
#include "bacnet/iam.h" #include "bacnet/iam.h"
/* BACnet objects */ /* BACnet objects */
#include "bacnet/basic/object/device.h" #include "bacnet/basic/object/device.h"
#include "bacnet/basic/object/ai.h"
#include "bacnet/basic/object/ao.h"
#include "bacnet/basic/object/av.h"
#include "bacnet/basic/object/bi.h"
#include "bacnet/basic/object/bo.h" #include "bacnet/basic/object/bo.h"
#include "bacnet/basic/object/bv.h"
#include "bacnet/basic/object/ms-input.h"
#include "bacnet/basic/object/mso.h"
#include "bacnet/basic/object/msv.h"
/* me */ /* me */
#include "bacnet.h" #include "bacnet.h"
@@ -47,14 +55,69 @@ static struct mstimer DCC_Timer;
/* Device ID to track changes */ /* Device ID to track changes */
static uint32_t Device_ID = 0xFFFFFFFF; static uint32_t Device_ID = 0xFFFFFFFF;
#ifndef BACNET_ANALOG_INPUTS_MAX
#define BACNET_ANALOG_INPUTS_MAX 12
#endif
#ifndef BACNET_ANALOG_OUTPUTS_MAX
#define BACNET_ANALOG_OUTPUTS_MAX 12
#endif
#ifndef BACNET_ANALOG_VALUES_MAX
#define BACNET_ANALOG_VALUES_MAX 12
#endif
#ifndef BACNET_BINARY_INPUTS_MAX
#define BACNET_BINARY_INPUTS_MAX 12
#endif
#ifndef BACNET_BINARY_OUTPUTS_MAX
#define BACNET_BINARY_OUTPUTS_MAX 12
#endif
#ifndef BACNET_BINARY_VALUES_MAX
#define BACNET_BINARY_VALUES_MAX 12
#endif
#ifndef BACNET_MULTISTATE_INPUTS_MAX
#define BACNET_MULTISTATE_INPUTS_MAX 12
#endif
#ifndef BACNET_MULTISTATE_OUTPUTS_MAX
#define BACNET_MULTISTATE_OUTPUTS_MAX 12
#endif
#ifndef BACNET_MULTISTATE_VALUES_MAX
#define BACNET_MULTISTATE_VALUES_MAX 12
#endif
/** /**
* @brief Initialize the BACnet device object, the service handlers, and timers * @brief Initialize the BACnet device object, the service handlers, and timers
*/ */
void bacnet_init(void) void bacnet_init(void)
{ {
uint32_t instance;
/* initialize objects */ /* initialize objects */
Device_Init(NULL); Device_Init(NULL);
for (instance = 1; instance <= BACNET_ANALOG_INPUTS_MAX; instance++) {
Analog_Input_Create(instance);
}
for (instance = 1; instance <= BACNET_ANALOG_OUTPUTS_MAX; instance++) {
Analog_Output_Create(instance);
}
for (instance = 1; instance <= BACNET_ANALOG_VALUES_MAX; instance++) {
Analog_Value_Create(instance);
}
for (instance = 1; instance <= BACNET_BINARY_INPUTS_MAX; instance++) {
Binary_Input_Create(instance);
}
for (instance = 1; instance <= BACNET_BINARY_OUTPUTS_MAX; instance++) {
Binary_Output_Create(instance);
}
for (instance = 1; instance <= BACNET_BINARY_VALUES_MAX; instance++) {
Binary_Value_Create(instance);
}
for (instance = 1; instance <= BACNET_MULTISTATE_INPUTS_MAX; instance++) {
Multistate_Input_Create(instance);
}
for (instance = 1; instance <= BACNET_MULTISTATE_OUTPUTS_MAX; instance++) {
Multistate_Output_Create(instance);
}
for (instance = 1; instance <= BACNET_MULTISTATE_VALUES_MAX; instance++) {
Multistate_Value_Create(instance);
}
/* set up our confirmed service unrecognized service handler - required! */ /* set up our confirmed service unrecognized service handler - required! */
apdu_set_unrecognized_service_handler_handler(handler_unrecognized_service); apdu_set_unrecognized_service_handler_handler(handler_unrecognized_service);
/* we need to handle who-is to support dynamic device binding */ /* we need to handle who-is to support dynamic device binding */
+34 -1
View File
@@ -224,7 +224,7 @@
<state>USE_STDPERIPH_DRIVER</state> <state>USE_STDPERIPH_DRIVER</state>
<state>STM32F4XX</state> <state>STM32F4XX</state>
<state>BACDL_MSTP</state> <state>BACDL_MSTP</state>
<state>MAX_APDU=1476</state> <state>MAX_APDU=480</state>
<state>BIG_ENDIAN=0</state> <state>BIG_ENDIAN=0</state>
<state>MAX_TSM_TRANSACTIONS=1</state> <state>MAX_TSM_TRANSACTIONS=1</state>
<state>BACAPP_MINIMAL</state> <state>BACAPP_MINIMAL</state>
@@ -1164,6 +1164,36 @@
<name>$PROJ_DIR$\..\..\src\bacnet\basic\npdu\h_npdu.c</name> <name>$PROJ_DIR$\..\..\src\bacnet\basic\npdu\h_npdu.c</name>
</file> </file>
</group> </group>
<group>
<name>BACnet Basic Objects</name>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\basic\object\ai.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\basic\object\ao.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\basic\object\av.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\basic\object\bi.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\basic\object\bo.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\basic\object\bv.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\basic\object\ms-input.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\basic\object\mso.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\basic\object\msv.c</name>
</file>
</group>
<group> <group>
<name>BACnet Basic Services</name> <name>BACnet Basic Services</name>
<file> <file>
@@ -1211,6 +1241,9 @@
<file> <file>
<name>$PROJ_DIR$\..\..\src\bacnet\basic\sys\fifo.c</name> <name>$PROJ_DIR$\..\..\src\bacnet\basic\sys\fifo.c</name>
</file> </file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\basic\sys\keylist.c</name>
</file>
<file> <file>
<name>$PROJ_DIR$\..\..\src\bacnet\basic\sys\mstimer.c</name> <name>$PROJ_DIR$\..\..\src\bacnet\basic\sys\mstimer.c</name>
</file> </file>
+49
View File
@@ -40,11 +40,22 @@
#include "bacnet/version.h" #include "bacnet/version.h"
#include "bacnet/basic/services.h" #include "bacnet/basic/services.h"
/* objects */ /* objects */
#include "bacnet/basic/object/ai.h"
#include "bacnet/basic/object/ao.h"
#include "bacnet/basic/object/av.h"
#include "bacnet/basic/object/bi.h"
#include "bacnet/basic/object/bo.h"
#include "bacnet/basic/object/bv.h"
#include "bacnet/basic/object/ms-input.h"
#include "bacnet/basic/object/mso.h"
#include "bacnet/basic/object/msv.h"
#if (BACNET_PROTOCOL_REVISION >= 17) #if (BACNET_PROTOCOL_REVISION >= 17)
#include "bacnet/basic/object/netport.h" #include "bacnet/basic/object/netport.h"
#endif #endif
#include "bacnet/basic/object/device.h" #include "bacnet/basic/object/device.h"
/* clang-format off */
static struct my_object_functions { static struct my_object_functions {
BACNET_OBJECT_TYPE Object_Type; BACNET_OBJECT_TYPE Object_Type;
object_init_function Object_Init; object_init_function Object_Init;
@@ -60,6 +71,43 @@ static struct my_object_functions {
Device_Valid_Object_Instance_Number, Device_Valid_Object_Instance_Number,
Device_Object_Name, Device_Read_Property_Local, Device_Object_Name, Device_Read_Property_Local,
Device_Write_Property_Local, Device_Property_Lists }, Device_Write_Property_Local, Device_Property_Lists },
{ OBJECT_ANALOG_INPUT, Analog_Input_Init, Analog_Input_Count,
Analog_Input_Index_To_Instance, Analog_Input_Valid_Instance,
Analog_Input_Object_Name, Analog_Input_Read_Property,
Analog_Input_Write_Property, Analog_Input_Property_Lists},
{ OBJECT_ANALOG_OUTPUT, Analog_Output_Init, Analog_Output_Count,
Analog_Output_Index_To_Instance, Analog_Output_Valid_Instance,
Analog_Output_Object_Name, Analog_Output_Read_Property,
Analog_Output_Write_Property, Analog_Output_Property_Lists},
{ OBJECT_ANALOG_VALUE, Analog_Value_Init, Analog_Value_Count,
Analog_Value_Index_To_Instance, Analog_Value_Valid_Instance,
Analog_Value_Object_Name, Analog_Value_Read_Property,
Analog_Value_Write_Property, Analog_Value_Property_Lists},
{ OBJECT_BINARY_INPUT, Binary_Input_Init, Binary_Input_Count,
Binary_Input_Index_To_Instance, Binary_Input_Valid_Instance,
Binary_Input_Object_Name, Binary_Input_Read_Property,
Binary_Input_Write_Property, Binary_Input_Property_Lists},
{ OBJECT_BINARY_OUTPUT, Binary_Output_Init, Binary_Output_Count,
Binary_Output_Index_To_Instance, Binary_Output_Valid_Instance,
Binary_Output_Object_Name, Binary_Output_Read_Property,
Binary_Output_Write_Property, Binary_Output_Property_Lists},
{ OBJECT_BINARY_VALUE, Binary_Value_Init, Binary_Value_Count,
Binary_Value_Index_To_Instance, Binary_Value_Valid_Instance,
Binary_Value_Object_Name, Binary_Value_Read_Property,
Binary_Value_Write_Property, Binary_Value_Property_Lists},
{ OBJECT_MULTI_STATE_INPUT, Multistate_Input_Init, Multistate_Input_Count,
Multistate_Input_Index_To_Instance, Multistate_Input_Valid_Instance,
Multistate_Input_Object_Name, Multistate_Input_Read_Property,
Multistate_Input_Write_Property, Multistate_Input_Property_Lists},
{ OBJECT_MULTI_STATE_OUTPUT, Multistate_Output_Init,
Multistate_Output_Count, Multistate_Output_Index_To_Instance,
Multistate_Output_Valid_Instance, Multistate_Output_Object_Name,
Multistate_Output_Read_Property, Multistate_Output_Write_Property,
Multistate_Output_Property_Lists},
{ OBJECT_MULTI_STATE_VALUE, Multistate_Value_Init, Multistate_Value_Count,
Multistate_Value_Index_To_Instance, Multistate_Value_Valid_Instance,
Multistate_Value_Object_Name, Multistate_Value_Read_Property,
Multistate_Value_Write_Property, Multistate_Value_Property_Lists},
#if (BACNET_PROTOCOL_REVISION >= 17) #if (BACNET_PROTOCOL_REVISION >= 17)
{ OBJECT_NETWORK_PORT, Network_Port_Init, Network_Port_Count, { OBJECT_NETWORK_PORT, Network_Port_Init, Network_Port_Count,
Network_Port_Index_To_Instance, Network_Port_Valid_Instance, Network_Port_Index_To_Instance, Network_Port_Valid_Instance,
@@ -68,6 +116,7 @@ static struct my_object_functions {
#endif #endif
{ MAX_BACNET_OBJECT_TYPE, NULL, NULL, NULL, NULL, NULL, NULL, NULL, { MAX_BACNET_OBJECT_TYPE, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL } }; NULL } };
/* clang-format on */
/* note: you really only need to define variables for /* note: you really only need to define variables for
properties that are writable or that may change. properties that are writable or that may change.
+39 -17
View File
@@ -4,6 +4,16 @@ MEMORY
flash (RX) : ORIGIN = 0x08000000, LENGTH = 512k flash (RX) : ORIGIN = 0x08000000, LENGTH = 512k
} }
_estack = 0x20000000 + 128k - 4; /* End of SRAM */
/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 48K;
/* Analysis from MAP file and Stack Usage (su) +
adjust _Min_Heap_Size until linker error: sram overflowed by x bytes
_Min_Heap_Size = _Min_Heap_Size - x
*/
_Min_Stack_Size = 16K;
SECTIONS SECTIONS
{ {
.text : .text :
@@ -22,11 +32,10 @@ SECTIONS
*(.gnu.linkonce.r.*) *(.gnu.linkonce.r.*)
. = ALIGN(4); . = ALIGN(4);
_etext = .; _etext = .;
_sidata = _etext; _sidata = _etext;
PROVIDE(etext = .); PROVIDE(etext = .);
_fini = . ; _fini = . ;
*(.fini) *(.fini)
} >flash } >flash
.data : AT (_etext) .data : AT (_etext)
@@ -40,20 +49,20 @@ SECTIONS
_edata = .; _edata = .;
} >sram } >sram
.ARM.extab : .ARM.extab :
{ {
*(.ARM.extab*) *(.ARM.extab*)
} >sram } >sram
__exidx_start = .; __exidx_start = .;
.ARM.exidx : .ARM.exidx :
{ {
*(.ARM.exidx*) *(.ARM.exidx*)
} >sram } >sram
__exidx_end = .; __exidx_end = .;
.bss (NOLOAD) : { .bss (NOLOAD) : {
. = ALIGN(4); . = ALIGN(4);
/* This is used by the startup in order to initialize the .bss secion */ /* This is used by the startup in order to initialize the .bss secion */
_sbss = .; _sbss = .;
*(.bss .bss.*) *(.bss .bss.*)
@@ -63,6 +72,19 @@ SECTIONS
_ebss = .; _ebss = .;
} >sram } >sram
end = .; PROVIDE ( end = _ebss );
PROVIDE( _estack = 0x20010000 ); PROVIDE ( _end = _ebss );
/* User_heap_stack section, used to check that there is enough RAM left */
._user_heap_stack :
{
. = ALIGN(4);
. = . + _Min_Heap_Size;
_user_heap_end = .;
. = . + _Min_Stack_Size;
. = ALIGN(4);
} >sram
PROVIDE(_heap_limit = _user_heap_end);
PROVIDE(_stack_limit = _estack);
} }
+2 -2
View File
@@ -249,8 +249,8 @@ bool Analog_Input_Object_Name(
characterstring_init_ansi(object_name, pObject->Object_Name); characterstring_init_ansi(object_name, pObject->Object_Name);
} else { } else {
snprintf( snprintf(
text_string, sizeof(text_string), "ANALOG INPUT %u", text_string, sizeof(text_string), "ANALOG INPUT %lu",
object_instance); (unsigned long)object_instance);
status = characterstring_init_ansi(object_name, text_string); status = characterstring_init_ansi(object_name, text_string);
} }
} }
+2 -2
View File
@@ -514,8 +514,8 @@ bool Analog_Output_Object_Name(
status = status =
characterstring_init_ansi(object_name, pObject->Object_Name); characterstring_init_ansi(object_name, pObject->Object_Name);
} else { } else {
snprintf(name_text, sizeof(name_text), "ANALOG OUTPUT %u", snprintf(name_text, sizeof(name_text), "ANALOG OUTPUT %lu",
object_instance); (unsigned long)object_instance);
status = characterstring_init_ansi(object_name, name_text); status = characterstring_init_ansi(object_name, name_text);
} }
} }
+2 -2
View File
@@ -257,8 +257,8 @@ bool Analog_Value_Object_Name(
characterstring_init_ansi(object_name, pObject->Object_Name); characterstring_init_ansi(object_name, pObject->Object_Name);
} else { } else {
snprintf( snprintf(
text_string, sizeof(text_string), "ANALOG VALUE %u", text_string, sizeof(text_string), "ANALOG VALUE %lu",
object_instance); (unsigned long)object_instance);
status = characterstring_init_ansi(object_name, text_string); status = characterstring_init_ansi(object_name, text_string);
} }
} }
+2 -2
View File
@@ -513,8 +513,8 @@ bool Binary_Output_Object_Name(
status = status =
characterstring_init_ansi(object_name, pObject->Object_Name); characterstring_init_ansi(object_name, pObject->Object_Name);
} else { } else {
snprintf(name_text, sizeof(name_text), "BINARY OUTPUT %u", snprintf(name_text, sizeof(name_text), "BINARY OUTPUT %lu",
object_instance); (unsigned long)object_instance);
status = characterstring_init_ansi(object_name, name_text); status = characterstring_init_ansi(object_name, name_text);
} }
} }
+2 -2
View File
@@ -464,8 +464,8 @@ bool Multistate_Input_Object_Name(
status = characterstring_init_ansi(object_name, status = characterstring_init_ansi(object_name,
pObject->Object_Name); pObject->Object_Name);
} else { } else {
snprintf(name_text, sizeof(name_text), "MULTI-STATE INPUT %u", snprintf(name_text, sizeof(name_text), "MULTI-STATE INPUT %lu",
object_instance); (unsigned long)object_instance);
status = characterstring_init_ansi(object_name, name_text); status = characterstring_init_ansi(object_name, name_text);
} }
} }
+2 -2
View File
@@ -607,8 +607,8 @@ bool Multistate_Output_Object_Name(
status = characterstring_init_ansi(object_name, status = characterstring_init_ansi(object_name,
pObject->Object_Name); pObject->Object_Name);
} else { } else {
snprintf(name_text, sizeof(name_text), "MULTI-STATE OUTPUT %u", snprintf(name_text, sizeof(name_text), "MULTI-STATE OUTPUT %lu",
object_instance); (unsigned long)object_instance);
status = characterstring_init_ansi(object_name, name_text); status = characterstring_init_ansi(object_name, name_text);
} }
} }
+2 -2
View File
@@ -464,8 +464,8 @@ bool Multistate_Value_Object_Name(
status = status =
characterstring_init_ansi(object_name, pObject->Object_Name); characterstring_init_ansi(object_name, pObject->Object_Name);
} else { } else {
snprintf(name_text, sizeof(name_text), "MULTI-STATE INPUT %u", snprintf(name_text, sizeof(name_text), "MULTI-STATE INPUT %lu",
object_instance); (unsigned long)object_instance);
status = characterstring_init_ansi(object_name, name_text); status = characterstring_init_ansi(object_name, name_text);
} }
} }
+9 -8
View File
@@ -4,17 +4,17 @@
* @author Steve Karg <skarg@users.sourceforge.net> * @author Steve Karg <skarg@users.sourceforge.net>
* @date 2004 * @date 2004
* @section LICENSE * @section LICENSE
* *
* Copyright (C) 2004 Steve Karg <skarg@users.sourceforge.net> * Copyright (C) 2004 Steve Karg <skarg@users.sourceforge.net>
* *
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
*/ */
#ifndef BACNET_CONFIG_H_ #ifndef BACNET_CONFIG_H_
#define BACNET_CONFIG_H_ #define BACNET_CONFIG_H_
/** /**
* @note configurations are default to values used in the example apps build. * @note configurations are default to values used in the example apps build.
* Use a local copy named "bacnet-config.h" with settings configured for * Use a local copy named "bacnet-config.h" with settings configured for
* the product specific needs for code space reductions in your device. * the product specific needs for code space reductions in your device.
* Alternately, use a compiler and linker to override these defines. * Alternately, use a compiler and linker to override these defines.
*/ */
@@ -98,6 +98,7 @@
#if defined(BACNET_SECURITY) #if defined(BACNET_SECURITY)
#define MAX_APDU 412 #define MAX_APDU 412
#else #else
/* note: MS/TP extended frames can be up to 1476 bytes */
#define MAX_APDU 1476 #define MAX_APDU 1476
#endif #endif
#else #else
@@ -185,7 +186,7 @@
#define BACAPP_OBJECT_ID #define BACAPP_OBJECT_ID
#endif #endif
#if defined (BACAPP_TYPES_EXTRA) #if defined (BACAPP_TYPES_EXTRA)
#define BACAPP_DOUBLE #define BACAPP_DOUBLE
#define BACAPP_TIMESTAMP #define BACAPP_TIMESTAMP
#define BACAPP_DATETIME #define BACAPP_DATETIME
@@ -236,14 +237,14 @@
#endif #endif
/** /**
* @note Control the selection of services etc to enable code size reduction * @note Control the selection of services etc to enable code size reduction
* for those compiler suites which do not handle removing of unused functions * for those compiler suites which do not handle removing of unused functions
* in modules so well. * in modules so well.
* *
* We will start with the A type services code first as these are least likely * We will start with the A type services code first as these are least likely
* to be required in embedded systems using the stack. * to be required in embedded systems using the stack.
*/ */
#ifndef BACNET_SVC_SERVER #ifndef BACNET_SVC_SERVER
/* default to client-server device for the example apps to build. */ /* default to client-server device for the example apps to build. */
#define BACNET_SVC_SERVER 0 #define BACNET_SVC_SERVER 0
#endif #endif
+1
View File
@@ -25,6 +25,7 @@ add_compile_definitions(
CONFIG_ZTEST=1 CONFIG_ZTEST=1
BACDL_MSTP=1 BACDL_MSTP=1
MSTP_ZERO_CONFIG_STATION_INCREMENT_MODULO MSTP_ZERO_CONFIG_STATION_INCREMENT_MODULO
MAX_APDU=1476
) )
include_directories( include_directories(