Fixed channel-value encoding in the channel object when no-coercian is required for lighting-command, color-command, and xy-color. (#1190)

This commit is contained in:
Steve Karg
2025-12-18 11:08:28 -06:00
committed by GitHub
parent 390711a604
commit 5a9abde528
5 changed files with 243 additions and 2 deletions
+28 -1
View File
@@ -402,7 +402,7 @@ static void test_BACnetChannelValue(void)
bacnet_channel_value_link_array(case_value, ARRAY_SIZE(case_value));
value = &case_value[0];
while (value) {
/* no coercion path */
/* write-group encode/decode path */
null_len = bacnet_channel_value_encode(NULL, sizeof(apdu), value);
if (value->tag != BACNET_APPLICATION_TAG_NULL) {
zassert_not_equal(null_len, 0, NULL);
@@ -464,6 +464,33 @@ static void test_BACnetChannelValue(void)
zassert_true(
status, "decode: different: %s",
bactext_application_tag_name(value->tag));
/* no-coercion path */
null_len =
bacnet_channel_value_no_coerce_encode(NULL, sizeof(apdu), value);
if (value->tag != BACNET_APPLICATION_TAG_NULL) {
zassert_not_equal(null_len, 0, NULL);
}
apdu_len =
bacnet_channel_value_no_coerce_encode(apdu, sizeof(apdu), value);
zassert_equal(
apdu_len, null_len, "value->tag: %s len=%d null_len=%d",
bactext_application_tag_name(value->tag), apdu_len, null_len);
test_len = bacnet_channel_value_no_coerce_decode(
apdu, apdu_len, test_value.tag, NULL);
zassert_equal(test_len, BACNET_STATUS_ERROR, NULL);
test_len = bacnet_channel_value_no_coerce_decode(
NULL, apdu_len, test_value.tag, &test_value);
zassert_equal(test_len, BACNET_STATUS_ERROR, NULL);
test_len = bacnet_channel_value_no_coerce_decode(
apdu, apdu_len, test_value.tag, &test_value);
zassert_not_equal(
test_len, BACNET_STATUS_ERROR, "value->tag: %s test_len=%d",
bactext_application_tag_name(value->tag), test_len);
if (value->tag != BACNET_APPLICATION_TAG_NULL) {
zassert_equal(
test_len, apdu_len, "value->tag: %s test_len=%d",
bactext_application_tag_name(value->tag), test_len);
}
/* next test case */
value = value->next;
}