Add API for writable object property lists (#1206)

Added a new API for writable property lists across all the basic example object types, preparing for the introduction of a Writable_Property_List property in every object in a future BACnet standard revision.

The lists can be used by backup and restore feature to automatically choose the object property values in the backup that can be restored via internal WriteProperty directly from BACnet CreateObject services with  List of Initial Values. 

Updated existing device object examples to include these writable property lists.
This commit is contained in:
Steve Karg
2026-01-21 10:02:21 -06:00
committed by GitHub
parent c408cc555b
commit 3a0878a254
100 changed files with 2084 additions and 214 deletions
+16 -15
View File
@@ -9,9 +9,18 @@ SRC = main.c
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
SRC = main.c \
$(BACNET_OBJECT_DIR)/device.c \
$(BACNET_OBJECT_DIR)/access_credential.c \
$(BACNET_OBJECT_DIR)/access_door.c \
$(BACNET_OBJECT_DIR)/access_point.c \
$(BACNET_OBJECT_DIR)/access_rights.c \
$(BACNET_OBJECT_DIR)/access_user.c \
$(BACNET_OBJECT_DIR)/access_zone.c \
$(BACNET_OBJECT_DIR)/ai.c \
$(BACNET_OBJECT_DIR)/ao.c \
$(BACNET_OBJECT_DIR)/av.c \
$(BACNET_OBJECT_DIR)/acc.c \
$(BACNET_OBJECT_DIR)/auditlog.c \
$(BACNET_OBJECT_DIR)/bacfile.c \
$(BACNET_OBJECT_DIR)/bi.c \
$(BACNET_OBJECT_DIR)/bitstring_value.c \
$(BACNET_OBJECT_DIR)/bo.c \
@@ -22,6 +31,7 @@ SRC = main.c \
$(BACNET_OBJECT_DIR)/color_object.c \
$(BACNET_OBJECT_DIR)/color_temperature.c \
$(BACNET_OBJECT_DIR)/command.c \
$(BACNET_OBJECT_DIR)/credential_data_input.c \
$(BACNET_OBJECT_DIR)/csv.c \
$(BACNET_OBJECT_DIR)/iv.c \
$(BACNET_OBJECT_DIR)/lc.c \
@@ -32,25 +42,16 @@ SRC = main.c \
$(BACNET_OBJECT_DIR)/ms-input.c \
$(BACNET_OBJECT_DIR)/mso.c \
$(BACNET_OBJECT_DIR)/msv.c \
$(BACNET_OBJECT_DIR)/osv.c \
$(BACNET_OBJECT_DIR)/piv.c \
$(BACNET_OBJECT_DIR)/nc.c \
$(BACNET_OBJECT_DIR)/netport.c \
$(BACNET_OBJECT_DIR)/program.c \
$(BACNET_OBJECT_DIR)/time_value.c \
$(BACNET_OBJECT_DIR)/timer.c \
$(BACNET_OBJECT_DIR)/trendlog.c \
$(BACNET_OBJECT_DIR)/osv.c \
$(BACNET_OBJECT_DIR)/piv.c \
$(BACNET_OBJECT_DIR)/program.c \
$(BACNET_OBJECT_DIR)/schedule.c \
$(BACNET_OBJECT_DIR)/structured_view.c \
$(BACNET_OBJECT_DIR)/access_credential.c \
$(BACNET_OBJECT_DIR)/access_door.c \
$(BACNET_OBJECT_DIR)/access_point.c \
$(BACNET_OBJECT_DIR)/access_rights.c \
$(BACNET_OBJECT_DIR)/access_user.c \
$(BACNET_OBJECT_DIR)/access_zone.c \
$(BACNET_OBJECT_DIR)/credential_data_input.c \
$(BACNET_OBJECT_DIR)/acc.c \
$(BACNET_OBJECT_DIR)/bacfile.c
$(BACNET_OBJECT_DIR)/time_value.c \
$(BACNET_OBJECT_DIR)/timer.c \
$(BACNET_OBJECT_DIR)/trendlog.c
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
TARGET_BIN = ${TARGET}$(TARGET_EXT)
+11 -5
View File
@@ -102,7 +102,8 @@ static object_functions_t My_Object_Table[] = {
NULL,
NULL,
NULL,
NULL },
NULL,
Device_Writable_Property_List },
/* Analog Value (Read-Only) */
{ OBJECT_ANALOG_VALUE,
@@ -124,7 +125,8 @@ static object_functions_t My_Object_Table[] = {
NULL,
Analog_Value_Create,
Analog_Value_Delete,
NULL },
NULL,
Analog_Value_Writable_Property_List },
/* Analog Output (Commandable) */
{ OBJECT_ANALOG_OUTPUT,
@@ -146,7 +148,8 @@ static object_functions_t My_Object_Table[] = {
NULL,
Analog_Output_Create,
Analog_Output_Delete,
NULL },
NULL,
Analog_Output_Writable_Property_List },
/* Binary Output (Commandable) */
{ OBJECT_BINARY_OUTPUT,
@@ -168,7 +171,8 @@ static object_functions_t My_Object_Table[] = {
NULL,
Binary_Output_Create,
Binary_Output_Delete,
NULL },
NULL,
Binary_Output_Writable_Property_List },
/* Binary Value (Read-Only) */
{ OBJECT_BINARY_VALUE,
@@ -190,7 +194,8 @@ static object_functions_t My_Object_Table[] = {
NULL,
Binary_Value_Create,
Binary_Value_Delete,
NULL },
NULL,
Binary_Value_Writable_Property_List },
{ MAX_BACNET_OBJECT_TYPE,
NULL,
@@ -211,6 +216,7 @@ static object_functions_t My_Object_Table[] = {
NULL,
NULL,
NULL,
NULL,
NULL }
};