Feature/apdu null length returned (#285)

* Add APDU as NULL to get BACnet type lengths.

* Fix bacapp copy test to succeed

* fix BACnet REAL and DOUBLE decode

* Add unit test for NULL APDU encoding for length

* Add unit tests for bacapp context

* refactor host-n-port to hostnport.c module

* fix BVLC decoder

* additional unit testing for bacapp

* include bacdevobjpropref module in builds

* simplify bacapp snprintf to be able to return length

* adjust compiler for variable-length arrays

* fix bug found by scan-build

Authored-by: Steve Karg <skarg@users.sourceforge.net>
This commit is contained in:
Steve Karg
2022-06-01 15:42:50 -05:00
committed by GitHub
parent 810bfefb34
commit f147283293
76 changed files with 3474 additions and 2791 deletions
+2 -1
View File
@@ -24,7 +24,7 @@ add_compile_definitions(
BIG_ENDIAN=0
CONFIG_ZTEST=1
PRINT_ENABLED=1
BACAPP_HOST_N_PORT=1
BACAPP_ALL=1
)
include_directories(
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/datalink/bvlc.c
+217 -72
View File
@@ -13,6 +13,51 @@
#include <ztest.h>
#include <bacnet/bacdcode.h>
#include <bacnet/bacapp.h>
#include <bacnet/bactext.h>
static const BACNET_APPLICATION_TAG tag_list[] = {
BACNET_APPLICATION_TAG_NULL,
#if defined(BACAPP_BOOLEAN)
BACNET_APPLICATION_TAG_BOOLEAN,
#endif
#if defined(BACAPP_UNSIGNED)
BACNET_APPLICATION_TAG_UNSIGNED_INT,
#endif
#if defined(BACAPP_SIGNED)
BACNET_APPLICATION_TAG_SIGNED_INT,
#endif
#if defined(BACAPP_REAL)
BACNET_APPLICATION_TAG_REAL,
#endif
#if defined(BACAPP_DOUBLE)
BACNET_APPLICATION_TAG_DOUBLE,
#endif
#if defined(BACAPP_OCTET_STRING)
BACNET_APPLICATION_TAG_OCTET_STRING,
#endif
#if defined(BACAPP_CHARACTER_STRING)
BACNET_APPLICATION_TAG_CHARACTER_STRING,
#endif
#if defined(BACAPP_BIT_STRING)
BACNET_APPLICATION_TAG_BIT_STRING,
#endif
#if defined(BACAPP_ENUMERATED)
BACNET_APPLICATION_TAG_ENUMERATED,
#endif
#if defined(BACAPP_DATE)
BACNET_APPLICATION_TAG_DATE,
#endif
#if defined(BACAPP_TIME)
BACNET_APPLICATION_TAG_TIME,
#endif
#if defined(BACAPP_OBJECT_ID)
BACNET_APPLICATION_TAG_OBJECT_ID,
#endif
#if defined(BACAPP_TYPES_EXTRA)
BACNET_APPLICATION_TAG_LIGHTING_COMMAND,
BACNET_APPLICATION_TAG_HOST_N_PORT,
#endif
};
/**
* @addtogroup bacnet_tests
@@ -103,57 +148,13 @@ static void test_bacapp_copy(void)
memset(&src_value, 0xAA, sizeof(src_value));
memset(&dest_value, 0, sizeof(dest_value));
zassert_false(bacapp_copy(&dest_value, &src_value), NULL);
zassert_true(bacapp_copy(&dest_value, &src_value), NULL);
zassert_equal(dest_value.tag, src_value.tag, NULL);
zassert_equal(dest_value.next, src_value.next, NULL);
const BACNET_APPLICATION_TAG tags[] = {
BACNET_APPLICATION_TAG_NULL,
#if defined(BACAPP_BOOLEAN)
BACNET_APPLICATION_TAG_BOOLEAN,
#endif
#if defined(BACAPP_UNSIGNED)
BACNET_APPLICATION_TAG_UNSIGNED_INT,
#endif
#if defined(BACAPP_SIGNED)
BACNET_APPLICATION_TAG_SIGNED_INT,
#endif
#if defined(BACAPP_REAL)
BACNET_APPLICATION_TAG_REAL,
#endif
#if defined(BACAPP_DOUBLE)
BACNET_APPLICATION_TAG_DOUBLE,
#endif
#if defined(BACAPP_OCTET_STRING)
BACNET_APPLICATION_TAG_OCTET_STRING,
#endif
#if defined(BACAPP_CHARACTER_STRING)
BACNET_APPLICATION_TAG_CHARACTER_STRING,
#endif
#if defined(BACAPP_BIT_STRING)
BACNET_APPLICATION_TAG_BIT_STRING,
#endif
#if defined(BACAPP_ENUMERATED)
BACNET_APPLICATION_TAG_ENUMERATED,
#endif
#if defined(BACAPP_DATE)
BACNET_APPLICATION_TAG_DATE,
#endif
#if defined(BACAPP_TIME)
BACNET_APPLICATION_TAG_TIME,
#endif
#if defined(BACAPP_OBJECT_ID)
BACNET_APPLICATION_TAG_OBJECT_ID,
#endif
#if defined(BACAPP_LIGHTING_COMMAND)
BACNET_APPLICATION_TAG_LIGHTING_COMMAND,
#endif
#if defined(BACAPP_HOST_N_PORT)
BACNET_APPLICATION_TAG_HOST_N_PORT,
#endif
};
for (i = 0; i < sizeof(tags)/sizeof(tags[0]); ++i) {
BACNET_APPLICATION_TAG tag = tags[i];
for (i = 0; i < sizeof(tag_list)/sizeof(tag_list[0]); ++i) {
BACNET_APPLICATION_TAG tag = tag_list[i];
bool result;
bool expected_result = true;
#if ! defined(BACAPP_NULL)
@@ -163,11 +164,18 @@ static void test_bacapp_copy(void)
#endif
memset(&src_value, 0, sizeof(src_value));
src_value.next = NULL;
memset(&dest_value, 0xBB, sizeof(dest_value));
dest_value.next = NULL;
src_value.tag = tag;
src_value.next = (struct BACnet_Application_Data_Value *)(((uint32_t)tags[i]) << 8);
zassert_equal(bacapp_copy(&dest_value, &src_value), expected_result, NULL);
zassert_true(bacapp_same_value(&dest_value, &src_value), NULL);
result = bacapp_copy(&dest_value, &src_value);
zassert_equal(result, expected_result, NULL);
result = bacapp_same_value(&dest_value, &src_value);
if (!result) {
printf("bacapp: same-value of tag=%s[%u]\n",
bactext_application_tag_name(tag), tag);
}
zassert_true(result, NULL);
zassert_equal(dest_value.next, src_value.next, NULL);
}
}
@@ -428,7 +436,7 @@ static void test_bacapp_same_value(void)
memset(&test_value, 0, sizeof(test_value));
test_value.tag = BACNET_APPLICATION_TAG_LIGHTING_COMMAND;
value = test_value; /* Struct copy */
#if defined(BACAPP_LIGHTING_COMMAND)
#if defined(BACAPP_TYPES_EXTRA)
zassert_true(bacapp_same_value(&value, &test_value), NULL);
#else
zassert_false(bacapp_same_value(&value, &test_value), NULL);
@@ -528,7 +536,6 @@ static void testBACnetApplicationData_Safe(void)
break;
}
single_length_segment = bacapp_encode_data(&apdu[len], &input_value[i]);
;
zassert_true(single_length_segment > 0, NULL);
/* len_segment is accumulated length */
if (i == 0) {
@@ -724,10 +731,38 @@ static bool verifyBACnetApplicationDataValue(BACNET_APPLICATION_DATA_VALUE *valu
{
uint8_t apdu[480] = { 0 };
int apdu_len = 0;
BACNET_APPLICATION_DATA_VALUE test_value;
int null_len = 0;
BACNET_APPLICATION_DATA_VALUE test_value = { 0 };
apdu_len = bacapp_encode_application_data(&apdu[0], value);
bacapp_decode_application_data(&apdu[0], apdu_len, &test_value);
zassert_true(apdu_len > 0, NULL);
null_len = bacapp_encode_application_data(NULL, value);
zassert_equal(apdu_len, null_len, NULL);
apdu_len = bacapp_decode_application_data(&apdu[0], apdu_len, &test_value);
zassert_true(apdu_len != BACNET_STATUS_ERROR, NULL);
return bacapp_same_value(value, &test_value);
}
/**
* @brief Test
*/
static bool verifyBACnetComplexDataValue(
BACNET_APPLICATION_DATA_VALUE *value,
BACNET_PROPERTY_ID prop)
{
uint8_t apdu[480] = { 0 };
int apdu_len = 0;
int null_len = 0;
BACNET_APPLICATION_DATA_VALUE test_value = { 0 };
apdu_len = bacapp_encode_application_data(&apdu[0], value);
zassert_true(apdu_len > 0, NULL);
null_len = bacapp_encode_application_data(NULL, value);
zassert_equal(apdu_len, null_len, NULL);
apdu_len = bacapp_decode_generic_property(&apdu[0], apdu_len,
&test_value, prop);
zassert_true(apdu_len != BACNET_STATUS_ERROR, NULL);
return bacapp_same_value(value, &test_value);
}
@@ -737,7 +772,7 @@ static bool verifyBACnetApplicationDataValue(BACNET_APPLICATION_DATA_VALUE *valu
*/
static void testBACnetApplicationData(void)
{
BACNET_APPLICATION_DATA_VALUE value;
BACNET_APPLICATION_DATA_VALUE value = { 0 };
bool status = false;
status = bacapp_parse_application_data(
@@ -816,6 +851,64 @@ static void testBACnetApplicationData(void)
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_DOUBLE, "0.0", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_DOUBLE, "-1.0", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_DOUBLE, "1.0", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_DOUBLE, "3.14159", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_DOUBLE, "-3.14159", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_OCTET_STRING, "1234567890ABCDEF", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_OCTET_STRING, "12-34-56-78-90-AB-CD-EF", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_OCTET_STRING, "12 34 56 78 90 AB CD EF", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
/* test empty string */
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_OCTET_STRING, "", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_CHARACTER_STRING, "Karg!", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
/* test empty string */
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_CHARACTER_STRING, "", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_BIT_STRING, "1011010010011111", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_BIT_STRING, "111100001111", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_ENUMERATED, "0", &value);
zassert_true(status, NULL);
@@ -906,35 +999,85 @@ static void testBACnetApplicationData(void)
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_CHARACTER_STRING, "Karg!", &value);
BACNET_APPLICATION_TAG_OBJECT_ID, "8:4194303", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
/* test empty string */
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_CHARACTER_STRING, "", &value);
BACNET_APPLICATION_TAG_OBJECT_ID, "0:0", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_OCTET_STRING, "1234567890ABCDEF", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
BACNET_APPLICATION_TAG_HOST_N_PORT, "192", &value);
zassert_false(status, NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_OCTET_STRING, "12-34-56-78-90-AB-CD-EF", &value);
BACNET_APPLICATION_TAG_HOST_N_PORT, "192.168.1.1", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_OCTET_STRING, "12 34 56 78 90 AB CD EF", &value);
BACNET_APPLICATION_TAG_HOST_N_PORT, "192.168.1.1:47808", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
/* test empty string */
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_OCTET_STRING, "", &value);
zassert_true(status, NULL);
zassert_true(verifyBACnetApplicationDataValue(&value), NULL);
status = verifyBACnetComplexDataValue(&value, PROP_FD_BBMD_ADDRESS);
status = verifyBACnetComplexDataValue(&value,
PROP_BACNET_IP_GLOBAL_ADDRESS);
return;
}
/**
* @brief Test
*/
static void test_bacapp_context_data(void)
{
const uint8_t context_tag_number = 1;
uint8_t apdu[480] = { 0 };
BACNET_APPLICATION_DATA_VALUE value = { 0 };
BACNET_APPLICATION_DATA_VALUE test_value = { 0 };
bool status = false;
int apdu_len, null_len, test_len;
unsigned i = 0;
for (i = 0; i < sizeof(tag_list)/sizeof(tag_list[0]); i++) {
BACNET_APPLICATION_TAG tag = tag_list[i];
value.tag = tag;
null_len = bacapp_encode_context_data_value(NULL,
context_tag_number, &value);
apdu_len = bacapp_encode_context_data_value(apdu,
context_tag_number, &value);
if (apdu_len != null_len) {
printf("bacapp: NULL len=%d != APDU len=%d for tag=%s",
null_len, apdu_len, bactext_application_tag_name(tag));
}
zassert_equal(apdu_len, null_len, NULL);
}
}
/**
* @brief Test
*/
static void test_bacapp_sprintf_data(void)
{
BACNET_APPLICATION_DATA_VALUE value = { 0 };
BACNET_OBJECT_PROPERTY_VALUE object_value = { 0 };
bool status = false;
int str_len = 0;
object_value.object_type = OBJECT_DEVICE;
object_value.object_instance = 0;
object_value.object_property = PROP_DAYLIGHT_SAVINGS_STATUS;
object_value.array_index = BACNET_ARRAY_ALL;
object_value.value = &value;
status = bacapp_parse_application_data(
BACNET_APPLICATION_TAG_NULL, NULL, &value);
zassert_true(status, NULL);
str_len = bacapp_snprintf_value(NULL, 0, &object_value);
if (str_len > 0) {
char str[str_len+1];
bacapp_snprintf_value(str, str_len+1, &object_value);
zassert_mem_equal(str, "Null", str_len, NULL);
}
}
/**
* @}
*/
@@ -951,7 +1094,9 @@ void test_main(void)
ztest_unit_test(test_bacapp_same_value),
ztest_unit_test(testBACnetApplicationData),
ztest_unit_test(testBACnetApplicationDataLength),
ztest_unit_test(testBACnetApplicationData_Safe)
ztest_unit_test(testBACnetApplicationData_Safe),
ztest_unit_test(test_bacapp_context_data),
ztest_unit_test(test_bacapp_sprintf_data)
);
ztest_run_test_suite(bacapp_tests);
+75 -22
View File
@@ -101,6 +101,8 @@ static void testBACDCodeTags(void)
len = encode_opening_tag(&apdu[0], tag_number);
test_len = get_apdu_len(IS_EXTENDED_TAG_NUMBER(apdu[0]), 0);
zassert_equal(len, test_len, NULL);
test_len = encode_opening_tag(NULL, tag_number);
zassert_equal(len, test_len, NULL);
len = decode_tag_number_and_value(&apdu[0], &test_tag_number, &value);
zassert_equal(value, 0, NULL);
zassert_equal(len, test_len, NULL);
@@ -109,6 +111,8 @@ static void testBACDCodeTags(void)
zassert_false(IS_CLOSING_TAG(apdu[0]), NULL);
len = encode_closing_tag(&apdu[0], tag_number);
zassert_equal(len, test_len, NULL);
test_len = encode_closing_tag(NULL, tag_number);
zassert_equal(len, test_len, NULL);
len = decode_tag_number_and_value(&apdu[0], &test_tag_number, &value);
zassert_equal(len, test_len, NULL);
zassert_equal(value, 0, NULL);
@@ -145,18 +149,20 @@ static void testBACDCodeEnumerated(void)
uint32_t value = 1;
uint32_t decoded_value = 0;
int i = 0, apdu_len = 0;
int len = 0;
int len = 0, null_len = 0;
uint8_t apdu[MAX_APDU] = { 0 };
uint8_t tag_number = 0;
uint32_t len_value = 0;
for (i = 0; i < 31; i++) {
apdu_len = encode_application_enumerated(&array[0], value);
null_len = encode_application_enumerated(NULL, value);
len = decode_tag_number_and_value(&array[0], &tag_number, &len_value);
len += decode_enumerated(&array[len], len_value, &decoded_value);
zassert_equal(decoded_value, value, NULL);
zassert_equal(tag_number, BACNET_APPLICATION_TAG_ENUMERATED, NULL);
zassert_equal(len, apdu_len, NULL);
zassert_equal(null_len, apdu_len, NULL);
/* encode back the value */
encode_application_enumerated(&encoded_array[0], decoded_value);
zassert_equal(memcmp(&array[0], &encoded_array[0], sizeof(array)), 0, NULL);
@@ -169,10 +175,12 @@ static void testBACDCodeEnumerated(void)
zassert_false(IS_CONTEXT_SPECIFIC(apdu[0]), NULL);
/* context specific encoding */
apdu_len = encode_context_enumerated(&apdu[0], 3, value);
null_len = encode_context_enumerated(NULL, 3, value);
zassert_true(IS_CONTEXT_SPECIFIC(apdu[0]), NULL);
len = decode_tag_number_and_value(&apdu[0], &tag_number, NULL);
zassert_equal(len, 1, NULL);
zassert_equal(tag_number, 3, NULL);
zassert_equal(null_len, apdu_len, NULL);
/* test the interesting values */
value = value << 1;
}
@@ -187,7 +195,7 @@ static void testBACDCodeReal(void)
float value = 42.123F;
float decoded_value = 0.0F;
uint8_t apdu[MAX_APDU] = { 0 };
int len = 0, apdu_len = 0;
int len = 0, apdu_len = 0, null_len = 0;
uint8_t tag_number = 0;
uint32_t long_value = 0;
@@ -199,7 +207,9 @@ static void testBACDCodeReal(void)
/* a real will take up 4 octects plus a one octet tag */
apdu_len = encode_application_real(&apdu[0], value);
null_len = encode_application_real(NULL, value);
zassert_equal(apdu_len, 5, NULL);
zassert_equal(apdu_len, null_len, NULL);
/* len tells us how many octets were used for encoding the value */
len = decode_tag_number_and_value(&apdu[0], &tag_number, &long_value);
zassert_equal(tag_number, BACNET_APPLICATION_TAG_REAL, NULL);
@@ -219,7 +229,7 @@ static void testBACDCodeDouble(void)
double value = 42.123;
double decoded_value = 0.0;
uint8_t apdu[MAX_APDU] = { 0 };
int len = 0, apdu_len = 0;
int len = 0, apdu_len = 0, null_len = 0;
uint8_t tag_number = 0;
uint32_t long_value = 0;
@@ -231,7 +241,9 @@ static void testBACDCodeDouble(void)
/* a real will take up 4 octects plus a one octet tag */
apdu_len = encode_application_double(&apdu[0], value);
null_len = encode_application_double(NULL, value);
zassert_equal(apdu_len, 10, NULL);
zassert_equal(apdu_len, null_len, NULL);
/* len tells us how many octets were used for encoding the value */
len = decode_tag_number_and_value(&apdu[0], &tag_number, &long_value);
zassert_equal(tag_number, BACNET_APPLICATION_TAG_DOUBLE, NULL);
@@ -249,7 +261,7 @@ static void verifyBACDCodeUnsignedValue(BACNET_UNSIGNED_INTEGER value)
uint8_t array[5] = { 0 };
uint8_t encoded_array[5] = { 0 };
BACNET_UNSIGNED_INTEGER decoded_value = 0;
int len;
int len = 0, null_len = 0;
uint8_t apdu[MAX_APDU] = { 0 };
uint8_t tag_number = 0;
uint32_t len_value = 0;
@@ -267,7 +279,9 @@ static void verifyBACDCodeUnsignedValue(BACNET_UNSIGNED_INTEGER value)
zassert_equal(memcmp(&array[0], &encoded_array[0], sizeof(array)), 0, NULL);
/* an unsigned will take up to 4 octects */
/* plus a one octet for the tag */
encode_application_unsigned(&apdu[0], value);
len = encode_application_unsigned(&apdu[0], value);
null_len = encode_application_unsigned(NULL, value);
zassert_equal(len, null_len, NULL);
/* apdu_len varies... */
len = decode_tag_number_and_value(&apdu[0], &tag_number, NULL);
zassert_equal(len, 1, NULL);
@@ -298,15 +312,23 @@ static void testBACDCodeUnsigned(void)
static void testBACnetUnsigned(void)
{
uint8_t apdu[32] = { 0 };
BACNET_UNSIGNED_INTEGER value = 0, test_value = 0;
int len = 0, test_len = 0;
BACNET_UNSIGNED_INTEGER value = 1, test_value = 0;
int len = 0, test_len = 0, null_len = 0;
unsigned i;
#ifdef UINT64_MAX
const unsigned max_bits = 64;
#else
const unsigned max_bits = 32;
#endif
for (value = 0; value == BACNET_UNSIGNED_INTEGER_MAX;
value = (value << 8) | 0xff) {
for (i = 0; i < max_bits; i++) {
len = encode_bacnet_unsigned(&apdu[0], value);
null_len = encode_bacnet_unsigned(NULL, value);
test_len = decode_unsigned(&apdu[0], len, &test_value);
zassert_equal(len, null_len, NULL);
zassert_equal(len, test_len, NULL);
zassert_equal(value, test_value, NULL);
value |= (value << 1);
}
}
@@ -315,13 +337,15 @@ static void testBACDCodeSignedValue(int32_t value)
uint8_t array[5] = { 0 };
uint8_t encoded_array[5] = { 0 };
int32_t decoded_value = 0;
int len = 0;
int len = 0, null_len = 0;
uint8_t apdu[MAX_APDU] = { 0 };
uint8_t tag_number = 0;
uint32_t len_value = 0;
int diff = 0;
len = encode_application_signed(&array[0], value);
null_len = encode_application_signed(NULL, value);
zassert_equal(null_len, len, NULL);
len = decode_tag_number_and_value(&array[0], &tag_number, &len_value);
len = decode_signed(&array[len], len_value, &decoded_value);
zassert_equal(tag_number, BACNET_APPLICATION_TAG_SIGNED_INT, NULL);
@@ -331,7 +355,9 @@ static void testBACDCodeSignedValue(int32_t value)
"value=%ld decoded_value=%ld\n", (long)value, (long)decoded_value);
print_apdu(&array[0], sizeof(array));
}
encode_application_signed(&encoded_array[0], decoded_value);
len = encode_application_signed(&encoded_array[0], decoded_value);
null_len = encode_application_signed(NULL, decoded_value);
zassert_equal(null_len, len, NULL);
diff = memcmp(&array[0], &encoded_array[0], sizeof(array));
zassert_equal(diff, 0, NULL);
if (diff) {
@@ -342,7 +368,9 @@ static void testBACDCodeSignedValue(int32_t value)
}
/* a signed int will take up to 4 octects */
/* plus a one octet for the tag */
encode_application_signed(&apdu[0], value);
len = encode_application_signed(&apdu[0], value);
null_len = encode_application_signed(NULL, value);
zassert_equal(null_len, len, NULL);
len = decode_tag_number_and_value(&apdu[0], &tag_number, NULL);
zassert_equal(tag_number, BACNET_APPLICATION_TAG_SIGNED_INT, NULL);
zassert_false(IS_CONTEXT_SPECIFIC(apdu[0]), NULL);
@@ -378,19 +406,28 @@ static void testBACnetSigned(void)
{
uint8_t apdu[32] = { 0 };
int32_t value = 0, test_value = 0;
int len = 0, test_len = 0;
int len = 0, test_len = 0, null_len = 0;
unsigned i = 0;
for (value = -2147483647; value < 0; value += 127) {
value = -2147483647;
for (i = 0; i < 32; i++) {
len = encode_bacnet_signed(&apdu[0], value);
null_len = encode_bacnet_signed(NULL, value);
test_len = decode_signed(&apdu[0], len, &test_value);
zassert_equal(len, null_len, NULL);
zassert_equal(len, test_len, NULL);
zassert_equal(value, test_value, NULL);
value /= 2;
}
for (value = 2147483647; value > 0; value -= 127) {
value = 2147483647;
for (i = 0; i < 32; i++) {
len = encode_bacnet_signed(&apdu[0], value);
null_len = encode_bacnet_signed(NULL, value);
test_len = decode_signed(&apdu[0], len, &test_value);
zassert_equal(len, null_len, NULL);
zassert_equal(len, test_len, NULL);
zassert_equal(value, test_value, NULL);
value /= 2;
}
}
@@ -402,8 +439,7 @@ static void testBACDCodeOctetString(void)
BACNET_OCTET_STRING test_octet_string;
uint8_t test_value[MAX_APDU] = { "" };
int i; /* for loop counter */
int apdu_len;
int len;
int apdu_len = 0, len = 0, null_len = 0;
uint8_t tag_number = 0;
uint32_t len_value = 0;
bool status = false;
@@ -412,6 +448,8 @@ static void testBACDCodeOctetString(void)
status = octetstring_init(&octet_string, NULL, 0);
zassert_true(status, NULL);
apdu_len = encode_application_octet_string(&array[0], &octet_string);
null_len = encode_application_octet_string(NULL, &octet_string);
zassert_equal(apdu_len, null_len, NULL);
len = decode_tag_number_and_value(&array[0], &tag_number, &len_value);
zassert_equal(tag_number, BACNET_APPLICATION_TAG_OCTET_STRING, NULL);
len += decode_octet_string(&array[len], len_value, &test_octet_string);
@@ -426,6 +464,8 @@ static void testBACDCodeOctetString(void)
zassert_true(status, NULL);
apdu_len =
encode_application_octet_string(&encoded_array[0], &octet_string);
null_len = encode_application_octet_string(NULL, &octet_string);
zassert_equal(apdu_len, null_len, NULL);
len = decode_tag_number_and_value(
&encoded_array[0], &tag_number, &len_value);
zassert_equal(tag_number, BACNET_APPLICATION_TAG_OCTET_STRING, NULL);
@@ -454,8 +494,7 @@ static void testBACDCodeCharacterString(void)
BACNET_CHARACTER_STRING test_char_string;
char test_value[MAX_APDU] = { "" };
int i; /* for loop counter */
int apdu_len;
int len;
int apdu_len = 0, len = 0, null_len = 0;
uint8_t tag_number = 0;
uint32_t len_value = 0;
int diff = 0; /* for comparison */
@@ -464,6 +503,8 @@ static void testBACDCodeCharacterString(void)
status = characterstring_init(&char_string, CHARACTER_ANSI_X34, NULL, 0);
zassert_true(status, NULL);
apdu_len = encode_application_character_string(&array[0], &char_string);
null_len = encode_application_character_string(NULL, &char_string);
zassert_equal(apdu_len, null_len, NULL);
len = decode_tag_number_and_value(&array[0], &tag_number, &len_value);
zassert_equal(tag_number, BACNET_APPLICATION_TAG_CHARACTER_STRING, NULL);
len += decode_character_string(&array[len], len_value, &test_char_string);
@@ -478,6 +519,8 @@ static void testBACDCodeCharacterString(void)
zassert_true(status, NULL);
apdu_len = encode_application_character_string(
&encoded_array[0], &char_string);
null_len = encode_application_character_string(NULL, &char_string);
zassert_equal(apdu_len, null_len, NULL);
len = decode_tag_number_and_value(
&encoded_array[0], &tag_number, &len_value);
zassert_equal(tag_number, BACNET_APPLICATION_TAG_CHARACTER_STRING, NULL);
@@ -506,10 +549,12 @@ static void testBACDCodeObject(void)
BACNET_OBJECT_TYPE decoded_type = OBJECT_ANALOG_OUTPUT;
uint32_t instance = 123;
uint32_t decoded_instance = 0;
int len = 0;
int apdu_len = 0, len = 0, null_len = 0;
uint8_t tag_number = 0;
encode_bacnet_object_id(&encoded_array[0], type, instance);
apdu_len = encode_bacnet_object_id(&encoded_array[0], type, instance);
null_len = encode_bacnet_object_id(NULL, type, instance);
zassert_equal(apdu_len, null_len, NULL);
decode_object_id(&encoded_array[0], &decoded_type, &decoded_instance);
zassert_equal(decoded_type, type, NULL);
zassert_equal(decoded_instance, instance, NULL);
@@ -520,6 +565,8 @@ static void testBACDCodeObject(void)
/* test application encoded */
len =
encode_application_object_id(&encoded_array[0], type, instance);
null_len = encode_application_object_id(NULL, type, instance);
zassert_equal(len, null_len, NULL);
zassert_true(len > 0, NULL);
bacnet_object_id_application_decode(
&encoded_array[0], len, &decoded_type, &decoded_instance);
@@ -549,6 +596,8 @@ static void testBACDCodeObject(void)
len = encode_context_object_id(
&encoded_array[0], tag_number, type, instance);
zassert_true(len > 0, NULL);
null_len = encode_context_object_id(NULL, tag_number, type, instance);
zassert_equal(len, null_len, NULL);
len = decode_context_object_id(
&encoded_array[0], tag_number, &decoded_type, &decoded_instance);
zassert_true(len > 0, NULL);
@@ -588,7 +637,7 @@ static void testBACDCodeBitString(void)
uint8_t apdu[MAX_APDU] = { 0 };
uint32_t len_value = 0;
uint8_t tag_number = 0;
int len = 0;
int len = 0, null_len = 0;
bitstring_init(&bit_string);
/* verify initialization */
@@ -603,6 +652,8 @@ static void testBACDCodeBitString(void)
zassert_true(bitstring_bit(&bit_string, bit), NULL);
/* encode */
len = encode_application_bitstring(&apdu[0], &bit_string);
null_len = encode_application_bitstring(NULL, &bit_string);
zassert_equal(len, null_len, NULL);
/* decode */
len = decode_tag_number_and_value(&apdu[0], &tag_number, &len_value);
zassert_equal(tag_number, BACNET_APPLICATION_TAG_BIT_STRING, NULL);
@@ -618,6 +669,8 @@ static void testBACDCodeBitString(void)
zassert_false(bitstring_bit(&bit_string, bit), NULL);
/* encode */
len = encode_application_bitstring(&apdu[0], &bit_string);
null_len = encode_application_bitstring(NULL, &bit_string);
zassert_equal(len, null_len, NULL);
/* decode */
len = decode_tag_number_and_value(&apdu[0], &tag_number, &len_value);
zassert_equal(tag_number, BACNET_APPLICATION_TAG_BIT_STRING, NULL);
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
# Test and test library files
./src/main.c
@@ -46,6 +46,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
# Test and test library files
./src/main.c
@@ -44,6 +44,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/basic/sys/days.c
# Test and test library files
@@ -48,6 +48,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/timestamp.c
# Test and test library files
@@ -46,6 +46,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -49,6 +49,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -46,6 +46,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/memcopy.c
${SRC_DIR}/bacnet/wp.c
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -46,6 +46,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/memcopy.c
${SRC_DIR}/bacnet/wp.c
@@ -46,6 +46,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/memcopy.c
${SRC_DIR}/bacnet/wp.c
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -48,6 +48,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/timestamp.c
${SRC_DIR}/bacnet/wp.c
@@ -79,6 +79,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/dcc.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/memcopy.c
${SRC_DIR}/bacnet/npdu.c
@@ -47,6 +47,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
./stubs.c
@@ -47,6 +47,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -46,6 +46,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -46,6 +46,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/memcopy.c
${SRC_DIR}/bacnet/wp.c
@@ -47,6 +47,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/proplist.c
${SRC_DIR}/bacnet/wp.c
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
@@ -46,6 +46,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/wp.c
# Test and test library files
+1
View File
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/memcopy.c
# Test and test library files
+3
View File
@@ -38,8 +38,11 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/bacint.c
${SRC_DIR}/bacnet/bacreal.c
${SRC_DIR}/bacnet/bacstr.c
${SRC_DIR}/bacnet/bactext.c
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/indtext.c
# Test and test library files
./src/main.c
${ZTST_DIR}/ztest_mock.c
+6 -4
View File
@@ -819,12 +819,11 @@ static void test_BVLC_Address_Get_Set(void)
static void test_BVLC_BBMD_Address(void)
{
uint8_t apdu[480] = { 0 };
uint16_t apdu_len = 0;
int16_t test_apdu_len = 0;
uint16_t i = 0;
int apdu_len = 0;
int test_apdu_len = 0;
BACNET_IP_ADDRESS bbmd_address;
BACNET_IP_ADDRESS test_bbmd_address;
BACNET_ERROR_CODE error_code = 0;
BACNET_ERROR_CODE error_code = ERROR_CODE_SUCCESS;
bool status = false;
status = bvlc_address_port_from_ascii(
@@ -835,6 +834,9 @@ static void test_BVLC_BBMD_Address(void)
zassert_not_equal(apdu_len, 0, NULL);
test_apdu_len = bvlc_foreign_device_bbmd_host_address_decode(apdu,
apdu_len, &error_code, &test_bbmd_address);
if (test_apdu_len < 0) {
printf("BVLC: error-code=%s\n", bactext_error_code_name(error_code));
}
zassert_not_equal(test_apdu_len, 0, NULL);
zassert_not_equal(test_apdu_len, BACNET_STATUS_ERROR, NULL);
zassert_not_equal(test_apdu_len, BACNET_STATUS_ABORT, NULL);
+1
View File
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/timestamp.c
+1
View File
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/timestamp.c
+1
View File
@@ -46,6 +46,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/memcopy.c
# Test and test library files
+1
View File
@@ -46,6 +46,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
# Test and test library files
./src/main.c
+1
View File
@@ -47,6 +47,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/memcopy.c
# Test and test library files
+1
View File
@@ -47,6 +47,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/indtext.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
# Test and test library files
./src/main.c
+1
View File
@@ -45,6 +45,7 @@ add_executable(${PROJECT_NAME}
${SRC_DIR}/bacnet/basic/sys/bigend.c
${SRC_DIR}/bacnet/datetime.c
${SRC_DIR}/bacnet/basic/sys/days.c
${SRC_DIR}/bacnet/hostnport.c
${SRC_DIR}/bacnet/lighting.c
${SRC_DIR}/bacnet/indtext.c
# Test and test library files