From 24587dfc2714ebfe4286235b250a3ca9fff77cfc Mon Sep 17 00:00:00 2001 From: Steve Karg Date: Thu, 26 Feb 2026 11:26:42 -0600 Subject: [PATCH] Add PROP_TIMER_RUNNING to writable properties and implement Timer_Running_Set functionality (#1245) --- CHANGELOG.md | 2 ++ src/bacnet/basic/object/timer.c | 8 ++++++++ test/bacnet/basic/object/timer/src/main.c | 3 +++ 3 files changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 190d1e06..a4b10183 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,8 @@ The git repositories are hosted at the following sites: ### Added +* Added PROP_TIMER_RUNNING to writable properties and implement + Timer_Running_Set functionality. (#1245) * Added BACNET_STACK_DEPRECATED_DISABLE guards around all of the deprecated decoding functions to ensure they are not used except intentionally for legacy code bases. (#1244) diff --git a/src/bacnet/basic/object/timer.c b/src/bacnet/basic/object/timer.c index b2ef5df9..2258b888 100644 --- a/src/bacnet/basic/object/timer.c +++ b/src/bacnet/basic/object/timer.c @@ -104,6 +104,7 @@ static const int32_t Properties_Proprietary[] = { -1 }; static const int32_t Writable_Properties[] = { /* unordered list of always writable properties */ PROP_PRESENT_VALUE, + PROP_TIMER_RUNNING, PROP_OUT_OF_SERVICE, PROP_DEFAULT_TIMEOUT, PROP_MIN_PRES_VALUE, @@ -1955,6 +1956,13 @@ bool Timer_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data) } } break; + case PROP_TIMER_RUNNING: + status = write_property_type_valid( + wp_data, &value, BACNET_APPLICATION_TAG_BOOLEAN); + if (status) { + Timer_Running_Set(wp_data->object_instance, value.type.Boolean); + } + break; case PROP_OUT_OF_SERVICE: status = write_property_type_valid( wp_data, &value, BACNET_APPLICATION_TAG_BOOLEAN); diff --git a/test/bacnet/basic/object/timer/src/main.c b/test/bacnet/basic/object/timer/src/main.c index 4e0db131..8fae6ff2 100644 --- a/test/bacnet/basic/object/timer/src/main.c +++ b/test/bacnet/basic/object/timer/src/main.c @@ -55,6 +55,7 @@ static void test_Timer_Read_Write(void) uint32_t test_instance = 0; bool status = false; const int32_t skip_fail_property_list[] = { -1 }; + const int32_t *writable_properties = NULL; BACNET_WRITE_PROPERTY_DATA wp_data = { 0 }; BACNET_DEVICE_OBJECT_PROPERTY_REFERENCE member = { 0 }, *test_member = NULL; BACNET_APPLICATION_DATA_VALUE value = { 0 }; @@ -497,6 +498,8 @@ static void test_Timer_Read_Write(void) zassert_true(status, NULL); status = Timer_Description_Set(instance, NULL); zassert_true(status, NULL); + Timer_Writable_Property_List(instance, &writable_properties); + zassert_not_null(writable_properties, NULL); status = characterstring_init_ansi(&cstring, ""); zassert_true(status, NULL); status =