Fixed test for PrivateTransfer service to be more accurate, and added Octet String to bacapp supplementary functions.
This commit is contained in:
@@ -1047,6 +1047,13 @@ bool bacapp_same_value(
|
|||||||
&test_value->type.Character_String);
|
&test_value->type.Character_String);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
#if defined (BACAPP_OCTET_STRING)
|
||||||
|
case BACNET_APPLICATION_TAG_OCTET_STRING:
|
||||||
|
status =
|
||||||
|
octetstring_value_same(&value->type.Octet_String,
|
||||||
|
&test_value->type.Octet_String);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
#if defined (BACAPP_BIT_STRING)
|
#if defined (BACAPP_BIT_STRING)
|
||||||
case BACNET_APPLICATION_TAG_BIT_STRING:
|
case BACNET_APPLICATION_TAG_BIT_STRING:
|
||||||
default:
|
default:
|
||||||
@@ -1412,6 +1419,12 @@ void testBACnetApplicationData(
|
|||||||
ct_test(pTest, status == true);
|
ct_test(pTest, status == true);
|
||||||
ct_test(pTest, testBACnetApplicationDataValue(&value));
|
ct_test(pTest, testBACnetApplicationDataValue(&value));
|
||||||
|
|
||||||
|
status =
|
||||||
|
bacapp_parse_application_data(BACNET_APPLICATION_TAG_OCTET_STRING,
|
||||||
|
"Steve + Patricia", &value);
|
||||||
|
ct_test(pTest, status == true);
|
||||||
|
ct_test(pTest, testBACnetApplicationDataValue(&value));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -305,6 +305,7 @@ int ptransfer_ack_encode_apdu(
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "ctest.h"
|
#include "ctest.h"
|
||||||
|
#include "bacapp.h"
|
||||||
|
|
||||||
int ptransfer_decode_apdu(
|
int ptransfer_decode_apdu(
|
||||||
uint8_t * apdu,
|
uint8_t * apdu,
|
||||||
@@ -400,15 +401,27 @@ void test_Private_Transfer_Ack(
|
|||||||
int apdu_len = 0;
|
int apdu_len = 0;
|
||||||
uint8_t invoke_id = 128;
|
uint8_t invoke_id = 128;
|
||||||
uint8_t test_invoke_id = 0;
|
uint8_t test_invoke_id = 0;
|
||||||
#define MAX_PD_CHUNK 32
|
|
||||||
uint8_t private_data_chunk[MAX_PD_CHUNK] = "I Love You, Patricia!";
|
|
||||||
BACNET_PRIVATE_TRANSFER_DATA private_data;
|
BACNET_PRIVATE_TRANSFER_DATA private_data;
|
||||||
BACNET_PRIVATE_TRANSFER_DATA test_data;
|
BACNET_PRIVATE_TRANSFER_DATA test_data;
|
||||||
|
uint8_t test_value[480] = { 0 };
|
||||||
|
int private_data_len = 0;
|
||||||
|
uint8_t private_data_chunk[32] = {"I Love You, Patricia!"};
|
||||||
|
BACNET_APPLICATION_DATA_VALUE data_value;
|
||||||
|
BACNET_APPLICATION_DATA_VALUE test_data_value;
|
||||||
|
|
||||||
private_data.vendorID = BACNET_VENDOR_ID;
|
private_data.vendorID = BACNET_VENDOR_ID;
|
||||||
private_data.serviceNumber = 1;
|
private_data.serviceNumber = 1;
|
||||||
private_data.serviceParameters = &private_data_chunk[0];
|
|
||||||
private_data.serviceParametersLen = MAX_PD_CHUNK;
|
bacapp_parse_application_data(
|
||||||
|
BACNET_APPLICATION_TAG_OCTET_STRING,
|
||||||
|
&private_data_chunk[0], &data_value);
|
||||||
|
private_data_len = bacapp_encode_application_data(
|
||||||
|
&test_value[0],
|
||||||
|
&data_value);
|
||||||
|
|
||||||
|
private_data.serviceParameters = &test_value[0];
|
||||||
|
private_data.serviceParametersLen = private_data_len;
|
||||||
|
|
||||||
|
|
||||||
len = ptransfer_ack_encode_apdu(&apdu[0], invoke_id, &private_data);
|
len = ptransfer_ack_encode_apdu(&apdu[0], invoke_id, &private_data);
|
||||||
ct_test(pTest, len != 0);
|
ct_test(pTest, len != 0);
|
||||||
@@ -423,11 +436,11 @@ void test_Private_Transfer_Ack(
|
|||||||
ct_test(pTest, test_data.serviceNumber == private_data.serviceNumber);
|
ct_test(pTest, test_data.serviceNumber == private_data.serviceNumber);
|
||||||
ct_test(pTest,
|
ct_test(pTest,
|
||||||
test_data.serviceParametersLen == private_data.serviceParametersLen);
|
test_data.serviceParametersLen == private_data.serviceParametersLen);
|
||||||
for (len = 0; len < MAX_PD_CHUNK; len++) {
|
len = bacapp_decode_application_data(
|
||||||
ct_test(pTest,
|
test_data.serviceParameters,
|
||||||
test_data.serviceParameters[len] ==
|
test_data.serviceParametersLen,
|
||||||
private_data.serviceParameters[len]);
|
&test_data_value);
|
||||||
}
|
ct_test(pTest, bacapp_same_value(&data_value, &test_data_value) == true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_Private_Transfer_Error(
|
void test_Private_Transfer_Error(
|
||||||
@@ -442,15 +455,25 @@ void test_Private_Transfer_Error(
|
|||||||
BACNET_ERROR_CODE error_code = ERROR_CODE_OPERATIONAL_PROBLEM;
|
BACNET_ERROR_CODE error_code = ERROR_CODE_OPERATIONAL_PROBLEM;
|
||||||
BACNET_ERROR_CLASS test_error_class = 0;
|
BACNET_ERROR_CLASS test_error_class = 0;
|
||||||
BACNET_ERROR_CODE test_error_code = 0;
|
BACNET_ERROR_CODE test_error_code = 0;
|
||||||
#define MAX_PD_CHUNK 32
|
|
||||||
uint8_t private_data_chunk[MAX_PD_CHUNK] = "I Love You, Patricia!";
|
|
||||||
BACNET_PRIVATE_TRANSFER_DATA private_data;
|
BACNET_PRIVATE_TRANSFER_DATA private_data;
|
||||||
BACNET_PRIVATE_TRANSFER_DATA test_data;
|
BACNET_PRIVATE_TRANSFER_DATA test_data;
|
||||||
|
uint8_t test_value[480] = { 0 };
|
||||||
|
int private_data_len = 0;
|
||||||
|
uint8_t private_data_chunk[32] = {"I Love You, Patricia!"};
|
||||||
|
BACNET_APPLICATION_DATA_VALUE data_value;
|
||||||
|
BACNET_APPLICATION_DATA_VALUE test_data_value;
|
||||||
|
|
||||||
private_data.vendorID = BACNET_VENDOR_ID;
|
private_data.vendorID = BACNET_VENDOR_ID;
|
||||||
private_data.serviceNumber = 1;
|
private_data.serviceNumber = 1;
|
||||||
private_data.serviceParameters = &private_data_chunk[0];
|
|
||||||
private_data.serviceParametersLen = MAX_PD_CHUNK;
|
bacapp_parse_application_data(
|
||||||
|
BACNET_APPLICATION_TAG_OCTET_STRING,
|
||||||
|
&private_data_chunk[0], &data_value);
|
||||||
|
private_data_len = bacapp_encode_application_data(
|
||||||
|
&test_value[0],
|
||||||
|
&data_value);
|
||||||
|
private_data.serviceParameters = &test_value[0];
|
||||||
|
private_data.serviceParametersLen = private_data_len;
|
||||||
|
|
||||||
len = ptransfer_error_encode_apdu(&apdu[0], invoke_id,
|
len = ptransfer_error_encode_apdu(&apdu[0], invoke_id,
|
||||||
error_class, error_code, &private_data);
|
error_class, error_code, &private_data);
|
||||||
@@ -470,30 +493,41 @@ void test_Private_Transfer_Error(
|
|||||||
ct_test(pTest, test_error_code == error_code);
|
ct_test(pTest, test_error_code == error_code);
|
||||||
ct_test(pTest,
|
ct_test(pTest,
|
||||||
test_data.serviceParametersLen == private_data.serviceParametersLen);
|
test_data.serviceParametersLen == private_data.serviceParametersLen);
|
||||||
for (len = 0; len < MAX_PD_CHUNK; len++) {
|
len = bacapp_decode_application_data(
|
||||||
ct_test(pTest,
|
test_data.serviceParameters,
|
||||||
test_data.serviceParameters[len] ==
|
test_data.serviceParametersLen,
|
||||||
private_data.serviceParameters[len]);
|
&test_data_value);
|
||||||
}
|
ct_test(pTest, bacapp_same_value(&data_value, &test_data_value) == true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_Private_Transfer_Request(
|
void test_Private_Transfer_Request(
|
||||||
Test * pTest)
|
Test * pTest)
|
||||||
{
|
{
|
||||||
uint8_t apdu[480] = { 0 };
|
uint8_t apdu[480] = { 0 };
|
||||||
|
uint8_t test_value[480] = { 0 };
|
||||||
int len = 0;
|
int len = 0;
|
||||||
int apdu_len = 0;
|
int apdu_len = 0;
|
||||||
uint8_t invoke_id = 128;
|
uint8_t invoke_id = 128;
|
||||||
uint8_t test_invoke_id = 0;
|
uint8_t test_invoke_id = 0;
|
||||||
#define MAX_PD_CHUNK 32
|
int private_data_len = 0;
|
||||||
uint8_t private_data_chunk[MAX_PD_CHUNK] = "I Love You, Patricia!";
|
uint8_t private_data_chunk[32] = {"I Love You, Patricia!"};
|
||||||
|
BACNET_APPLICATION_DATA_VALUE data_value;
|
||||||
|
BACNET_APPLICATION_DATA_VALUE test_data_value;
|
||||||
BACNET_PRIVATE_TRANSFER_DATA private_data;
|
BACNET_PRIVATE_TRANSFER_DATA private_data;
|
||||||
BACNET_PRIVATE_TRANSFER_DATA test_data;
|
BACNET_PRIVATE_TRANSFER_DATA test_data;
|
||||||
|
|
||||||
private_data.vendorID = BACNET_VENDOR_ID;
|
private_data.vendorID = BACNET_VENDOR_ID;
|
||||||
private_data.serviceNumber = 1;
|
private_data.serviceNumber = 1;
|
||||||
private_data.serviceParameters = &private_data_chunk[0];
|
|
||||||
private_data.serviceParametersLen = MAX_PD_CHUNK;
|
bacapp_parse_application_data(
|
||||||
|
BACNET_APPLICATION_TAG_OCTET_STRING,
|
||||||
|
&private_data_chunk[0], &data_value);
|
||||||
|
private_data_len = bacapp_encode_application_data(
|
||||||
|
&test_value[0],
|
||||||
|
&data_value);
|
||||||
|
private_data.serviceParameters = &test_value[0];
|
||||||
|
private_data.serviceParametersLen = private_data_len;
|
||||||
|
|
||||||
len = ptransfer_encode_apdu(&apdu[0], invoke_id, &private_data);
|
len = ptransfer_encode_apdu(&apdu[0], invoke_id, &private_data);
|
||||||
ct_test(pTest, len != 0);
|
ct_test(pTest, len != 0);
|
||||||
apdu_len = len;
|
apdu_len = len;
|
||||||
@@ -503,11 +537,11 @@ void test_Private_Transfer_Request(
|
|||||||
ct_test(pTest, test_data.serviceNumber == private_data.serviceNumber);
|
ct_test(pTest, test_data.serviceNumber == private_data.serviceNumber);
|
||||||
ct_test(pTest,
|
ct_test(pTest,
|
||||||
test_data.serviceParametersLen == private_data.serviceParametersLen);
|
test_data.serviceParametersLen == private_data.serviceParametersLen);
|
||||||
for (len = 0; len < MAX_PD_CHUNK; len++) {
|
len = bacapp_decode_application_data(
|
||||||
ct_test(pTest,
|
test_data.serviceParameters,
|
||||||
test_data.serviceParameters[len] ==
|
test_data.serviceParametersLen,
|
||||||
private_data.serviceParameters[len]);
|
&test_data_value);
|
||||||
}
|
ct_test(pTest, bacapp_same_value(&data_value, &test_data_value) == true);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -537,5 +571,3 @@ int main(
|
|||||||
}
|
}
|
||||||
#endif /* TEST_READ_PROPERTY */
|
#endif /* TEST_READ_PROPERTY */
|
||||||
#endif /* TEST */
|
#endif /* TEST */
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,13 @@ DEFINES = -DBIG_ENDIAN=0 -DTEST -DTEST_PRIVATE_TRANSFER
|
|||||||
CFLAGS = -Wall $(INCLUDES) $(DEFINES) -g
|
CFLAGS = -Wall $(INCLUDES) $(DEFINES) -g
|
||||||
|
|
||||||
SRCS = $(SRC_DIR)/bacdcode.c \
|
SRCS = $(SRC_DIR)/bacdcode.c \
|
||||||
|
$(SRC_DIR)/bacapp.c \
|
||||||
|
$(SRC_DIR)/bactext.c \
|
||||||
|
$(SRC_DIR)/indtext.c \
|
||||||
$(SRC_DIR)/bacint.c \
|
$(SRC_DIR)/bacint.c \
|
||||||
$(SRC_DIR)/bacstr.c \
|
$(SRC_DIR)/bacstr.c \
|
||||||
$(SRC_DIR)/bacreal.c \
|
$(SRC_DIR)/bacreal.c \
|
||||||
|
$(SRC_DIR)/datetime.c \
|
||||||
$(SRC_DIR)/ptransfer.c \
|
$(SRC_DIR)/ptransfer.c \
|
||||||
ctest.c
|
ctest.c
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user