Added basic timer object, internal state machine, and unit tests (#1123)

* Added basic timer object, internal state machine, and unit tests

* Added BACnetTimerStateChangeValue encode, decode, parse, print, and diff with unit tests

* Changed handler of add/remove list element to check if the property is a BACnetLIST

* Added BACnetLIST utility for handling WriteProperty to a list.

* Fixed outlier ReadProperty object handlers to return zero when the RP parameter is NULL.
This commit is contained in:
Steve Karg
2025-11-05 15:11:45 -06:00
committed by GitHub
parent 17259b37f3
commit 4dd13cf199
126 changed files with 5509 additions and 56 deletions
+1
View File
@@ -168,6 +168,7 @@ set(BACNET_PROJECT_SOURCE
${LIBRARY_BACNET_CORE}/reject.c
${LIBRARY_BACNET_CORE}/rp.c
${LIBRARY_BACNET_CORE}/rpm.c
${LIBRARY_BACNET_CORE}/timer_value.c
${LIBRARY_BACNET_CORE}/timestamp.c
${LIBRARY_BACNET_CORE}/weeklyschedule.c
${LIBRARY_BACNET_CORE}/dailyschedule.c
+1
View File
@@ -130,6 +130,7 @@ CORESRC = $(BACNET_CORE)/abort.c \
$(BACNET_CORE)/reject.c \
$(BACNET_CORE)/rp.c \
$(BACNET_CORE)/rpm.c \
$(BACNET_CORE)/timer_value.c \
$(BACNET_CORE)/timestamp.c \
$(BACNET_CORE)/weeklyschedule.c \
$(BACNET_CORE)/dailyschedule.c \
+3
View File
@@ -1188,6 +1188,9 @@
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\rpm.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\timer_value.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\timestamp.c</name>
</file>
+1
View File
@@ -194,6 +194,7 @@ set(BACNET_PROJECT_SOURCE
${LIBRARY_BACNET_CORE}/reject.c
${LIBRARY_BACNET_CORE}/rp.c
${LIBRARY_BACNET_CORE}/rpm.c
${LIBRARY_BACNET_CORE}/timer_value.c
${LIBRARY_BACNET_CORE}/timestamp.c
${LIBRARY_BACNET_CORE}/weeklyschedule.c
${LIBRARY_BACNET_CORE}/dailyschedule.c
+1
View File
@@ -82,6 +82,7 @@ BACNET_SRC = \
$(BACNET_CORE)/rp.c \
$(BACNET_CORE)/rpm.c \
$(BACNET_CORE)/special_event.c \
$(BACNET_CORE)/timer_value.c \
$(BACNET_CORE)/timestamp.c \
$(BACNET_CORE)/weeklyschedule.c \
$(BACNET_CORE)/whohas.c \
+3
View File
@@ -1118,6 +1118,9 @@
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\rpm.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\timer_value.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\timestamp.c</name>
</file>
+1
View File
@@ -227,6 +227,7 @@ set(BACNET_PROJECT_SOURCE
${LIBRARY_BACNET_CORE}/reject.c
${LIBRARY_BACNET_CORE}/rp.c
${LIBRARY_BACNET_CORE}/rpm.c
${LIBRARY_BACNET_CORE}/timer_value.c
${LIBRARY_BACNET_CORE}/timestamp.c
${LIBRARY_BACNET_CORE}/timesync.c
${LIBRARY_BACNET_CORE}/weeklyschedule.c
+1
View File
@@ -104,6 +104,7 @@ BACNET_SRC = \
$(BACNET_CORE)/rp.c \
$(BACNET_CORE)/rpm.c \
$(BACNET_CORE)/special_event.c \
$(BACNET_CORE)/timer_value.c \
$(BACNET_CORE)/timestamp.c \
$(BACNET_CORE)/timesync.c \
$(BACNET_CORE)/weeklyschedule.c \
+3
View File
@@ -1127,6 +1127,9 @@
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\rpm.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\timer_value.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\src\bacnet\timestamp.c</name>
</file>
@@ -202,6 +202,7 @@
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\schedule.c" />
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\structured_view.c" />
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\time_value.c" />
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\timer.c" />
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\trendlog.c" />
</ItemGroup>
<ItemGroup>
@@ -75,6 +75,9 @@
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\time_value.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\timer.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\trendlog.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -215,6 +215,7 @@
<ClCompile Include="..\..\..\..\src\bacnet\rp.c" />
<ClCompile Include="..\..\..\..\src\bacnet\rpm.c" />
<ClCompile Include="..\..\..\..\src\bacnet\basic\sys\sbuf.c" />
<ClCompile Include="..\..\..\..\src\bacnet\timer_value.c" />
<ClCompile Include="..\..\..\..\src\bacnet\timestamp.c" />
<ClCompile Include="..\..\..\..\src\bacnet\timesync.c" />
<ClCompile Include="..\..\..\..\src\bacnet\basic\tsm\tsm.c" />
@@ -129,6 +129,9 @@
<ClCompile Include="..\..\..\..\src\bacnet\rpm.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\bacnet\timer_value.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\bacnet\timestamp.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -89,6 +89,7 @@
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\sc_netport.c" />
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\structured_view.c" />
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\time_value.c" />
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\timer.c" />
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\trendlog.c" />
<ClCompile Include="..\..\..\..\src\bacnet\basic\service\h_alarm_ack.c" />
<ClCompile Include="..\..\..\..\src\bacnet\basic\service\h_apdu.c" />
@@ -208,6 +209,7 @@
<ClCompile Include="..\..\..\..\src\bacnet\rp.c" />
<ClCompile Include="..\..\..\..\src\bacnet\rpm.c" />
<ClCompile Include="..\..\..\..\src\bacnet\secure_connect.c" />
<ClCompile Include="..\..\..\..\src\bacnet\timer_value.c" />
<ClCompile Include="..\..\..\..\src\bacnet\timestamp.c" />
<ClCompile Include="..\..\..\..\src\bacnet\timesync.c" />
<ClCompile Include="..\..\..\..\src\bacnet\weeklyschedule.c" />
@@ -301,6 +303,7 @@
<ClInclude Include="..\..\..\..\src\bacnet\basic\object\sc_netport.h" />
<ClInclude Include="..\..\..\..\src\bacnet\basic\object\structured_view.h" />
<ClInclude Include="..\..\..\..\src\bacnet\basic\object\time_value.h" />
<ClInclude Include="..\..\..\..\src\bacnet\basic\object\timer.h" />
<ClInclude Include="..\..\..\..\src\bacnet\basic\object\trendlog.h" />
<ClInclude Include="..\..\..\..\src\bacnet\basic\services.h" />
<ClInclude Include="..\..\..\..\src\bacnet\basic\service\h_alarm_ack.h" />
@@ -201,6 +201,9 @@
<ClCompile Include="..\..\..\..\src\bacnet\rpm.c">
<Filter>Source Files\src\bacnet</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\bacnet\timer_value.c">
<Filter>Source Files\src\bacnet</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\bacnet\timestamp.c">
<Filter>Source Files\src\bacnet</Filter>
</ClCompile>
@@ -627,6 +630,9 @@
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\time_value.c">
<Filter>Source Files\src\bacnet\basic\object</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\bacnet\basic\object\timer.c">
<Filter>Source Files\src\bacnet\basic\object</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\bacnet\basic\service\h_whoami.c">
<Filter>Source Files\src\bacnet\basic\service</Filter>
</ClCompile>
@@ -1271,6 +1277,9 @@
<ClInclude Include="..\..\..\..\src\bacnet\basic\object\time_value.h">
<Filter>Source Files\src\bacnet\basic\object</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\bacnet\basic\object\timer.h">
<Filter>Source Files\src\bacnet\basic\object</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\src\bacnet\basic\service\h_whoami.h">
<Filter>Source Files\src\bacnet\basic\service</Filter>
</ClInclude>