From df335343f3cc8c503cb3edb5d49b1a028887f653 Mon Sep 17 00:00:00 2001 From: Steve Karg Date: Mon, 15 Dec 2025 16:16:51 -0600 Subject: [PATCH] Added test for shed type amount. --- test/bacnet/basic/object/lc/src/main.c | 63 ++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/test/bacnet/basic/object/lc/src/main.c b/test/bacnet/basic/object/lc/src/main.c index 45a577a9..9e9a0626 100644 --- a/test/bacnet/basic/object/lc/src/main.c +++ b/test/bacnet/basic/object/lc/src/main.c @@ -692,6 +692,7 @@ static void testLoadControlStateMachine(void) shed_state = Load_Control_Present_Value(object_instance); zassert_equal(shed_state, BACNET_SHED_INACTIVE, NULL); test_teardown(object_instance); + /* SHED TYPE PERCENT - 20% */ test_setup(object_instance); status = Load_Control_Valid_Instance(object_instance); @@ -727,6 +728,68 @@ static void testLoadControlStateMachine(void) shed_state = Load_Control_Present_Value(object_instance); zassert_equal(shed_state, BACNET_SHED_COMPLIANT, NULL); test_teardown(object_instance); + + /* SHED TYPE AMOUNT - default value 0.0 watts */ + test_setup(object_instance); + status = Load_Control_Valid_Instance(object_instance); + zassert_true(status, NULL); + status = Load_Control_Update_Interval_Set(object_instance, 0); + zassert_true(status, NULL); + Load_Control_WriteProperty_Enable(object_instance, true); + shed_level.type = BACNET_SHED_TYPE_AMOUNT; + shed_level.value.amount = 0.0f; + status = + Load_Control_Requested_Shed_Level_Set(object_instance, &shed_level); + zassert_true(status, NULL); + Load_Control_WriteProperty_Start_Time( + object_instance, 2007, 2, 27, 15, 0, 0, 0); + Load_Control_WriteProperty_Shed_Duration(object_instance, 5); + datetime_set_values(&bdatetime, 2007, 2, 27, 15, 0, 0, 0); + datetime_timesync(&bdatetime.date, &bdatetime.time, false); + Load_Control_Timer(object_instance, 1); + shed_state = Load_Control_Present_Value(object_instance); + zassert_equal(shed_state, BACNET_SHED_REQUEST_PENDING, NULL); + Load_Control_Timer(object_instance, 1); + shed_state = Load_Control_Present_Value(object_instance); + zassert_equal(shed_state, BACNET_SHED_INACTIVE, NULL); + test_teardown(object_instance); + /* SHED TYPE PERCENT - 10.0 watts */ + test_setup(object_instance); + status = Load_Control_Valid_Instance(object_instance); + zassert_true(status, NULL); + status = Load_Control_Update_Interval_Set(object_instance, 0); + zassert_true(status, NULL); + Load_Control_WriteProperty_Enable(object_instance, true); + shed_level.type = BACNET_SHED_TYPE_AMOUNT; + shed_level.value.amount = 10.0f; + status = + Load_Control_Requested_Shed_Level_Set(object_instance, &shed_level); + zassert_true(status, NULL); + Load_Control_WriteProperty_Start_Time( + object_instance, 2007, 2, 27, 15, 0, 0, 0); + Load_Control_WriteProperty_Shed_Duration(object_instance, 5); + datetime_set_values(&bdatetime, 2007, 2, 27, 15, 0, 0, 0); + datetime_timesync(&bdatetime.date, &bdatetime.time, false); + Load_Control_Timer(object_instance, 1); + shed_state = Load_Control_Present_Value(object_instance); + zassert_equal(shed_state, BACNET_SHED_REQUEST_PENDING, NULL); + /* configure for non-compliance */ + datetime_set_values(&bdatetime, 2007, 2, 27, 15, 0, 2, 0); + datetime_timesync(&bdatetime.date, &bdatetime.time, false); + Load_Control_Timer(object_instance, 1); + shed_state = Load_Control_Present_Value(object_instance); + zassert_equal(shed_state, BACNET_SHED_NON_COMPLIANT, NULL); + /* configure for compliance - amount reference full-duty-baseline */ + priority = Load_Control_Priority_For_Writing(object_instance); + status = Load_Control_Full_Duty_Baseline_Set(object_instance, 11.0f); + zassert_true(status, NULL); + Test_Present_Value_Priority_Set(10.0f, priority); + datetime_set_values(&bdatetime, 2007, 2, 27, 15, 0, 3, 0); + datetime_timesync(&bdatetime.date, &bdatetime.time, false); + Load_Control_Timer(object_instance, 1); + shed_state = Load_Control_Present_Value(object_instance); + zassert_equal(shed_state, BACNET_SHED_COMPLIANT, NULL); + test_teardown(object_instance); } #if defined(CONFIG_ZTEST_NEW_API)